public void StartGame()
    {
        networkJobHandle.Complete();
        StartGameMessage startMessage = new StartGameMessage
        {
            StartHP = 10
        };

        SendMessageToAll(startMessage);

        //enviroment data is setup
        serverDataHolder.GameSetup();

        //everyone gets a rooms info message.
        for (int i = 0; i < connections.Length; i++)
        {
            RoomInfoMessage startRoomMessage = serverDataHolder.GetRoomMessage(i);
            SendMessage(startRoomMessage, connections[i]);
        }

        //turn event is called
        PlayerTurnMessage turnMessage = new PlayerTurnMessage
        {
            PlayerID = serverDataHolder.turnID
        };

        SendMessageToAll(turnMessage);
    }
    private void PlayerTurn(ref DataStreamReader reader)
    {
        var message = new PlayerTurnMessage();

        message.DeserializeObject(ref reader);
        dataHolder.game.PlayerTurn(message.PlayerID);
    }
Exemplo n.º 3
0
    public void CheckTurn(MessageHeader playerTurnMessage)
    {
        PlayerTurnMessage turnMessage = playerTurnMessage as PlayerTurnMessage;

        PlayerManager.Instance.PlayerIDWithTurn = turnMessage.playerID;
        //Means its the players Turn
        if (turnMessage.playerID == PlayerManager.Instance.CurrentPlayer.playerID)
        {
            sideMenu.SlideMenu();
        }
    }
Exemplo n.º 4
0
    /// <summary>
    /// Send whose turn it is to all clients.
    /// </summary>
    private void SendPlayerTurn(Client activeTurnClient)
    {
        var playerTurnMessage = new PlayerTurnMessage {
            PlayerID = activeTurnClient.PlayerID,
        };

        foreach (Client c in AllClientPlayerDictionary.Keys) // Finished players still get to see this stuff
        {
            server.SendMessage(playerTurnMessage, c.Connection);
        }
    }
Exemplo n.º 5
0
    private void NewTurnMessage()
    {
        PlayerManager.Instance.PlayerIDWithTurn++;
        if (PlayerManager.Instance.PlayerIDWithTurn == PlayerManager.Instance.Players.Count)
        {
            PlayerManager.Instance.PlayerIDWithTurn = 0;
        }

        turnMessage = new PlayerTurnMessage()
        {
            playerID = PlayerManager.Instance.PlayerIDWithTurn
        };

        for (int j = 0; j < connections.Length; j++)
        {
            NetworkManager.SendMessage(networkDriver, turnMessage, connections[j]);
        }
    }
    public IEnumerator Turning()
    {
        yield return(new WaitForFixedUpdate());

        networkJobHandle.Complete();

        //check if all player left dungeon
        Debug.Log("next player turn...amount of active players" + serverDataHolder.activePlayerIDs.Count);
        if (serverDataHolder.activePlayerIDs.Count == 0)
        {
            //endgame!
            EndGame();
        }
        else
        {
            serverDataHolder.turnID += 1;

            if (serverDataHolder.turnID >= serverDataHolder.activePlayerIDs.Count)
            {
                Debug.Log("end of loop.");
                Debug.Log(serverDataHolder.activeMonsters.Count);

                //monsters now attack!
                foreach (Monster monster in serverDataHolder.activeMonsters)
                {
                    yield return(StartCoroutine(MonsterAttacks(monster)));

                    networkJobHandle.Complete();
                }
                serverDataHolder.turnID = 0;
            }

            if (serverDataHolder.activePlayerIDs.Count > serverDataHolder.turnID)
            {
                PlayerTurnMessage turnMessage = new PlayerTurnMessage
                {
                    PlayerID = serverDataHolder.activePlayerIDs[serverDataHolder.turnID]
                };
                SendMessageToAll(turnMessage);
            }
        }
    }
