Пример #1
0
        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);
        }
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }
Пример #4
0
        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();
        }
Пример #5
0
        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");
        }
Пример #6
0
    //покинули комнату
    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);
    }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
    //вошли в комнату
    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);
    }
Пример #10
0
        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);
        }
Пример #11
0
    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);
        }
    }
Пример #12
0
    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);
    }
Пример #13
0
        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;
                }
            }
        }
Пример #14
0
        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);
        }
Пример #15
0
    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;
        }
    }
Пример #16
0
    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));
    }
Пример #17
0
        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);
        }