public void OnEvent(EventData photonEvent)
        {
            byte eventCode = photonEvent.Code;

            Debug.Log(string.Format("Received an event with code {0}", Convert.ToInt64(eventCode)));
            if (eventCode == GameStartEventCode)
            {
                Debug.Log(string.Format("Starting a game ... with {0} players : {1}", PlayerRegister.GetCount(), PlayerRegister.GetPlayerInfo()));

                // Start the game
                gameManager.StartGame();
            }
            if (eventCode == GameExitEventCode)
            {
                // Destroying all available players network
                PhotonNetwork.DestroyAll(false);

                // Unregistered all players
                PlayerRegister.DeleteAll();

                // Game is running, force to change into Main Menu
                SceneManager.LoadScene("EasyMainMenu/Scenes/MainMenu");

                // Disconnect server connection
                PhotonNetwork.Disconnect();
            }
        }
        // Update is called once per frame
        void Update()
        {
            if (gameStart)
            {
                return;
            }

            int playerCount = PlayerRegister.GetCount();

            if (playerCount > (maxPlayersPerRoom - 1))
            {
                // Only raise event if host player
                if (PhotonNetwork.IsMasterClient)
                {
                    Debug.Log("Match all players. Continue to starting the game ...");
                    // Send event to begin start game
                    PhotonNetwork.RaiseEvent(
                        GameStartEventCode,
                        null,
                        new RaiseEventOptions {
                        Receivers = ReceiverGroup.All
                    },
                        SendOptions.SendReliable
                        );

                    gameStart = true;
                }
            }
            else
            {
                // TODO: Display status message waiting for another player
            }
        }
示例#3
0
    public bool RegisterPlayer(PlayerRegister playerData)
    {
        if (playerData.PlayerNumber > playerCount || playerData.PlayerNumber <= 0)
        {
            return(false);
        }
        if (_players.Contains(playerData))
        {
            return(true);
        }
        if (_players.Count(p => p.PlayerNumber == playerData.PlayerNumber) > 0)
        {
            return(false);
        }

        string[] schemas;

        if (playerData.PlayerNumber == 1)
        {
            schemas = GameSettings.Player1Input.Split(';');
        }
        else
        {
            schemas = GameSettings.Player2Input.Split(';');
        }

        playerData.GetComponent <PlayerMovement>().InputSchemas = schemas;

        _players.Add(playerData);
        return(true);
    }
示例#4
0
 // Update is called once per frame
 void Update()
 {
     if (_activeIndex != _playerQueue.Count - 1)
     {
         _activeIndex = _playerQueue.Count - 1;
         for (int i = 0; i < _playerQueue.Count; i++)
         {
             PlayerRegister player_register = _playerQueue[i].GetComponent <PlayerRegister>();
             if (i != _activeIndex)
             {
                 player_register.FreezeControls();
                 //foreach (var controllable in player_register.GetComponentsInChildren<IControllable>())
                 //{
                 //    controllable.FreezeControls();
                 //}
             }
             else
             {
                 player_register.UnFreezeControls();
                 //foreach (var controllable in player_register.GetComponentsInChildren<IControllable>())
                 //{
                 //    controllable.UnFreezeControls();
                 //}
             }
         }
     }
 }
示例#5
0
    public void OnPhotonInstantiate(PhotonMessageInfo info)
    {
        GameObject playerHUD = GameObject.Find("PlayerCanvas/HUD/PlayerHUD").gameObject;

        GameObject playerPanelObject = playerHUD.transform.Find("PlayerBorder").gameObject;

        transform.SetParent(playerPanelObject.transform, false);

        // Refresh player panel layout
        LayoutRebuilder.ForceRebuildLayoutImmediate(playerPanelObject.GetComponent <RectTransform>());

        // Load player status
        object[] playerInfo = info.photonView.InstantiationData;
        playerName = (string)playerInfo[0];
        ColorUtility.TryParseHtmlString((string)playerInfo[1], out playerColor);

        // Refresh player status
        RefreshPlayerStatus();

        // Disable player
        SetActive(false);

        // Register as a new player
        PlayerRegister.Insert(gameObject);

        // Refresh player counts
        GameObject playerSizeObject = playerHUD.transform.Find("PlayerSize").gameObject;

        playerSizeObject.GetComponent <Text>().text = string.Format("Player Count : {0}", PlayerRegister.GetCount());
    }
