Exemplo n.º 1
0
        private void ProcessWelcomeReceivedPacket(int playerId, Packet packet)
        {
            int    packetPlayerId = packet.ReadInt();
            string userName       = packet.ReadString();
            string userApiVersion = packet.ReadString();

            if (userApiVersion != GameConfiguration.ApiVersion)
            {
                playersManager.clients.Remove(playerId);
                Logger.LogError(LoggerSection.Connection, $"Unable to add a client with old version ({userApiVersion}) to the game");
                return;
            }

            if (playerId != packetPlayerId)
            {
                throw new Exception($"Bad playerId {playerId} received");
            }

            if (userName.Equals(""))
            {
                Logger.LogError(LoggerSection.Connection, $"Bad user name passed from player {playerId}");
                return;
            }

            Logger.LogEvent(LoggerSection.Connection, $"{playersManager.clients[playerId].GetTcpEndPoint()} connected successfully and is now a player {playerId}");

            lobbyGamePhase.ConnectPlayer(playerId, userName);
        }
Exemplo n.º 2
0
        public override void Interact()
        {
            if (playGamePhase.clientSkeld.playGamePhaseUserInterface.minimapButton.IsMinimapShown)
            {
                return;
            }

            if (isTransitionGoing)
            {
                Logger.LogNotice(SharedLoggerSection.Interactions, "Unable to interact with security panel, because fade animation is still going");
                return;
            }

            isControlledPlayerViewing = !isControlledPlayerViewing;

            if (isControlledPlayerViewing)
            {
                playersLockable.Add(playersManager.controlledClientPlayer.basePlayer.information.id);
                Logger.LogEvent(SharedLoggerSection.Interactions, "Has started viewing security panel");
            }
            else
            {
                playersLockable.Remove(playersManager.controlledClientPlayer.basePlayer.information.id);
                Logger.LogEvent(SharedLoggerSection.Interactions, "Has stopped viewing security panel");
            }

            isTransitionGoing = true;
            isFirstTransition = true;
            StartCoroutine(BlinkFade());
        }
Exemplo n.º 3
0
        public void TryToScheduleGameStart(int calledPlayerId)
        {
            if (!PlayersManager.IsLobbyHost(calledPlayerId))
            {
                Logger.LogNotice(SharedLoggerSection.GameStart, $"Player {calledPlayerId} tries to schedule game start, but he's not the host");
                return;
            }

            if (playersManager.clients.Count < GameConfiguration.MinRequiredPlayersAmountForGame)
            {
                Logger.LogError(SharedLoggerSection.GameStart, "Attempt to start a game with too few players in it");
                return;
            }

            if (GameStarts)
            {
                Logger.LogError(SharedLoggerSection.GameStart, "Attempt to start a game which is already starting");
                return;
            }

            GameStarts = true;
            metaMonoBehaviours.coroutines.StartCoroutine(StartGame());

            Logger.LogEvent(SharedLoggerSection.GameStart, "Game starts");
        }
Exemplo n.º 4
0
        private void InitializeScene(UnityEngine.SceneManagement.Scene scene, LoadSceneMode loadSceneMode)
        {
            switch (scene.name)
            {
            case Scene.MainMenu:
                mainMenuGamePhase.Initialize();
                break;

            case Scene.Lobby:
                lobbyGamePhase.Initialize();
                break;

            case Scene.RoleReveal:
                roleRevealGamePhase.Initialize();
                break;

            case Scene.Skeld:
                playGamePhase.Initialize();
                break;

            default:
                Logger.LogError(SharedLoggerSection.ScenesManager, $"No game phase initializer found for the scene {scene.name}");
                break;
            }
        }
Exemplo n.º 5
0
        /**
         * Callback that is getting called when player presses interaction key near interactable
         */
        public override void Interact(int playerId)
        {
            PlayerColor newPlayerColor = PlayerColors.SwitchToRandomColor(playerId);

            playersManager.clients[playerId].basePlayer.colorable.ChangeColor(newPlayerColor);

            Logger.LogEvent(SharedLoggerSection.PlayerColors, $"Changed player {playerId} color to {Helpers.GetEnumName(newPlayerColor)}");
        }
