예제 #1
0
        protected virtual void OnGameServerFinalized()
        {
            if (GameSpawnTask.FinalizationPacket == null)
            {
                return;
            }

            var data = GameSpawnTask.FinalizationPacket.FinalizationData;

            if (!data.ContainsKey(OptionKeys.RoomId))
            {
                BroadcastChatMessage("Game server finalized, but room ID cannot be found", true);
                return;
            }

            // Get room id from finalization data
            var roomId = int.Parse(data[OptionKeys.RoomId]);
            var room   = Plugin.RoomsPlugin.GetRoom(roomId);

            if (room == null)
            {
                return;
            }

            Room = room;

            GameIp   = room.Options.RoomIp;
            GamePort = room.Options.RoomPort;

            room.Destroyed += OnRoomDestroyed;
        }
예제 #2
0
        public void OnRoomDestroyed(RegisteredRoom room)
        {
            room.Destroyed -= OnRoomDestroyed;

            GameIp   = "";
            GamePort = -1;
            Room     = null;

            GameSpawnTask = null;

            State = Config.PlayAgainEnabled ? Packets.Lobbies.LobbyState.Preparations : Packets.Lobbies.LobbyState.GameOver;
        }