public void createTiles() { TileFlyweight tileFw = new TileFlyweight(); // Recupere un tab de int avec le type de chaque case var tiles = new TileType[size]; IntPtr algo = ApiUtil.MapAlgo_new(); // L'algo dipose les différents types de Tile ApiUtil.MapAlgo_fillMap(algo, tiles, size); // Remplissage de la map avec le résultat de l'algo for (int i = 0; i < size; i++) { int x = i / Width; int y = i % Width; switch (tiles[i]) { case TileType.PLAIN: TilesTab[x, y] = tileFw.getPlainTile(); break; case TileType.VOLCANO: TilesTab[x, y] = tileFw.getVolcanoTile(); break; case TileType.SWAMP: TilesTab[x, y] = tileFw.getSwampTile(); break; case TileType.DESERT: TilesTab[x, y] = tileFw.getDesertTile(); break; default: break; } } ApiUtil.MapAlgo_delete(algo); }
// Génère l'ensemble des unités public void createUnits(int nbUnits) { UnitFactory unitFct = new UnitFactory(); var posPlayers = new int[2]; IntPtr algo = ApiUtil.MapAlgo_new(); ApiUtil.MapAlgo_placePlayers(algo, Map.Width, posPlayers); foreach (KeyValuePair <int, Player> kvp in PlayersDictionary) { int idPlayer = kvp.Key; Player player = kvp.Value; UnitType race = player.Race; List <Unit> unitsList = new List <Unit>(); Position positionDepart = new Position(posPlayers[idPlayer - 1] / Map.Width, posPlayers[idPlayer - 1] % Map.Width); for (int i = 1; i <= nbUnits; i++) { unitsList.Add(unitFct.createUnit(positionDepart, player.Race, i)); } UnitsDictionary.Add(idPlayer, unitsList); } }