Exemplo n.º 6
0
        public void ProcessPacket(int playerId, int packetTypeId, Packet packet, bool isTcp)
        {
            string packetTypeName = Helpers.GetEnumName((ClientPacketType)packetTypeId);
            string protocolName   = isTcp ? "TCP" : "UDP";

            Logger.LogEvent(LoggerSection.Network, $"Received «{packetTypeName}» {protocolName} packet from the client {playerId}");

            packetHandlers[packetTypeId](playerId, packet);
        }
Exemplo n.º 7
0
        public void RequestGameStart()
        {
            if (!HasEnoughPlayersForGame())
            {
                return;
            }

            playersManager.controlledClientPlayer.clientControllable.OnStartGame();
            Logger.LogEvent(SharedLoggerSection.GameStart, "Requested game start");
        }
Exemplo n.º 8
0
        public void InitiateGameStart()
        {
            gameStarts = true;

            secondsBeforeGameStartsLeft = LobbyGamePhase.SecondsForGameLaunch;
            gameStartsInLabel.text      = GetGameStartsInLabelText();
            gameStartsInLabel.gameObject.SetActive(true);
            StartCoroutine(ProcessGameStartTick());

            Logger.LogEvent(SharedLoggerSection.GameStart, "Starting the game");
        }
Exemplo n.º 9
0
        public void Start()
        {
            Logger.Initialize(new[] { LoggerSection.Network, LoggerSection.GameSnapshots }, true);
            Logger.LogEvent(LoggerSection.Initialization, "Started client initialization");

            metaMonoBehaviours.Initialize();
            scenesManager.Initialize(InitializeScene);
            Logger.LogEvent(LoggerSection.Initialization, "Initialized global environment");

            scenesManager.LoadScene(Scene.MainMenu);
        }
Exemplo n.º 10
0
        public void DisableSecurityCameras()
        {
            foreach (SecurityCamera camera in cameras)
            {
                camera.Disable();
            }

            CamerasEnabled = false;

            Logger.LogEvent(SharedLoggerSection.Interactions, "Enabled security cameras");
        }
Exemplo n.º 11
0
        private void ProcessPlayerInputPacket(int playerId, Packet packet)
        {
            // Because of multi threading we might not have this client yet
            if (!playersManager.clients.ContainsKey(playerId))
            {
                Logger.LogNotice(LoggerSection.GameSnapshots, $"Unable to process not yet initialized player {playerId} input");
                return;
            }

            PlayerInput playerInput = packet.ReadPlayerInput();

            playersManager.clients[playerId].serverPlayer.remoteControllable.EnqueueInput(playerInput);
        }
Exemplo n.º 12
0
        public void Add(int playerId)
        {
            lockedPlayerIds.Add(playerId);

            BasePlayer basePlayer = basePlayersManager.players[playerId];

            if (basePlayer.movable.isDisabled)
            {
                Logger.LogError(SharedLoggerSection.Interactions, $"Unable to lock the disabled player {playerId}");
                return;
            }

            basePlayer.movable.isDisabled = true;
        }
Exemplo n.º 13
0
        public void Remove(int playerId)
        {
            lockedPlayerIds.Remove(playerId);

            BasePlayer basePlayer = basePlayersManager.players[playerId];

            if (!basePlayer.movable.isDisabled)
            {
                Logger.LogError(SharedLoggerSection.Interactions, $"Unable to unlock the not disabled player {playerId}");
                return;
            }

            basePlayer.movable.isDisabled = false;
        }
Exemplo n.º 14
0
        private IEnumerator StartGame()
        {
            yield return(new WaitForSeconds(SecondsForGameLaunch));

            int[] impostorPlayerIds = GetImpostorPlayerIds();
            foreach (int impostorPlayerId in impostorPlayerIds)
            {
                playersManager.clients[impostorPlayerId].basePlayer.impostorable.isImpostor = true;
            }

            scenesManager.LoadScene(Scene.Skeld);

            Logger.LogEvent(SharedLoggerSection.GameStart, $"Game has started. Impostors: {string.Join(", ", impostorPlayerIds)}");
        }
