示例#1
0
    public void Generate(string seed = null)
    {
        if (string.IsNullOrEmpty(seed))
        {
            seed = RandomUtilities.GenerateSeed();
        }

        Seed = seed;
        seed = seed.ToLower();
        Random.InitState(seed.GetHashCode());
        CreateChunks();

        foreach (ITerrainProcessor process in terrainProcesses)
        {
            process.Generate(WorldData);
        }

        //terrainProcessor.Execute(WorldData);
        //Table generatedData = Lua.GetVariable("worldData").Table;
        //for (int x = 0; x < WorldData.Width; ++x)
        //{
        //    for (int y = 0; y < WorldData.Height; ++y)
        //    {
        //        int key = x * WorldData.Height + y;
        //        DynValue value = generatedData.Parse(key);

        //        if (value.IsNotNil())
        //        {
        //            WorldData.SetTileTypeAt(x, y, TileType.Grass/*(TileType)generatedData[key]*/);
        //        }
        //    }
        //}

        //Lua.RunSourceCode("worldData = nil; collectgarbage()");
        Save("moo.data");
    }