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