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(); } }
/// <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); } }