コード例 #1
0
        public static void DoSync()
        {
            lock (Server.ClientsLock) {
                for (int i = 0; i < Server.ClientControllers.Count; i++)
                {
                    if (Server.ClientControllers[i].MissionController == null)
                    {
                        continue;
                    }

                    BaseMission mission = Server.ClientControllers[i].MissionController.Mission;

                    if (Server.ClientControllers[i] != null && Server.ClientControllers[i].Actualy)
                    {
                        NetDataEvent allResponse = new NetDataEvent(EventTypes.SyncMission, new Dictionary <string, ObjectWrapper>()
                        {
                            { "mission", new ObjectWrapper <BaseMission>(mission) }
                        });

                        lock (Server.ClientControllers[i].MissionController.Locker) {
                            Server.SendEvent(Server.ClientControllers[i], Utils.ToBytesJSON(allResponse), "EventGameManagerHandleSyncMission");
                        }

                        Server.ClientControllers[i].MissionFirstInited = true;
                    }
                }
            }
        }
コード例 #2
0
ファイル: MapManager.cs プロジェクト: Car3man/ProjectKillers
    //начали миссию
    private void OnStartedMission(byte[] data)
    {
        NetDataEvent netData = Utils.FromBytesJSON <NetDataEvent>(data);

        TransitionManager.I.LoadGame();

        NetManager.I.Client.UnityEventReceiver.RemoveEventObserver(startMissionID);
    }
コード例 #3
0
        public static void DoHandle()
        {
            NetDataEvent allResponse = new NetDataEvent(EventTypes.SendRooms, new Dictionary <string, ObjectWrapper>()
            {
                { "rooms", new ObjectWrapper <List <Room> >(Server.GetRooms()) }
            });

            Server.SendEvent(Server.ClientControllers, Utils.ToBytesJSON(allResponse), "EventLobbyHolderOnGetRooms");
        }
コード例 #4
0
    private void HandleLeaveMission(byte[] data)
    {
        NetDataEvent ndata = Utils.FromBytesJSON <NetDataEvent>(data);

        Player pl = players.First(x => x.ID.Equals((string)ndata.Values["id"].ObjectValue));

        players.Remove(pl);
        Destroy(pl.gameObject);
    }
コード例 #5
0
    private void HandleNewWawe(byte[] data)
    {
        NetDataEvent netData = Utils.FromBytesJSON <NetDataEvent>(data);

        int waveNumber = (int)netData.Values["wave_number"].ObjectValue;

        waveNumberText.text = string.Format("Wave {0}", waveNumber);

        waveNumberText.GetComponent <TweenScale>().ResetToBeginning();
        waveNumberText.GetComponent <TweenScale>().PlayForward();
    }
コード例 #6
0
        public static void DoHandle(string roomID)
        {
            RoomController room = Server.RoomControllers.Find(x => x.Room.ID.Equals(roomID));

            NetDataEvent allResponse = new NetDataEvent(EventTypes.SyncRoom, new Dictionary <string, ObjectWrapper>()
            {
                { "room", new ObjectWrapper <Room>(room.Room) }
            });

            Server.SendEvent(room.Clients, Utils.ToBytesJSON(allResponse), "EventRoomHolderOnSyncRoom");
        }
コード例 #7
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);
        }
コード例 #8
0
        public static void DoHandle(ClientController client)
        {
            List <ClientController> clients = new List <ClientController>(Server.ClientControllers);

            clients.RemoveAll(x => x.Client == client.Client);
            clients.RemoveAll(x => !x.Actualy);

            NetDataEvent allResponse = new NetDataEvent(EventTypes.LeaveMission, new Dictionary <string, ObjectWrapper>()
            {
                { "id", new ObjectWrapper <string>(client.Client.ID) }
            });

            Server.SendEvent(clients, Utils.ToBytesJSON(allResponse), "EventGameManagerHandleLeaveMission");
        }
コード例 #9
0
    private void HandleSyncMission(byte[] data)
    {
        NetDataEvent ndata = Utils.FromBytesJSON <NetDataEvent>(data);

        BaseMission mission = (BaseMission)ndata.Values["mission"].ObjectValue;

        if (mission.Objects == null)
        {
            mission.Objects = new Dictionary <string, BaseMissionObject>();
        }
        if (mission.DynamicObjects == null)
        {
            mission.DynamicObjects = new Dictionary <string, BaseMissionObject>();
        }

        Dictionary <string, BaseMissionObject> objects = mission.Objects;

        MergeDictionary(objects, mission.DynamicObjects);

        //instantiate objects on client created on server
        foreach (var o in objects.ToList())
        {
            if (o.Value.Destroyed)
            {
                continue;
            }

            bool isOwn = o.Value.OwnerID.Equals(NetManager.I.ID);

            if (!NetworkObjectDispenser.I.Objects.ContainsKey(o.Value.ID))
            {
                GameObject go = SpawnObject(o.Value.ID, o.Value.NameID, o.Value.Position.FromServerVector3(), o.Value.Center.FromServerVector3(), o.Value.Size.FromServerVector3(), o.Value.EulerAngles.FromServerVector3(), isOwn);

                if (o.Value is PlayerObject)
                {
                    players.Add(go.GetComponent <Player>());

                    if (isOwn)
                    {
                        CameraController.I.Target = go;
                    }
                }
            }
        }

        //sync exist objects
        foreach (var o in objects.ToList())
        {
            if (NetworkObjectDispenser.I.Objects.ContainsKey(o.Value.ID))
            {
                NetworkMissionObject obj = NetworkObjectDispenser.I.Objects[o.Value.ID];
                obj.SyncTransform(o.Value.Position.FromServerVector3(), o.Value.EulerAngles.FromServerVector3());

                if (o.Value is IHuman)
                {
                    (obj as IHumanObject).SyncHealth((o.Value as IHuman).Health, (o.Value as IHuman).MaxHealth);

                    if (o.Value is PlayerObject && o.Value.OwnerID.Equals(NetManager.I.ID))
                    {
                        GameGUIManager.I.UpdateHealthBar((o.Value as IHuman).Health, (o.Value as IHuman).MaxHealth);
                    }
                }

                if (o.Value.Destroyed)
                {
                    NetworkObjectDispenser.I.DestroyObject(o.Value.ID);
                }
            }
        }
    }