private void PlayerHitMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int hitPlayerID = msg.GetInt(); short damage = msg.GetShort(); InGamePlayer hitPlayer = PlayerList[hitPlayerID]; if (!hitPlayer.IsAlive) { return; } if (PlayerTakeDamage(hitPlayer, damage, true)) { Logger.WriteLine("Room {0} : Player {1} killed by Player {2}", Id, hitPlayer.Id, player.Id); player.KillCounter += 1; var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.PlayerKill); writer.Put(hitPlayer.Id); writer.Put(player.Id); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); } }
internal List <InGamePlayer> GetPlayers(string requesterPlayerHash) { List <InGamePlayer> players = new List <InGamePlayer>(); foreach (var playerInfo in playersRoundInfo) { InGamePlayer igp = new InGamePlayer(); if (requesterPlayerHash == playerInfo.Key) { igp.nick = "You"; } else { igp.nick = "Anonymos"; } igp.hash = playerInfo.Key; igp.offer = playerInfo.Value.playerOffer.ToString(); if (playerInfo.Value.isProposer == true) { igp.role = "Proposer"; } igp.weight = playerInfo.Value.weight.ToString(); players.Add(igp); } return(players); }
private void TakeItemMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int itemID = msg.GetInt(); int quantity = msg.GetInt(); if (!_itemList.ContainsKey(itemID)) { return; } var item = _itemList[itemID]; if (player.TakeItem(ref item, quantity)) { Logger.WriteLine("Room {0} : Remove item {1} because there is no more quantity.", Id, itemID); _itemList.Remove(itemID); quantity = item.Quantity; } var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.TakeItem); writer.Put(player.Id); writer.Put(item.ID); writer.Put(quantity); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
public void CreatePlayers() { for (int i = 0; i < currentPlayers.Length; i++) { if (currentPlayers[i] != null) { PlayerInput playerInstance = PlayerInput.Instantiate(currentPlayers[i].inputReader); currentPlayers[i] = new InGamePlayer(playerInstance, currentPlayers[i].inputSender, currentPlayers[i].emblem, currentPlayers[i].characterName, currentPlayers[i].teamNumber, currentPlayers[i].characterPreview, GameController.instance.gameModeUI.stockHandlers[i]); currentPlayers[i].inputReader.Init(); currentPlayers[i].character.playerIndex = i; currentPlayers[i].character.teamNumber = currentPlayers[i].teamNumber; currentPlayers[i].ConnectInput(); playerInstance.gameObject.transform.position = level.startingSpawnPoints[i].position; playerInstance.gameObject.transform.rotation = Quaternion.identity; playerInstance.gameObject.layer = LayerMask.NameToLayer("Player " + (i + 1)); if (GameController.instance.game.currentGameMode == Game.Mode.TEAMS) { ResetTeamScores(); } else { GameController.instance.playerDisplays[i].emblem.enabled = true; GameController.instance.playerDisplays[i].emblem.sprite = currentPlayers[i].emblem; GameController.instance.playerDisplays[i].scoreText.gameObject.SetActive(true); //GameController.instance.playerDisplays[i].emblem.SetNativeSize(); } GameController.instance.smashCam.AddTarget(currentPlayers[i].character.transform, currentPlayers[i].character.hat.transform); playerInstance.transform.parent = level.transform; int _skinIndex = GameController.instance.playerDisplays[i].skinIndex; int _colorIndex = GameController.instance.playerDisplays[i].colorIndex; playerInstance.GetComponent <CharacterColorChanger> ().Init(_skinIndex, _colorIndex); currentPlayers[i].SetStockImages(); SetScoreText(i); if (currentGameMode == Game.Mode.SURVIVAL) { playerInstance.gameObject.layer = LayerMask.NameToLayer("Player 1"); } if (currentGameMode == Game.Mode.TEAMS) { playerInstance.gameObject.layer = LayerMask.NameToLayer("Player " + currentPlayers[i].teamNumber); } } else { GameController.instance.playerDisplays[i].emblem.enabled = false; GameController.instance.playerDisplays[i].scoreText.gameObject.SetActive(false); } } }
public void PlayerQuitRoom(InGamePlayer player, GameInstance room) { if (room.PlayerCount == 0 && Rooms.ContainsKey(room.Id)) { Logger.WriteLine("Room instance {0} removed because all players quit.", room.Id); room.StopRoomInstance(); Rooms.Remove(room.Id); } }
private void PlayerCrouchMessage(InGamePlayer player, NetworkMessage msg) { bool state = msg.GetBool(); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.Crouch); writer.Put(player.Id); writer.Put(state); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void PlayerJumpMessage(InGamePlayer player, NetworkMessage msg) { short state = msg.GetShort(); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.Jump); writer.Put(player.Id); writer.Put(state); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void SwitchKnifeMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.SwitchKnife); writer.Put(player.Id); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void PlayerShootMessage(InGamePlayer player, NetworkMessage msg) { int state = msg.GetInt(); bool isShooting = msg.GetBool(); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.Shoot); writer.Put(player.Id); writer.Put(state); writer.Put(isShooting); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void PlayerTurnMessage(InGamePlayer player, NetworkMessage msg) { Quaternion orientation = msg.GetQuaternion(); player.Rotation = orientation; var writer = new NetworkWriter(InGameProtocol.UDPServerToClient.Turn); writer.Put(player.Id); writer.Put(orientation); _server.SendAll(writer, DeliveryMethod.Unreliable); }
private void StartThrowingMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } short type = msg.GetShort(); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.StartThrowing); writer.Put(player.Id); writer.Put(type); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void PlayerReloadingMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } bool state = msg.GetBool(); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.Reloading); writer.Put(player.Id); writer.Put(state); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void ConnectionConfirmMessage(InGamePlayer p, NetworkMessage msg) { int playerId = msg.GetInt(); if (_expectedPlayers.ContainsKey(playerId)) { var oldPlayer = _expectedPlayers[playerId]; _expectedPlayers.Remove(playerId); var player = new InGamePlayer(msg.Peer, playerId); player.Name = oldPlayer.Name; player.IsSpectator = oldPlayer.IsSpectator; if (!player.IsSpectator) { var writerOther = new NetworkWriter(InGameProtocol.TCPServerToClient.ConectedToRoom); writerOther.Put(player.Id); writerOther.Put(player.Name); _server.SendAll(writerOther, DeliveryMethod.ReliableOrdered); } var writerNew = new NetworkWriter(InGameProtocol.TCPServerToClient.ListConnectedPlayer); writerNew.Put(PlayerList.Count); foreach (var connectedPlayer in PlayerList) { writerNew.Put(connectedPlayer.Value.Id); writerNew.Put(connectedPlayer.Value.Name); writerNew.Put(connectedPlayer.Value.Position); writerNew.Put(connectedPlayer.Value.Rotation); } player.SendWriter(writerNew, DeliveryMethod.ReliableOrdered); writerNew = new NetworkWriter(InGameProtocol.TCPServerToClient.Registered); player.SendWriter(writerNew, DeliveryMethod.ReliableOrdered); _server.RegisterPlayer(player); if (!player.IsSpectator) { PlayerList.Add(player.Id, player); } else { SpectatorList.Add(player.Id, player); } } }
/*********************************************************************************/ private void PlayerMovementMessage(InGamePlayer player, NetworkMessage msg) { Vector3 position = msg.GetVector3(); float speed_h = msg.GetFloat(); float speed_v = msg.GetFloat(); player.Position = position; var writer = new NetworkWriter(InGameProtocol.UDPServerToClient.Movement); writer.Put(player.Id); writer.Put(position); writer.Put(speed_h); writer.Put(speed_v); _server.SendAll(writer, DeliveryMethod.Unreliable); }
private void SwitchItemMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int itemID = msg.GetInt(); player.SwitchCurrentItem(itemID); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.SwitchItem); writer.Put(player.Id); writer.Put(itemID); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
/*************************************************************************************/ private bool PlayerTakeDamage(InGamePlayer player, short damage, bool affectShield) { player.TakeDamage(damage, affectShield); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.HitPlayer); writer.Put(player.Id); writer.Put(damage); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); if (!player.IsAlive) { foreach (var item in player.Inventory) { writer = new NetworkWriter(InGameProtocol.TCPServerToClient.DropItem); writer.Put(player.Id); writer.Put(item.Value.ID); writer.Put(item.Value.ID); writer.Put(item.Value.Quantity); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); _itemList.Add(item.Value.ID, item.Value); } player.Inventory.Clear(); AlivePlayerList.Remove(player.Id); if (AlivePlayerList.Count == 1) { var winPlayer = AlivePlayerList.First().Value; writer = new NetworkWriter(InGameProtocol.TCPServerToClient.PlayerWin); writer.Put(winPlayer.Id); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); GameEnded = true; Logger.WriteLine("Room {0} : Player {1} win the game", Id, winPlayer.Id); } return(true); } return(false); }
private void RocketEndMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int index = msg.GetInt(); player.RocketEnd(index); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.RocketEnd); writer.Put(player.Id); writer.Put(index); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); Logger.WriteLine("Room {0} : Rocket {1} launch by Player {2} exploded.", Id, index, player.Id); }
private void RocketMoveMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int index = msg.GetInt(); Vector3 pos = msg.GetVector3(); Quaternion rot = msg.GetQuaternion(); player.RocketMove(index, pos, rot); var writer = new NetworkWriter(InGameProtocol.UDPServerToClient.RocketMove); writer.Put(player.Id); writer.Put(index); writer.Put(pos); writer.Put(rot); _server.SendAll(writer, DeliveryMethod.Unreliable); }
private void EnigmaOpenedMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int enigmaID = msg.GetInt(); Logger.WriteLine("Room {0} : Player {1} open enigma {2}.", Id, player.Id, enigmaID); var enigmas = _enigmasList[enigmaID]; enigmas.EnigmaOpened = true; var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.EnigmaOpened); writer.Put(player.Id); writer.Put(enigmaID); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void ThrowingMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int itemID = msg.GetInt(); short type = msg.GetShort(); int index = msg.GetInt(); player.Throwing(itemID, type, index); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.Throwing); writer.Put(player.Id); writer.Put(itemID); writer.Put(type); writer.Put(index); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); Logger.WriteLine("Room {0} : Player {1} throw a grenade {2}.", Id, player.Id, index); }
private void OpenCrateMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int crateID = msg.GetInt(); Logger.WriteLine("Room {0} : Player {1} open crate {2}.", Id, player.Id, crateID); var itemList = ItemGenerator.GenerateCrateItem(); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.OpenCrate); writer.Put(player.Id); writer.Put(crateID); writer.Put(itemList.Count); foreach (var item in itemList) { writer.Put(item.ID); writer.Put(item.Type); writer.Put(item.Rarity); writer.Put(item.Quantity); _itemList.Add(item.ID, item); Logger.WriteLine("Room {0} : Item generated on crate {1} -> id = {2}\tquantity = {3}\ttype = {4}", Id, crateID, item.ID, item.Quantity, (ItemTypes.ItemEnum)item.Type); } _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void DropItemMessage(InGamePlayer player, NetworkMessage msg) { if (!GameStarted || GameEnded) { return; } int itemID = msg.GetInt(); int quantity = msg.GetInt(); var item = player.DropItem(itemID, quantity); _itemList.Add(item.ID, item); Logger.WriteLine("Room {0} : Player {1} drop item {2}", Id, player.Id, itemID); var writer = new NetworkWriter(InGameProtocol.TCPServerToClient.DropItem); writer.Put(player.Id); writer.Put(itemID); writer.Put(item.ID); writer.Put(quantity); _server.SendAll(writer, DeliveryMethod.ReliableOrdered); }
private void OnPlayerDisconnect(InGamePlayer player) { Logger.WriteLine("Room {0} : Player {1} disconnected to room", Id, player.Id); RemovePlayer(player.Id); _manager.PlayerDisconnected(player, this); }
private void QuitGameMessage(InGamePlayer player, NetworkMessage msg) { Logger.WriteLine("Room {0} : Player {1} quit.", Id, player.Id); RemovePlayer(player.Id); _manager.PlayerQuitRoom(player, this); }
public static InGamePlayer GeneratePlayer(int hero, int position) { var player = new InGamePlayer { Slot = position, HeroID = hero }; switch (hero) { case 1: player.AccountID = 6543215; player.Kills = 24; player.Assists = 3; player.Deaths = 8; player.Denies = 55; player.Gold = 15000; player.GoldPerMin = 515; player.GoldSpent = 13500; player.HeroDamage = 25000; player.HeroHealing = 0; player.ItemID0 = 1; player.ItemID1 = 35; player.ItemID2 = 77; player.ItemID3 = 89; player.ItemID4 = 88; player.ItemID5 = 33; player.Level = 25; player.LastHits = 403; player.XpPerMin = 750; //player.MatchID = 1654845; player.TowerDamage = 3500; player.HeroID = 23; break; case 2: player.AccountID = 735354; player.Kills = 0; player.Assists = 12; player.Deaths = 7; player.Denies = 5; player.Gold = 1500; player.GoldPerMin = 170; player.GoldSpent = 1350; player.HeroDamage = 3100; player.HeroHealing = 1000; player.ItemID0 = 1; player.ItemID1 = 8; player.ItemID2 = 38; player.ItemID3 = 12; player.ItemID4 = 98; player.ItemID5 = 88; player.Level = 16; player.LastHits = 103; player.XpPerMin = 350; // player.MatchID = 1654845; player.TowerDamage = 800; player.HeroID = 28; break; case 3: player.AccountID = 1234; player.Kills = 5; player.Assists = 15; player.Deaths = 2; player.Denies = 150; player.Gold = 23000; player.GoldPerMin = 400; player.GoldSpent = 13500; player.HeroDamage = 17500; player.HeroHealing = 2500; player.ItemID0 = 1; player.ItemID1 = 8; player.ItemID2 = 56; player.ItemID3 = 35; player.ItemID4 = 83; player.ItemID5 = 75; player.Level = 23; player.LastHits = 250; player.XpPerMin = 400; // player.MatchID = 1654845; player.TowerDamage = 950; player.HeroID = 39; break; default: player.AccountID = 2344965; player.Kills = 17; player.Assists = 8; player.Deaths = 23; player.Denies = 87; player.Gold = 19507; player.GoldPerMin = 435; player.GoldSpent = 18008; player.HeroDamage = 21478; player.HeroHealing = 1000; player.ItemID0 = 1; player.ItemID1 = 5; player.ItemID2 = 9; player.ItemID3 = 53; player.ItemID4 = 12; player.ItemID5 = 35; player.Level = 19; player.LastHits = 398; player.XpPerMin = 469; //player.MatchID = 1654845; player.TowerDamage = 4589; player.HeroID = 99; break; } player.AbilityUpgrades = new List <AbilityUpgrade>(); for (int i = 0; i < player.Level; i++) { ((List <AbilityUpgrade>)player.AbilityUpgrades).Add(AbilitiesFactory.GenerateAbility(i % 5, i + 1, i * 10)); } return(player); }
public void SetPlayer(int index, PlayerInput inputReader, InputController inputSender, Sprite emblem, string characterName, int teamNumber, Sprite characterPreview) { currentPlayers [index] = new InGamePlayer(inputReader, inputSender, emblem, characterName, teamNumber, characterPreview, GameController.instance.gameModeUI.stockHandlers[index]); }