public void NextTurn() { int i = Players.IndexOf(PlayerCurrentTurn); if (i != (Players.Count - 1)) { i++; } else { i = 0; } PlayerCurrentTurn = Players[i]; if (PlayerCurrentTurn.noTurn) { NextTurn(); return; } var nextTurn = new PlayerTurn { PlayerID = GameManager.Instance.PlayerCurrentTurn.Client.ClientID }; //Send which player's turn it is. for (int f = 0; f < ServerBehaviour.Instance.Clients.Count; f++) { var writer = ServerBehaviour.Instance.m_Driver.BeginSend(ServerBehaviour.Instance.m_Connections[f]); nextTurn.SerializeObject(ref writer); ServerBehaviour.Instance.m_Driver.EndSend(writer); } }
private void Start() { //CurrentRoom.SetRoomDirections((Room.RoomDirections)UnityEngine.Random.Range((int)1, (int)15)); //Setup players in current room. for (int i = 0; i < ClientBehaviour.Instance.Clients.Count; i++) { GameObject player = Instantiate(playerPrefab, RoomGameObject.spawnPositions[i].transform.position, RoomGameObject.spawnPositions[i].transform.rotation); player.name = ClientBehaviour.Instance.Clients[i].ClientName; player.GetComponent <Player>().Health = ClientBehaviour.Instance.Clients[i].StartHealth; player.GetComponent <Player>().Client = ClientBehaviour.Instance.Clients[i]; Players.Add(player.GetComponent <Player>()); player.SetActive(false); } if (ClientBehaviour.Instance.IsHost) //Send game info on start of game. { //Generate Grid if host. Grid = GetComponent <GridGeneration>(); Grid.GenerateGrid(); for (int i = 0; i < Players.Count; i++) { Grid.RoomGrid[0, 0].PlayersInRoom.Add(Players[i]); Players[i].CurrentRoom = Grid.RoomGrid[0, 0]; } //Set player turn PlayerCurrentTurn = Players[0]; #region RoomInfoMessage //Send Room Info var roomInfo = new RoomInfo() { MoveDirections = (byte)Grid.RoomGrid[0, 0].possibleDirections, TreasureInRoom = Grid.RoomGrid[0, 0].TreasureAmount, ContainsMonster = Grid.RoomGrid[0, 0].ContainsMonster, ContainsExit = Grid.RoomGrid[0, 0].ContainsExit, NumberOfOtherPlayers = (byte)ServerBehaviour.Instance.Clients.Count }; int[] playerIDs = new int[roomInfo.NumberOfOtherPlayers]; for (int f = 0; f < roomInfo.NumberOfOtherPlayers; f++) { playerIDs[f] = ServerBehaviour.Instance.Clients[f].ClientID; //Debug.Log(playerIDs[f]); } #endregion #region NextPlayerMessage //Send which player's turn it is. var playerTurn = new PlayerTurn { PlayerID = PlayerCurrentTurn.Client.ClientID }; #endregion #region SendMessages //Send Messages. for (int i = 0; i < ServerBehaviour.Instance.Clients.Count; i++) { var writer = ServerBehaviour.Instance.m_Driver.BeginSend(ServerBehaviour.Instance.m_Connections[i]); roomInfo.SerializeObject(ref writer, playerIDs); ServerBehaviour.Instance.m_Driver.EndSend(writer); var writer1 = ServerBehaviour.Instance.m_Driver.BeginSend(ServerBehaviour.Instance.m_Connections[i]); playerTurn.SerializeObject(ref writer1); ServerBehaviour.Instance.m_Driver.EndSend(writer1); } #endregion } }