Exemplo n.º 7
0
    public void StartGame()
    {
        networkJobHandle.Complete();
        StartGameMessage startGameMessage = new StartGameMessage()
        {
            StartHP = 10
        };

        GameHasStarted = true;
        GameObject go   = new GameObject();
        Grid       grid = go.AddComponent <Grid>();

        grid.gameObject.name = "Grid";
        grid.GenerateGrid();
        GameManager.Instance.CurrentGrid = grid;

        for (int i = 0; i < connections.Length; i++)
        {
            NetworkManager.SendMessage(networkDriver, startGameMessage, connections[i]);
        }
        PlayerManager.Instance.SortingPlayerList();
        PlayerTurnMessage playerTurnMessage = new PlayerTurnMessage()
        {
            playerID = 0
        };

        for (int i = 0; i < PlayerManager.Instance.Players.Count; i++)
        {
            PlayerManager.Instance.Players[i].Health = 10;
        }

        for (int i = 0; i < connections.Length; i++)
        {
            NetworkManager.SendMessage(networkDriver, playerTurnMessage, connections[i]);
        }
        UIManager.Instance.DeleteLabels();
    }
    public void Update()
    {
        networkJobHandle.Complete();

        if (!connection.IsCreated)
        {
            return;
        }

        DataStreamReader reader;

        NetworkEvent.Type cmd;
        while ((cmd = connection.PopEvent(networkDriver, out reader)) != NetworkEvent.Type.Empty)
        {
            if (cmd == NetworkEvent.Type.Connect)
            {
                Debug.Log("Connected to server");
            }
            else if (cmd == NetworkEvent.Type.Data)
            {
                var messageType = (Message.MessageType)reader.ReadUShort();
                Debug.Log("Client Received: " + messageType + " from Host");

                Message message = null;
                switch (messageType)
                {
                case Message.MessageType.None: break;

                case Message.MessageType.NewPlayer: message = new NewPlayerMessage(); break;

                case Message.MessageType.Welcome: message = new WelcomeMessage(); break;

                case Message.MessageType.RequestDenied: message = new RequestDeniedMessage(); break;

                case Message.MessageType.PlayerLeft: message = new PlayerLeftMessage(); break;

                case Message.MessageType.StartGame: message = new StartGameMessage(); break;

                case Message.MessageType.PlayerTurn: message = new PlayerTurnMessage(); break;

                case Message.MessageType.RoomInfo: message = new RoomInfoMessage(); break;

                case Message.MessageType.PlayerEnterRoom: message = new PlayerEnterRoomMessage(); break;

                case Message.MessageType.PlayerLeaveRoom: message = new PlayerLeaveRoomMessage(); break;

                case Message.MessageType.ObtainTreasure: message = new ObtainTreasureMessage(); break;

                case Message.MessageType.HitMonster: message = new HitMonserMessage(); break;

                case Message.MessageType.HitByMonster: message = new HitByMonserMessage(); break;

                case Message.MessageType.PlayerDefends: message = new PlayerDefendsMessage(); break;

                case Message.MessageType.PlayerLeftDungeon: message = new PlayerLeftDungeonMessage(); break;

                case Message.MessageType.PlayerDies: message = new PlayerDiesMessage(); break;

                case Message.MessageType.EndGame:   break;

                default: break;
                }
                if (message != null)
                {
                    message.DeserializeObject(ref reader);
                    receivedMessagesQueue.Enqueue(message);
                }
            }
            else if (cmd == NetworkEvent.Type.Disconnect)
            {
                Debug.Log("Disconnected from server");
                connection = default;
            }
        }
        ProcessMessagesQueue();

        if (Time.time - lastSendTime > STAY_ALIVE_AFTER_SECONDS)
        {
            SendMessage(new NoneMessage());
        }
        networkJobHandle = networkDriver.ScheduleUpdate();
    }
        public void HandlePlayerTurn(Message message)
        {
            PlayerTurnMessage playerTurnMessage = (PlayerTurnMessage)message;

            Menu.Singleton.gameWindow.OutputText("Current turn: " + lobby.players[playerTurnMessage.PlayerID].PlayerTextWithColorTag());
        }