private void SendToAllAboutNewPlayer(GameBattlePlayerInfo player)
        {
            var newUnitMessage = new TankRespawnMsg();

            newUnitMessage.Opponent = player;
            newUnitMessage.ClientId = player.UnitId;
            Server.SendToAllExcept(newUnitMessage, newUnitMessage.ClientId);
        }
Ejemplo n.º 2
0
        private void OnUnitDestroy(UnitDestroyMessage message)
        {
            GameBattlePlayerInfo battlePlayer = Model.GetBattlePlayer(message.ClientId);

            battlePlayer.IsAlive = false;

            Server.SendToAllExcept(message, message.ClientId);
        }
Ejemplo n.º 3
0
        private void OnUnitPositionUpdate(UnitPositionMessage message)
        {
            GameBattlePlayerInfo battlePlayer = Model.GetBattlePlayer(message.ClientId);

            battlePlayer.Position = message.Position;

            Server.SendToAllExcept(message, message.ClientId);
        }
Ejemplo n.º 4
0
        private void SendToAllAboutNewPlayer(ConnectToBattleRequestMsg message,
                                             GameBattlePlayerInfo player)
        {
            var newUnitMessage = new TankRespawnMsg();

            newUnitMessage.Oponent  = player;
            newUnitMessage.ClientId = player.UnitId;
            Server.SendToAllExept(newUnitMessage, newUnitMessage.ClientId);
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 10
0
 public void AddBattlePlayer(int connectionId, GameBattlePlayerInfo battlePlayerInfo)
 {
     _battlefieldUnits.Add(connectionId, battlePlayerInfo);
 }