Example #1
0
    private void MonsterTurn()
    {
        HitByMonsterMessage hitByMonsterMessage = new HitByMonsterMessage();

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

            Vector2 playerPosition = player.TilePosition;
            Tile    t = GameManager.Instance.CurrentGrid.tilesArray[(int)playerPosition.x, (int)playerPosition.y];

            if ((t.Content == TileContent.Monster) || (t.Content == TileContent.Both))
            {
                if (player.DefendOneTurn)
                {
                    player.DefendOneTurn = false;
                    NetworkManager.SendMessage(networkDriver, hitByMonsterMessage, connections[i]);
                    continue;
                }


                NetworkManager.SendMessage(networkDriver, hitByMonsterMessage, connections[i]);

                player.Health -= 1;
                if (player.Health < 1)
                {
                    PlayerDiesMessage playerDiesMessage = new PlayerDiesMessage();
                    NetworkManager.SendMessage(networkDriver, playerDiesMessage, connections[i]);
                }
            }
        }
    }
    public IEnumerator MonsterAttacks(Monster monster)
    {
        networkJobHandle.Complete();

        //get room
        RoomData currentRoom = serverDataHolder.rooms[monster.roomID[0], monster.roomID[1]];

        //get players insideof room
        List <int> playerIDs = monster.targetPlayers;

        Debug.Log("Monster attack!" + playerIDs.Count);

        if (playerIDs.Count != 0)
        {
            yield return(new WaitForSeconds(.1f));

            networkJobHandle.Complete();

            int randomIndex = Mathf.FloorToInt(Random.Range(0, playerIDs.Count));

            PlayerData data = serverDataHolder.players.Find(x => x.playerIndex == monster.targetPlayers[randomIndex]);

            data.hp -= 3;
            //Debug.Log("random index = " +randomIndex+  "hp" + data.hp);
            //Debug.Log(" id = " +playerIDs[randomIndex]);
            //Debug.Log("target id = " + monster.targetPlayers[randomIndex]);

            if (data.hp <= 0)
            {
                data.hp = 0;
                //player dies
                PlayerDiesMessage dieMessage = new PlayerDiesMessage()
                {
                    PlayerID = monster.targetPlayers[randomIndex]
                };
                monster.targetPlayers.Remove(monster.targetPlayers[randomIndex]);

                serverDataHolder.activePlayerIDs.Remove(data.playerIndex);
                if (serverDataHolder.activePlayerIDs.Count == 0)
                {
                    EndGame();
                }
                SendMessageToAll(dieMessage);
            }
            else
            {
                HitByMonsterMessage hitByMessage = new HitByMonsterMessage()
                {
                    PlayerID = randomIndex,
                    newHP    = (ushort)data.hp
                };

                foreach (int id in playerIDs)
                {
                    SendMessage(hitByMessage, connections[id]);
                }
            }
        }
    }
    public void HitByMonster(ref DataStreamReader reader)
    {
        var message = new HitByMonsterMessage();

        message.DeserializeObject(ref reader);

        if (message.PlayerID == dataHolder.myData.playerIndex)
        {
            dataHolder.myData.hp = message.newHP;
            dataHolder.game.cRoom.UpdateHPText();
        }
    }
Example #4
0
    /// <summary>
    /// Send to all clients when a player gets hit by a monster.
    /// </summary>
    private void SendHitByMonster(int newHP)
    {
        Client activeClient;

        inverseActiveDictionary.TryGetValue(currentActivePlayer, out activeClient);
        var message = new HitByMonsterMessage()
        {
            PlayerID = activeClient.PlayerID,
            NewHP    = (ushort)newHP
        };

        foreach (Client c in clientList)
        {
            server.SendMessage(message, c.Connection);
        }
    }