public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { List <ClientController> clients = new List <ClientController>(Server.ClientControllers); clients.RemoveAll(x => !x.Actualy); string id = (string)data.Values["id"].ObjectValue; Vector3K playerPos = client.CurrentPlayer.Object.Position; Vector3K playerRot = client.CurrentPlayer.Object.EulerAngles; Vector3K pos = new Vector3K(1.3F, -0.55F, 0).RotateVector2(playerRot.z); Vector3K rot = new Vector3K(0f, 0f, playerRot.z - 0.067F); pos.x += playerPos.x; pos.y += playerPos.y; BulletObject bullet = new BulletObject(pos, new Vector3K(0f, 0f, 0f), new Vector3K(0.28f, 0.09f, 0f), rot); client.MissionController.AddDynamicObject(ObjectFactory.GetObject(bullet)); NetDataRequest allResponse = new NetDataRequest(RequestTypes.Shoot, new Dictionary <string, ObjectWrapper>() { { "id", new ObjectWrapper <string>(id) } }); Server.SendResponse(clients, Utils.ToBytesJSON(allResponse), networkID); }
private void RequestShoot() { NetDataRequest data = new NetDataRequest(RequestTypes.Shoot, new System.Collections.Generic.Dictionary <string, ObjectWrapper>()); data.Values["id"] = new ObjectWrapper <string>(ID); NetManager.I.Client.SendRequest(Utils.ToBytesJSON(data), GameManager.I.ShootPlayerNetworkID); }
private void OnEnterMission(byte[] data) { NetDataRequest ndata = Utils.FromBytesJSON <NetDataRequest>(data); syncMissionNetworkID = NetManager.I.Client.UnityEventReceiver.AddEventObserver(HandleSyncMission, false); shootPlayerNetworkID = NetManager.I.Client.UnityEventReceiver.AddResponseObserver(HandleShootPlayer, false); leaveMissionNetworkID = NetManager.I.Client.UnityEventReceiver.AddEventObserver(HandleLeaveMission, false); }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { Room room = data.Values["room"].ObjectValue as Room; Server.RoomControllers.Add(new RoomController(new Room(room.Name, client.Client.ID))); SendRoomsHandler.DoHandle(); }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { RoomController room = Server.RoomControllers.Find(x => x.Room.ID.Equals(data.Values["id"].ObjectValue as string)); room.MissionStarted = true; Server.SendEvent(room.Clients, Utils.ToBytesJSON(new NetDataEvent(EventTypes.StartMission, new Dictionary <string, ObjectWrapper>())), "EventMapManagerOnStartedMission"); }
//покинули комнату private void OnLeavedRoom(byte[] data) { NetDataRequest netData = Utils.FromBytesJSON <NetDataRequest>(data); lobbyHolder.gameObject.SetActive(true); roomHolder.gameObject.SetActive(false); NetManager.I.Client.UnityEventReceiver.RemoveEventObserver(startMissionID); }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { RoomController room = Server.RoomControllers.Find(x => x.Room.ID.Equals(data.Values["id"].ObjectValue as string)); room.AddClient(client); Server.SendResponse(client, Utils.ToBytesJSON(new NetDataRequest(RequestTypes.EnterInRoom, data.Values)), networkID); Events.SyncRoomHandler.DoHandle(room.Room.ID); }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { NetDataRequest response = new NetDataRequest(RequestTypes.EnterInMission, new Dictionary <string, ObjectWrapper>() { { "rooms", new ObjectWrapper <List <Room> >(Server.GetRooms()) } }); Server.SendResponse(client, Utils.ToBytesJSON(response), networkID); }
//вошли в комнату private void OnEnteredInRoom(byte[] data) { NetDataRequest netData = Utils.FromBytesJSON <NetDataRequest>(data); lobbyHolder.gameObject.SetActive(false); roomHolder.GetComponent <RoomHolder>().RoomID = netData.Values["id"].ObjectValue as string; roomHolder.gameObject.SetActive(true); startMissionID = NetManager.I.Client.UnityEventReceiver.AddEventObserver(OnStartedMission, true); }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { Room room = Server.GetRooms().Find(x => x.ID.Equals(data.Values["id"].ObjectValue as string)); NetDataEvent allResponse = new NetDataEvent(EventTypes.SyncRoom, new Dictionary <string, ObjectWrapper>() { { "room", new ObjectWrapper <Room>(room) } }); Server.SendResponse(client, Utils.ToBytesJSON(allResponse), networkID); }
private void HandleShootPlayer(byte[] data) { NetDataRequest ndata = Utils.FromBytesJSON <NetDataRequest>(data); Player pl = players.Find(x => x.ID.Equals((string)ndata.Values["id"].ObjectValue)); if (pl != null) { pl.DoShoot((string)ndata.Values["id"].ObjectValue); } }
public void OnButtonEnterClick() { if (string.IsNullOrEmpty(nicknameInput.text)) { return; } NetDataRequest loginData = new NetDataRequest(RequestTypes.Login, new Dictionary <string, ObjectWrapper>() { { "nickname", new ObjectWrapper <string>(nicknameInput.text) } }); string loginID = NetManager.I.Client.UnityEventReceiver.AddResponseObserver(OnLoginResponse, true); NetManager.I.Client.SendRequest(Utils.ToBytesJSON(loginData), loginID); }
private static void Server_OnRequestReceived(NetPeer peer, byte[] data, string networkID) { ClientController client = null; lock (ClientsLock) { client = ClientControllers.Find(x => x.Peer == peer); } if (client == null) { return; } NetDataRequest ndata = Utils.FromBytesJSON <NetDataRequest>(data); if (string.IsNullOrEmpty(client.Client.Nickname)) { switch (ndata.Type) { case RequestTypes.Login: LoginHandler.DoHandle(ndata, client, networkID); break; } } else { switch (ndata.Type) { case RequestTypes.EnterInMission: EnterInMissionHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.SyncPlayer: SyncPlayerHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.Shoot: ShootHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.GetRooms: GetRoomsHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.CreateRoom: CreateRoomHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.EnterInRoom: EnterInRoomHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.StartMission: StartMissionHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.LeaveRoom: LeaveRoomHandler.DoHandle(ndata, client, networkID); break; case RequestTypes.SyncRoom: ProjectKillersServer.RequestHandlers.SyncRoomHandler.DoHandle(ndata, client, networkID); break; } } }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { string nickname = (string)data.Values["nickname"].ObjectValue; NetDataRequest response = null; if (Server.ClientControllers.Exists(x => x.Client.Nickname.Equals(nickname))) { response = new NetDataRequest(RequestTypes.Login, RequestResult.NicknameOccupied, new Dictionary <string, ObjectWrapper>()); } else { client.Client.Nickname = nickname; response = new NetDataRequest(RequestTypes.Login, new Dictionary <string, ObjectWrapper>()); } Server.SendResponse(client, Utils.ToBytesJSON(response), networkID); }
private void OnLoginResponse(byte[] data) { NetDataRequest response = Utils.FromBytesJSON <NetDataRequest>(data); switch (response.Result) { case RequestResult.Ok: TransitionManager.I.LoadLobby(); break; case RequestResult.NicknameOccupied: connectText.text = "Nickname occupied"; break; default: connectText.text = "Unknow login error"; break; } }
private void HandleInput() { if (!IsOwn) { return; } if (Input.GetMouseButtonDown(0)) { RequestShoot(); } NetDataRequest data = new NetDataRequest(RequestTypes.SyncPlayer, new System.Collections.Generic.Dictionary <string, ObjectWrapper>()); Vector3 mousePosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z - Camera.main.transform.position.z)); data.Values["id"] = new ObjectWrapper <string>(ID); data.Values["position"] = new ObjectWrapper <Vector3K>((transform.position + ((Vector3.up * Input.GetAxis("Vertical")) + (Vector3.right * Input.GetAxis("Horizontal"))) * moveSpeed * Time.deltaTime).ToServerVector3()); data.Values["eulerAngles"] = new ObjectWrapper <Vector3K>((new Vector3(0, 0, Mathf.Atan2((mousePosition.y - transform.position.y), (mousePosition.x - transform.position.x)) * Mathf.Rad2Deg)).ToServerVector3()); NetManager.I.Client.SendRequest(Utils.ToBytesJSON(data)); }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { List <ClientController> clients = new List <ClientController>(Server.ClientControllers); clients.RemoveAll(x => !x.Actualy); string id = (string)data.Values["id"].ObjectValue; if (!client.MissionController.DynamicObjects.ContainsKey(id)) { return; } if (client.CurrentPlayer == null) { return; } Vector3K position = (Vector3K)data.Values["position"].ObjectValue; Vector3K eulerAngles = (Vector3K)data.Values["eulerAngles"].ObjectValue; client.CurrentPlayer.SetTransform(position, eulerAngles); }
public static void DoHandle(NetDataRequest data, ClientController client, string networkID) { client.Actualy = true; List <ClientController> clients = new List <ClientController>(Server.ClientControllers); clients.Remove(client); clients.RemoveAll(x => !x.Actualy); List <ClientController> actualyClients = new List <ClientController>(Server.ClientControllers); actualyClients.RemoveAll(x => !x.Actualy); string id = (string)data.Values["id"].ObjectValue; RoomController clientRoom = Server.GetClientRoom(client); client.Client.ID = id; client.SetMissionController(MissionDispenser.GetMission(clientRoom.Room.ID, clientRoom.Room.MissionName)); PlayerObject player = new PlayerObject(new Vector3K(0f, 0f, 0f), new Vector3K(0f, 0f, 0f), new Vector3K(2f, 2f, 2f), new Vector3K(0f, 0f, 0f)); player.OwnerID = client.Client.ID; PlayerObjectController playerController = ObjectFactory.GetObject(player) as PlayerObjectController; client.MissionController.AddDynamicObject(playerController); client.ControlledObjects.Add(player.ID, playerController); NetDataRequest response = new NetDataRequest(RequestTypes.EnterInMission, new Dictionary <string, ObjectWrapper>() { { "id", new ObjectWrapper <string>(id) } }); Server.SendResponse(client, Utils.ToBytesJSON(response), networkID); }