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); }
protected void Attack(Cell fromCell, Cell toCell) { var unitCell = new UnitCell(toCell, fromCell, fromCell.Units - 1, _aiPlayerInstance); fromCell.Player.AddUnitCell(unitCell); }
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); } } } } }
public void AddUnitCell(UnitCell unitCell) { unitCell.InitiateMoving(); UnitCells.Add(unitCell); }
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(); } }