Exemple #1
0
        protected void Attack(Cell fromCell, Cell toCell, int units)
        {
            if (fromCell.Units - units < 1 || units <= 0)
            {
                return;
            }

            var unitCell = new UnitCell(toCell, fromCell, units, _aiPlayerInstance);
            fromCell.Player.AddUnitCell(unitCell);
        }
Exemple #2
0
 protected void Attack(Cell fromCell, Cell toCell)
 {
     var unitCell = new UnitCell(toCell, fromCell, fromCell.Units - 1, _aiPlayerInstance);
     fromCell.Player.AddUnitCell(unitCell);
 }
Exemple #3
0
        private void ProcessEvents()
        {
            int eventType;

            while ((eventType = GameClient.Instance.PeekEvent()) != -1)
            {
                var eve = (EventGame)eventType;
                if (eve == EventGame.CellSent)
                {
                    var cells = GameClient.Instance.ReadCellsInfo();

                    foreach (var cellInfo in cells)
                    {
                        var targetCell = AllCells.Single(t => t.Id == cellInfo.ToCellId);
                        var sourceCell = AllCells.Single(t => t.Id == cellInfo.FromCellId);

                        var movableCell = new UnitCell(
                            targetCell,
                            sourceCell,
                            cellInfo.Units,
                            Game.Instance.AllPlayers[cellInfo.PlayerId]) {
                                                                            Id = cellInfo.Id
                                                                         };

                        Game.Instance.AllPlayers[cellInfo.PlayerId].AddUnitCell(movableCell);
                    }
                }
                else if (eve == EventGame.PlayerWin)
                {
                    var playerId = GameClient.Instance.Read<int>();
                    string message;
                    if (playerId == Game.Instance.Player.Id)
                    {
                        message = "Gratulacje " + Game.Instance.Player.Name + ". Wygrałeś! ";
                    }
                    else
                    {
                        message = "Gracz " + Game.Instance.Players[playerId].Name + " cię zniszczył!";
                    }

                    Game.Instance.StateMachine.PushState(
                        new GameStateFinish(message, Game.Instance.Player.Id == playerId));
                    return;
                }
                else if (eve == EventGame.PlayerLeftGame)
                {
                    Game.Instance.StateMachine.PushState(new GameStateMultiplayer());
                }
                else if (eve == EventGame.Sync)
                {
                    var cellInfo = GameClient.Instance.Read<ShortCellInfo>();
                    var cell = AllCells.Single(t => t.Id == cellInfo.Id);
                    cell.Units = cellInfo.Units;

                    if (cell.PlayerId != cellInfo.OwnerId)
                    {
                        if (cell.Player != null)
                        {
                            cell.Player.Cells.RemoveAll(t => t.Id == cellInfo.Id);
                        }

                        cell.Player = cellInfo.OwnerId == -1 ? null : Game.Instance.AllPlayers[cellInfo.OwnerId];

                        if (cell.Player != null)
                        {
                            cell.Player.Cells.Add(cell);
                        }
                    }
                }
            }
        }
Exemple #4
0
 public void AddUnitCell(UnitCell unitCell)
 {
     unitCell.InitiateMoving();
     UnitCells.Add(unitCell);
 }
Exemple #5
0
        private void SendCells()
        {
            var existed = _lastSelection.Remove(_selector.Cell);
            if (_lastSelection.Count == 0)
            {
                return;
            }

            var unisPerCell = _selector.Units / _lastSelection.Count;
            var toSend = _selector.Units;
            var i = 1;
            var unitCellList = new List<UnitCell>();

            foreach (var cell in _lastSelection.OrderBy(t => t.Units).Where(t => Equals(t.Player, Game.Instance.Player))
                )
            {
                var units = (cell.Units - 1) < unisPerCell ? (cell.Units - 1) : unisPerCell;

                if (units > 0)
                {
                    var unitCell = new UnitCell(_selector.Cell, cell, units, Game.Instance.Player);
                    toSend -= unitCell.Units;

                    unitCellList.Add(unitCell);
                }

                if (i == _lastSelection.Count)
                {
                    unisPerCell = toSend;
                }
                else
                {
                    unisPerCell = toSend / (_lastSelection.Count - i);
                }

                i++;
            }

            _gameMode.SendCells(unitCellList);
            if (existed)
            {
                _lastSelection.Add(_selector.Cell);
                UpdateLines();
            }
        }