private void SendToAllAboutNewPlayer(GameBattlePlayerInfo player) { var newUnitMessage = new TankRespawnMsg(); newUnitMessage.Opponent = player; newUnitMessage.ClientId = player.UnitId; Server.SendToAllExcept(newUnitMessage, newUnitMessage.ClientId); }
private void OnUnitDestroy(UnitDestroyMessage message) { GameBattlePlayerInfo battlePlayer = Model.GetBattlePlayer(message.ClientId); battlePlayer.IsAlive = false; Server.SendToAllExcept(message, message.ClientId); }
private void OnUnitPositionUpdate(UnitPositionMessage message) { GameBattlePlayerInfo battlePlayer = Model.GetBattlePlayer(message.ClientId); battlePlayer.Position = message.Position; Server.SendToAllExcept(message, message.ClientId); }
private void SendToAllAboutNewPlayer(ConnectToBattleRequestMsg message, GameBattlePlayerInfo player) { var newUnitMessage = new TankRespawnMsg(); newUnitMessage.Oponent = player; newUnitMessage.ClientId = player.UnitId; Server.SendToAllExept(newUnitMessage, newUnitMessage.ClientId); }
private void CreateAndRespawnOponent(GameBattlePlayerInfo oponentInfo) { if (!_oponents.ContainsKey(oponentInfo.UnitId)) { var newOponent = Context.CreateTank(false, Model.Mode, oponentInfo.EquippedItemsTypes); _oponents.Add(oponentInfo.UnitId, newOponent); Controller.Opponents.Add(newOponent); } _oponents[oponentInfo.UnitId].Respawn(oponentInfo.Position); }
private void OnConnectedToBattleRequest(ConnectToBattleRequestMsg message) { string userName = Model.ConIdToUserName[message.ClientId]; List <GameItemType> equippedItems = Storage.Get(userName).Inventory.GetEquippedItemsTypes(); GameBattlePlayerInfo battlePlayerInfo = new GameBattlePlayerInfo(message.ClientId, userName, GetFreeRespawnPoint(), equippedItems); Model.UnitsInBattle[message.ClientId] = battlePlayerInfo; SendBattleStateToNewPlayer(message, battlePlayerInfo); SendToAllAboutNewPlayer(message, battlePlayerInfo); }
private void SendBattleStateToNewPlayer(ConnectToBattleRequestMsg message, GameBattlePlayerInfo newPlayer) { var answer = new ConnectToBattleAnswerMsg(); answer.IsCanConnect = true; answer.Player = newPlayer; answer.Oponents = new List <GameBattlePlayerInfo>(); foreach (var unitId in Model.UnitsInBattle.Keys) { if (unitId != message.ClientId && Model.UnitsInBattle[unitId].IsAlive) { answer.Oponents.Add(Model.UnitsInBattle[unitId]); } } answer.DropedItems = Model.ItemsInField; Server.SendToPlayer(answer, message.ClientId); }
private void OnConnectedToBattleRequest(ConnectToBattleRequestMsg message) { int connectionId = message.ClientId; string userName = Model.GetUserNameByConnectionId(connectionId); List <GameItemType> equippedItems = Storage.Get(userName).Inventory.GetEquippedItemsTypes(); GameBattlePlayerInfo battlePlayerInfo = new GameBattlePlayerInfo(connectionId, userName, GetFreeRespawnPoint(), equippedItems); if (Model.IsUserInBattle(connectionId)) // TODO: need separate EnterBattle and RespawnTank logic. { Model.RemoveBattlePlayer(connectionId); } Model.AddBattlePlayer(message.ClientId, battlePlayerInfo); SendBattleState(message.ClientId); SendToAllAboutNewPlayer(battlePlayerInfo); }
private void SendBattleState(int playerConnectionId) { var battlePlayer = Model.GetBattlePlayer(playerConnectionId); var allPlayersConnection = Model.GetBattlePlayersConnections(); var answer = new ConnectToBattleAnswerMsg { IsCanConnect = true, Player = battlePlayer, Opponents = new List <GameBattlePlayerInfo>(), DroppedItems = Model.ItemsInField }; foreach (var connectionId in allPlayersConnection.Where(c => c != playerConnectionId)) { GameBattlePlayerInfo gameBattlePlayerInfo = Model.GetBattlePlayer(connectionId); if (gameBattlePlayerInfo.IsAlive) { answer.Opponents.Add(gameBattlePlayerInfo); } } Server.SendToPlayer(answer, playerConnectionId); }
public void AddBattlePlayer(int connectionId, GameBattlePlayerInfo battlePlayerInfo) { _battlefieldUnits.Add(connectionId, battlePlayerInfo); }