示例#6
0
 public TrainCommandHandler(
     ITextOutput userOutput,
     PlayerRegister playerRegister,
     LearningAgentRegister agentRegister)
 {
     _userOutput     = userOutput;
     _playerRegister = playerRegister;
     _agentRegister  = agentRegister;
 }
示例#7
0
    public static string GetPlayerInfo()
    {
        string playerInfo = string.Join(",",
                                        PlayerRegister.GetStatuses()
                                        .Select(element => "[" + element.Key + "," + element.Value + "]")
                                        );

        return(playerInfo);
    }
示例#8
0
 public ListCommandHandler(
     PlayerRegister register,
     LearningAgentRegister agentRegister,
     ITextOutput output)
 {
     _register      = register;
     _agentRegister = agentRegister;
     _output        = output;
 }
示例#9
0
    private void DisableAllPlayer()
    {
        List <GameObject> playerObjects = PlayerRegister.GetAllPlayer();

        for (int playerIndex = 0; playerIndex < playerObjects.Count; playerIndex++)
        {
            EnablePlayer(playerIndex, false);
        }
    }
示例#10
0
    void OnEnable()
    {
        QuestionManager = GameObject
                          .FindGameObjectWithTag("QuestionManager")
                          .GetComponent <QuestionManager>();

        PlayerRegister = GameObject
                         .FindGameObjectWithTag("QuestionManager")
                         .GetComponent <PlayerRegister>();
    }
示例#11
0
        public void CreatesPlayerWithCorrectTile()
        {
            var register = new PlayerRegister();

            Assert.AreEqual(BoardTile.X,
                            register.GetPlayerByName("FirstAvailableSlotPlayer", BoardTile.X).Tile);

            Assert.AreEqual(BoardTile.O,
                            register.GetPlayerByName("FirstAvailableSlotPlayer", BoardTile.O).Tile);
        }
示例#12
0
        public void FindsPlayerByName()
        {
            var register = new PlayerRegister();

            Assert.AreEqual(typeof(FirstAvailableSlotPlayer),
                            register.GetPlayerByName("FirstAvailableSlotPlayer", BoardTile.O).GetType());

            Assert.AreEqual(typeof(ConsoleInputTicTacToePlayer),
                            register.GetPlayerByName("ConsoleInputTicTacToePlayer", BoardTile.O).GetType());
        }
示例#13
0
    public bool KillPlayer(PlayerRegister playerData)
    {
        var result = _players.Remove(playerData);

        if (_players.Count <= 0 && WindowManager.Instance != null)
        {
            WindowManager.Instance.OpenWindow(1);
        }

        return(result);
    }
示例#14
0
    public void UnRegisterPlayer(GameObject player)
    {
        PlayerRegister player_register = player.GetComponent <PlayerRegister>();

        player_register.FreezeControls();
        //foreach (var controllable in player_register.GetComponentsInChildren<IControllable>())
        //{
        //    controllable.FreezeControls();
        //}

        _playerQueue.Remove(player);
    }
示例#15
0
    /// <summary>
    /// Update all player to force state into 'End State'
    /// </summary>
    private void UpdateAllPlayers()
    {
        List <GameObject> playerObjects = PlayerRegister.GetAllPlayer();

        foreach (GameObject playerObject in playerObjects)
        {
            Player player = playerObject.GetComponent <Player>();
            if (!(player.playerState is EndState))
            {
                player.SetPlayerNextState(new EndState());
            }
        }
    }
示例#16
0
 // called when a player controller sends the message upward that it has disconnected
 void OnPlayerHasDisconnected(string dcName)
 {
     if (deleteOnDisconnect)
     {
         if (GetComponent <ControllerInputRule>().CharSelectManager != null)
         {
             GetComponent <ControllerInputRule>().CharSelectManager.DeselectPlayerCharacter(PlayerRegister[dcName]);
         }
         Destroy(PlayerRegister[dcName].gameObject);
         PlayerRegister.Remove(dcName);
         Debug.Log(dcName + " has disconnected during a non-gameplay game state, and was therefore removed from the registry");
     }
     CheckAllConnected();
 }
