Example #1
0
        public Map GenerateMap(MapBiome mapBiome = null)
        {
            if (mapBiome is null)
            {
                mapBiome = new GrasslandMapBiome();
            }
            Map map = new Map()
            {
                mapBiome = mapBiome
            };
            Thread mapCreator = new Thread(() => map.SetupMap(mapBiome.DefaultParameters().PerlinDiff, World.World.random.Next(), mapBiome.DefaultParameters().HeightDiff + mission.heightDiff, mapBiome));

            mapCreator.Start();
            mapCreator.Priority = ThreadPriority.Highest;
            bool validMap = false;
            bool finished = mapCreator.Join(Map.creationTime);
            int  counter  = 20;

            while (!(finished && validMap))
            {
                int seed = World.World.random.Next();
                mapCreator = new Thread(() => map.SetupMap(mapBiome.DefaultParameters().PerlinDiff, World.World.random.Next(), mapBiome.DefaultParameters().HeightDiff + mission.heightDiff, mapBiome));
                mapCreator.Start();
                mapCreator.Priority = ThreadPriority.Highest;
                finished            = mapCreator.Join(Map.creationTime);
                validMap            = mission.MapValidity(map);
                counter--;
                if (counter == 0)
                {
                    throw new Exception("Can not find valid map!");
                }
            }

            return(map);
        }
Example #2
0
    public BiomeTileSet GetBiomeTileSetFromBiomeType(MapBiome mb)
    {
        switch (mb)
        {
        case MapBiome.Grass:
            return(TileSet_Grass);

        case MapBiome.Snow:
            return(TileSet_Snow);

        case MapBiome.Desert:
            return(TileSet_Desert);

        case MapBiome.Mont1:
            return(TileSet_Mont1);

        case MapBiome.ElCid5:
            return(TileSet_ElCid5);

        case MapBiome.Vindsaga:
            return(TileSet_VindSaga);

        case MapBiome.Saladin1:
            return(TileSet_Saladin1);

        default:
            return(TileSet_Grass);
        }
    }
    public static void BuildMapFromStringArrayList(List <string[]> mapInStrings, MapBiome biomeType)
    {
        generationMap = GenerationManager.instance.GetGameMap();
        GenerationManager.instance.Height = mapInStrings.Count;
        GenerationManager.instance.Width  = mapInStrings.Count;

        switch (mapInStrings.Count)
        {
        case 72:
            GenerationManager.instance.SetTopDownPos(36F, 36.5F, 65F);
            break;

        case 96:
            GenerationManager.instance.SetTopDownPos(47.7F, 48.3F, 85F);
            break;

        case 120:
            GenerationManager.instance.SetTopDownPos(58.2F, 60F, 105F);
            break;

        case 144:
            GenerationManager.instance.SetTopDownPos(69.3F, 72.4F, 130F);
            break;

        case 200:
            GenerationManager.instance.SetTopDownPos(98.1F, 100F, 175F);
            break;

        case 255:
            GenerationManager.instance.SetTopDownPos(123.3F, 126.5F, 225F);
            break;

        default:

            break;
        }



        generationMap.CreateEmptyMap(mapInStrings.Count);
        GenerationManager.instance.forestGenerator.ResetTrees();

        BiomeTileSet biome = GenerationManager.instance.tilePool.GetBiomeTileSetFromBiomeType(biomeType);

        GenerationManager.instance.SelectedMapBiome = biomeType;


        Tile waterTile    = biome.Water;
        Tile shallowsTile = biome.Shallows;
        Tile roadTile     = biome.Road;
        Tile iceTile      = biome.Ice;

        Tile groundTile  = biome.GroundTiles[0];
        Tile groundTile2 = null;
        Tile groundTile3 = null;

        if (biome.GroundTiles.Length > 1)
        {
            groundTile2 = biome.GroundTiles[1];
        }
        if (biome.GroundTiles.Length > 2)
        {
            groundTile3 = biome.GroundTiles[2];
        }

        int y = mapInStrings.Count - 1;

        foreach (string[] row in mapInStrings)
        {
            int x = 0;//
            foreach (string mapTile in row)
            {
                MapPoint mp = new MapPoint(x, y);
                if (mapTile == "G")
                {
                    generationMap.AddTile(groundTile, mp);
                }
                else if (mapTile == "2G" || mapTile == "G2")
                {
                    generationMap.AddTile(groundTile2, mp);
                }
                else if (mapTile == "3G")
                {
                    generationMap.AddTile(groundTile3, mp);
                }
                else if (mapTile == "T")
                {
                    generationMap.AddTile(groundTile, mp);
                    generationMap.AddTree(0, mp);
                }
                else if (mapTile == "W")
                {
                    generationMap.AddTile(waterTile, mp);
                }
                else if (mapTile == "S")
                {
                    generationMap.AddTile(shallowsTile, mp);
                }
                else if (mapTile == "R")
                {
                    generationMap.AddTile(roadTile, mp);
                }
                else if (mapTile == "I")
                {
                    generationMap.AddTile(iceTile, mp);
                }
                x++;
            }
            y--;
        }

        generationMap.ApplySandNextToWater();
        generationMap.GenerateMap();
        GenerationManager.instance.MoveGamePlayCam();
    }