private IEnumerator LoadNewFloorCoroutine()
    {
        var fader = FindObjectOfType <SceneFader>();

        yield return(fader.Fade(SceneFader.FadeDirection.In));                   //Start fading to black

        DecorativeTileMap.Clear();
        floorManager.GoDownFloor();                                             //When screen is black, despawn current floor, generate new floor
        yield return(null);

        BattleManager.player.UpdateLOS();                                       //Update player LOS
        FloorDisplay.text = (floorManager.CurrentFloorNumber + 1).ToString();
        FogOfWar.Initialize();
        FogOfWar.ForceUpdate();
        SaveGameSystem.instance?.SaveGame();
        yield return(new WaitForSeconds(1f));

        yield return(fader.Fade(SceneFader.FadeDirection.Out));               //Fade back in

        LoadingNewFloor = false;
    }
Beispiel #2
0
    public void GenerateMap()
    {
        if (!Application.isPlaying)
        {
            return;
        }

        float[,] noiseMap = NoiseGenerator.GenerateNoise(mapChunkSize, mapChunkSize, seed, noiseScale, octaves, persistance, lacunarity, offset);
        Color[]       colorMap   = new Color[mapChunkSize * mapChunkSize];
        TileTerrain[] terrainMap = new TileTerrain[(mapChunkSize - 1) * (mapChunkSize - 1)];


        for (int x = 0; x < mapChunkSize; x++)
        {
            for (int y = 0; y < mapChunkSize; y++)
            {
                if (useFallOff)
                {
                    noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - fallOffMap[x, y]);
                }

                float currentHeight = noiseMap[x, y];
                for (int i = 0; i < TerrainSettingsManager.Instance.regions.Length; i++)
                {
                    if (currentHeight <= TerrainSettingsManager.Instance.regions[i].height && currentHeight <= 1)
                    {
                        colorMap[y * mapChunkSize + x] = TerrainSettingsManager.Instance.regions[i].color;
                        if (x < (mapChunkSize - 1) && y < (mapChunkSize - 1))
                        {
                            terrainMap[y * (mapChunkSize - 1) + x] = TerrainSettingsManager.Instance.regions[i].type;
                        }
                        break;
                    }
                }
            }
        }

        RiverReturn river = RiverGenerator.GenerateRivers(noiseMap);

        int t;

        for (t = 0; t < river.riverPoints.Length; t++)
        {
            int x = (int)river.riverPoints[t].x;
            int y = (int)river.riverPoints[t].y;
            //Instantiate(GameObject.CreatePrimitive(PrimitiveType.Cube), new Vector3(y,5,x), Quaternion.identity);
            colorMap[y * mapChunkSize + x]         = TerrainSettingsManager.Instance.regions[9].color;
            terrainMap[y * (mapChunkSize - 1) + x] = TerrainSettingsManager.Instance.regions[9].type;
        }

        MapDisplay mapDisplay = FindObjectOfType <MapDisplay>();

        if (drawmode == DrawMode.noiseMap)
        {
            mapDisplay.DrawTexture(TextureGenerator.NoiseTextureFromHeightMap(noiseMap));
        }
        else if (drawmode == DrawMode.ColorMap)
        {
            mapDisplay.DrawTexture(TextureGenerator.TextureFromColorMap(colorMap, mapChunkSize, mapChunkSize));
        }
        else if (drawmode == DrawMode.Mesh)
        {
            map.Initialize(noiseMap, meshHeightMultiplier, meshHeightCurve, levelOfDetail, terrainMap);
            map.BuildMesh();
            GameTile[] tiles = map.GenerateGameTiles();
            map.ApplyTexture(TextureGenerator.TextureFromColorMap(colorMap, mapChunkSize, mapChunkSize));

            fogofwar.Initialize(map.Vertices, map.Triangles, map.Uvs, noiseMap.GetLength(0), noiseMap.GetLength(1));
            TerrainFeaturePlacer.Instance.PlaceFeatures();


            player.Instantiate(map.GetNearestTile(tiles[((mapChunkSize - 1) * (mapChunkSize - 1)) / 2], TileTerrain.Land, TileFeatures.Village, 30));
            fogofwar.ClearFog(player.Tile, 3);
        }
        else if (drawmode == DrawMode.FallOffMap)
        {
            mapDisplay.DrawTexture(TextureGenerator.NoiseTextureFromHeightMap(FallOffGenerator.GenerateFallOffMap(mapChunkSize)));
        }
    }
 // Use this for initialization
 void Start()
 {
     FogOfWar.Initialize();
 }