Ejemplo n.º 1
0
 public void assignMaterials(WorldMapGenerator generator)
 {
     int heightID = 0;
     for(int i = 0; i < generator.heightLookup.Length; i++){
         if(elevation < generator.heightLookup[i]){
             heightID = i;
             break;
         }
     }
     int moistureID = 0;
     for(int i = 0; i < generator.moistureLookup.Length; i++){
         if(moisture < generator.moistureLookup[i]){
             moistureID = i;
             break;
         }
     }
     int temperatureID = 0;
     for(int i = 0; i < generator.temperatureLookup.Length; i++){
         if(temperature < generator.temperatureLookup[i]){
             temperatureID = i;
             break;
         }
     }
     traversable = heightID != 0;
     matID = heightID + moistureID * generator.heightLookup.Length + temperatureID * generator.moistureLookup.Length * generator.heightLookup.Length;
 }
Ejemplo n.º 2
0
        void Awake()
        {
            Instance     = this;
            MapGenerator = GetComponent <WorldMapGenerator>();
            var infoObj = GameObject.FindWithTag("WorldDataInfo");

            if (infoObj != null)
            {
                worldData = infoObj.GetComponent <WorldDataInfo>();
                if (worldData == null)
                {
                    worldData = infoObj.AddComponent <WorldDataInfo>();
                }
            }
            else
            {
                infoObj     = new GameObject("WorldDataInfoObject");
                infoObj.tag = "WorldDataInfo";
                worldData   = infoObj.AddComponent <WorldDataInfo>();
            }
            DontDestroyOnLoad(infoObj);

            foreach (var preset in presets)
            {
                sectors.Add(preset.position, null);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Если размер мира 1*1 в зависимости от сида генерим тот или иной тестовый мир, иначе генерим по чсестному
        /// </summary>
        public Surface()
        {
            Ambient = new FColor(1f, 1f, 1f, 0.9f).Multiply(1.0f);

            switch (Constants.WORLD_MAP_SIZE)
            {
            case 1:
                var r1 = new TestSurfaceGenerator1x1(World.Rnd);
                m_worldMap = r1.Generate();
                City       = new SuperCity(this, new Point(0, 0));
                break;

            case 2:
                var r2 = new TestSurfaceGenerator2x2(World.Rnd);
                m_worldMap = r2.Generate();
                City       = new SuperCity(this, new Point(0, 0));
                break;

            default:
                var worldMapGenerator = new WorldMapGenerator(Constants.WORLD_MAP_SIZE, World.Rnd);
                m_worldMap = worldMapGenerator.Generate();
                if (Constants.WORLD_MAP_SIZE > 31)
                {
                    var cityBlockIds = worldMapGenerator.FindCityPlace((int)Math.Sqrt(Constants.WORLD_MAP_SIZE) / 2).ToArray();
                    foreach (var id in cityBlockIds)
                    {
                        m_worldMap[id.X, id.Y] = EMapBlockTypes.CITY;
                    }

                    City = new SuperCity(this, cityBlockIds.Select(_point => new Point(_point.X - Constants.WORLD_MAP_SIZE / 2, _point.Y - Constants.WORLD_MAP_SIZE / 2)).ToArray());
                }
                break;
            }
        }
Ejemplo n.º 4
0
 public void generate(WorldMapGenerator generator)
 {
     //!--WorldMapGenerator--!
     float xMax = generator.flatHex.size.x * generator.size.x;
     float yMax = generator.flatHex.size.z * 0.75f * generator.size.y;
     float fault = calcFault(xMax, yMax);
     erosion = calcPerlin(generator.erosionSeed, generator.erosionScale);
     moisture = calcPerlin(generator.moistureSeed, generator.moistureScale) * generator.moistureWeight + erosion * generator.moistureErosionWeight;
     continent = calcPerlin(generator.continentSeed, generator.continentScale);
     elevation = (continent * generator.continentWeight + erosion * generator.erosionWeight) * fault;
     temperature = (1 - position.z / yMax) * generator.temperatureLocationWeight + calcPerlin(generator.temperatureSeed, generator.temperatureScale) * generator.temperatureNoiseWeight;
 }
Ejemplo n.º 5
0
    public override void OnInspectorGUI()
    {
        WorldMapGenerator worldGen = (WorldMapGenerator)target;

        if (DrawDefaultInspector())
        {
            ;
        }
        {
            if (worldGen.autoUpdate)
            {
                worldGen.BuildMap();
            }
        }
        if (GUILayout.Button("Build World Map"))
        {
            worldGen.BuildMap();
        }

        /*
         * if (GUILayout.Button("Save Settings"))
         * {
         *
         *  binaryData.Write("hmsettings.bin", worldGen.hmSettings);
         *  binaryData.Write("thischunksettings.bin", worldGen.thisChunk);
         *  binaryData.Write("mmsettings.bin", worldGen.mmSettings);
         *
         *  worldGen.SaveSettings();
         * }
         * if (GUILayout.Button("Load Settings"))
         * {
         *
         *  heightMapSettings hmSettings =binaryData.Read<heightMapSettings>("hmsettings.bin");
         *  worldGen.hmSettings = hmSettings;
         *  worldChunkSettings thisChunk = binaryData.Read<worldChunkSettings>("thischunksettings.bin");
         *  moistureMapSettings mmSettings = binaryData.Read<moistureMapSettings>("mmsettings.bin");
         *
         *  worldGen.LoadSettings();
         * }
         */
        if (GUILayout.Button("Save PNG"))
        {
            worldGen.SavePng();
        }
    }
Ejemplo n.º 6
0
    // Start is called before the first frame update
    void Start()
    {
        instance = this;
        gameMap  = new Dictionary <Vector2Int, GameTile>();

        // Make up some players to spawn
        Player player1 = new Player();

        player1.nationName = "The Union";
        player1.color      = Color.blue;

        Player player2 = new Player();

        player2.color      = Color.red;
        player2.nationName = "The Confederacy";

        startingPlayers = new List <Player> {
            player1, player2
        };

        WorldMapGenerator.StartGeneration(WORLD_X, WORLD_Y, UnityEngine.Random.value * 1000, this.startingPlayers.Count, OnGenFinished, this);
    }