示例#17
0
    public void OnEvent(EventData photonEvent)
    {
        byte eventCode = photonEvent.Code;

        if (eventCode == SwitchPlayerPositionEventCode)
        {
            bool status = SwitchToNextPlayer();
            if (status)
            {
                Debug.Log(string.Format("Successfully switch to the next player [{0}]", currentPlayer));

                // After switching, update for the current player
                UpdatePlayer();

                string playerInfo = string.Join(",",
                                                PlayerRegister.GetStatuses()
                                                .Select(element => "[" + element.Key + "," + element.Value + "]")
                                                );
                Debug.Log(string.Format("Players : {0}", playerInfo));
            }
            else
            {
                Debug.Log("Failed switch to the next player");
            }
        }
        else
        if (eventCode == PlayerReachEndStateEventCode)
        {
            Debug.Log(string.Format("Reach the end state"));
            // After player reach end, update for all players
            UpdateAllPlayers();

            // Calculating the final score
            List <GameObject> playerObjects = PlayerRegister.GetAllPlayer();
            gameResult.LoadResult(gameCards, playerObjects);
            gameResult.Show();

            // End the game
            EndGame();
        }
        else
        {
            Debug.Log(string.Format("Unhandled event with code {0}", eventCode));
        }
    }
示例#18
0
    private void EnablePlayer(int playerIndex, bool status)
    {
        if (playerIndex > -1 && playerIndex < PlayerRegister.GetCount())
        {
            int playerId = GetPlayerId(playerIndex);

            GameObject playerObject = PlayerRegister.GetPlayer(playerId);
            Player     player       = playerObject.GetComponent <Player>();
            if (player != null)
            {
                if (player.SetActive(status))
                {
                    Debug.Log(string.Format("{0} player \"{1}\" : ", status ? "Enable" : "Disable", player.GetId()));
                }
            }
            else
            {
                Debug.Log(string.Format("{0} is not player or has not attached to the player script", playerObject.name));
            }
        }
    }
示例#19
0
    private bool SwitchToNextPlayer()
    {
        int playerCount = PlayerRegister.GetCount();

        if (currentPlayer < playerCount)
        {
            // Disable for the current player
            EnablePlayer(currentPlayer, false);
            int nextPlayer = (this.currentPlayer + 1) % playerCount;
            // Enable for the next player
            EnablePlayer(nextPlayer, true);
            // Set next player to the current player
            currentPlayer = nextPlayer;
            return(true);
        }
        else
        {
            Debug.Log("Current player is not valid");
            return(false);
        }
    }
    public void SetSettlement(int x, int y, int playerId, PhotonMessageInfo info)
    {
        Debug.LogFormat("Message Info: {0} {1} {2}", info.Sender, info.photonView, info.SentServerTime);

        GameObject playerObject = PlayerRegister.GetPlayer(playerId);
        Player     player       = playerObject.GetComponent <Player>();

        if (player != null)
        {
            Vector3Int playerPosition = new Vector3Int(x, y, 0); // Ingore "z" value

            Tile settlementTile = player.playerTile;
            // Adjust saturation color
            settlementTile.color = AdjustColor(player.playerColor, 0.3f, 1);
            playerMovement.SetTile(playerPosition, settlementTile);
        }
        else
        {
            Debug.Log(string.Format("Can't set settlement in ({0}, {1}). Player id {2} is not found", x, y, playerId));
        }
    }
示例#21
0
    private Player GetCurrentPlayer()
    {
        List <GameObject> playerObjects = PlayerRegister.GetAllPlayer();

        if (currentPlayer > -1 && currentPlayer < playerObjects.Count)
        {
            GameObject playerObject = playerObjects[currentPlayer];
            Player     player       = playerObject.GetComponent <Player>();
            if (player != null)
            {
                return(player);
            }
            else
            {
                Debug.Log(string.Format("Player object {0} is not a player", playerObject.name));
                return(null);
            }
        }
        else
        {
            Debug.Log("Current player is not valid");
            return(null);
        }
    }
示例#22
0
	void Start(){
		playerReg = GetComponentInParent<PlayerRegister> ();
		cam = playerReg.cam;
	}
示例#23
0
 public PlayCommandHandler(ITextOutput userOutput, PlayerRegister register)
 {
     _userOutput = userOutput;
     _register   = register;
 }