Exemplo n.º 15
0
        private Sprite GetSprite(PlayerColor playerColor)
        {
            switch (playerColor)
            {
            case PlayerColor.Red:
                return(minimapIconSprites.redSprite);

            case PlayerColor.Blue:
                return(minimapIconSprites.blueSprite);

            case PlayerColor.Green:
                return(minimapIconSprites.greenSprite);

            case PlayerColor.Yellow:
                return(minimapIconSprites.yellowSprite);

            case PlayerColor.Pink:
                return(minimapIconSprites.pinkSprite);

            case PlayerColor.Orange:
                return(minimapIconSprites.orangeSprite);

            case PlayerColor.Purple:
                return(minimapIconSprites.purpleSprite);

            case PlayerColor.Black:
                return(minimapIconSprites.blackSprite);

            case PlayerColor.Brown:
                return(minimapIconSprites.brownSprite);

            case PlayerColor.Cyan:
                return(minimapIconSprites.cyanSprite);

            case PlayerColor.Lime:
                return(minimapIconSprites.limeSprite);

            case PlayerColor.White:
                return(minimapIconSprites.whiteSprite);

            default:
                Logger.LogError(SharedLoggerSection.PlayerColors, $"Undefined sprite for color {Shared.Helpers.GetEnumName(playerColor)}");
                return(minimapIconSprites.redSprite);
            }
        }
Exemplo n.º 16
0
        public override void Interact()
        {
            if (playGamePhase.clientSkeld.playGamePhaseUserInterface.minimapButton.IsMinimapShown)
            {
                return;
            }

            isControlledPlayerViewing = !isControlledPlayerViewing;

            if (isControlledPlayerViewing)
            {
                adminPanelMinimap.SetActive(true);
                playersLockable.Add(playersManager.controlledClientPlayer.basePlayer.information.id);
                Logger.LogEvent(SharedLoggerSection.Interactions, "Started viewing admin panel");
            }
            else
            {
                adminPanelMinimap.SetActive(false);
                playersLockable.Remove(playersManager.controlledClientPlayer.basePlayer.information.id);
                Logger.LogEvent(SharedLoggerSection.Interactions, "Stopped viewing admin panel");
            }

            onInteraction?.Invoke();
        }
Exemplo n.º 17
0
 public override void Interact()
 {
     Logger.LogEvent(SharedLoggerSection.PlayerColors, "Interacted with lobby computer");
 }
Exemplo n.º 18
0
        private void UpdateAnimatorController()
        {
            RuntimeAnimatorController animatorController;

            switch (clientPlayer.basePlayer.colorable.color)
            {
            case PlayerColor.Red:
                animatorController = astronautAnimatorControllersRepository.redAnimatorController;
                break;

            case PlayerColor.Blue:
                animatorController = astronautAnimatorControllersRepository.blueAnimatorController;
                break;

            case PlayerColor.Green:
                animatorController = astronautAnimatorControllersRepository.greenAnimatorController;
                break;

            case PlayerColor.Yellow:
                animatorController = astronautAnimatorControllersRepository.yellowAnimatorController;
                break;

            case PlayerColor.Pink:
                animatorController = astronautAnimatorControllersRepository.pinkAnimatorController;
                break;

            case PlayerColor.Orange:
                animatorController = astronautAnimatorControllersRepository.orangeAnimatorController;
                break;

            case PlayerColor.Purple:
                animatorController = astronautAnimatorControllersRepository.purpleAnimatorController;
                break;

            case PlayerColor.Black:
                animatorController = astronautAnimatorControllersRepository.blackAnimatorController;
                break;

            case PlayerColor.Brown:
                animatorController = astronautAnimatorControllersRepository.brownAnimatorController;
                break;

            case PlayerColor.Cyan:
                animatorController = astronautAnimatorControllersRepository.cyanAnimatorController;
                break;

            case PlayerColor.Lime:
                animatorController = astronautAnimatorControllersRepository.limeAnimatorController;
                break;

            case PlayerColor.White:
                animatorController = astronautAnimatorControllersRepository.whiteAnimatorController;
                break;

            default:
                Logger.LogError(SharedLoggerSection.PlayerColors, "Undefined player color");
                return;
            }

            animator.runtimeAnimatorController = animatorController;
        }
Exemplo n.º 19
0
 public void LoadScene(string sceneName)
 {
     SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
     Logger.LogEvent(SharedLoggerSection.ScenesManager, $"Loaded scene {sceneName}");
 }
Exemplo n.º 20
0
 public void UnloadScene(string sceneName)
 {
     SceneManager.UnloadSceneAsync(sceneName);
     Logger.LogEvent(SharedLoggerSection.ScenesManager, $"Unloaded scene {sceneName}");
 }