Exemple #1
0
        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);
        }
Exemple #2
0
        // 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);
            }
        }