public bool TryConstruct(UnitModel model, out IUnit unit) { if (model.type.Equals("infantry")) { unit = new InfantryUnit(model.health); return(true); } else { unit = null; return(false); } }
internal static void CreateUnits() { int Upperbound = 3; int Lowerbound = 0; Random rnd = new Random(); for (int x = 0; x < 2; x++) { _players.Add(new Player("Player" + (x + 1))); } List <HexField> usedTiles = new List <HexField>(); foreach (Player player in _players) { player.Units.Clear(); if (player == _players[0]) { Upperbound = 3; Lowerbound = 0; } else if (player == _players[1]) { Upperbound = Board.BoardHeight - 1; Lowerbound = Board.BoardHeight - 4; } else { break; } if (_config.UseInfantry) { //List<HexField> usedTiles = new List<HexField>(); for (int unitnum = 0; unitnum < _config.NumberOfInfantry; unitnum++) { bool placed = false; Unit unit = new InfantryUnit(player); while (!placed) { HexField selectedTile = null; int x = 0; int y = 0; while (selectedTile == null || selectedTile.TerrainType == TerrainTypes.Mountain || usedTiles.Contains(selectedTile)) { x = rnd.Next(Lowerbound, Upperbound); y = rnd.Next(_board.getFirstTile(x), _board.GetRowSize(x) - 1); selectedTile = _board.getTile(x, y); } unit.Center = selectedTile.Center; _overLayTiles[x][y].Unit = unit; usedTiles.Add(selectedTile); player.Units.Add(unit); } } } if (_config.UseArmoredCar) { for (int unitnum = 0; unitnum < _config.NumberOfArmoredCar; unitnum++) { bool placed = false; Unit unit = new ArmoredCarUnit(player); int x = 0; int y = 0; while (!placed) { HexField selectedTile = null; while (selectedTile == null || selectedTile.TerrainType == TerrainTypes.Mountain || usedTiles.Contains(selectedTile)) { x = rnd.Next(Lowerbound, Upperbound); y = rnd.Next(_board.getFirstTile(x), _board.GetRowSize(x) - 1); selectedTile = _board.getTile(x, y); } unit.Center = selectedTile.Center; unit.Tile = selectedTile; selectedTile.Unit = unit; selectedTile.IsOccupied = true; _overLayTiles[x][y].Unit = unit; player.Units.Add(unit); usedTiles.Add(selectedTile); UnitControl uc = new UnitControl(); uc.DataContext = unit; _unitControls.Add(uc); placed = true; } } } if (_config.UseArtillery) { for (int unitnum = 0; unitnum < _config.NumberOfArtillery; unitnum++) { throw (new NotImplementedException()); /* * bool placed = false; * Unit unit = new ArtileryUnit(); * * while (!placed) * { * HexField selectedTile = null; * while (selectedTile == null || selectedTile.TerrainType == TerrainTypes.Mountain || selectedTile.CurrentUnit != null) * { * int x = rnd.Next(player1Lowerbound, player1Upperbound); * int y = rnd.Next(_board.getFirstTile(x), _board.GetRowSize(x) - 1); * selectedTile = _board.getTile(x, y); * } * unit.Center = selectedTile.Center; * selectedTile.CurrentUnit = unit; * _units.Add(unit); * }*/ } } //player.Units = _units; _units.Clear(); } }