/// <summary>
        /// Converts a generated world into a legends generator world.
        /// </summary>
        /// <param name="generated">The generated world.</param>
        /// <returns>The legends generator world.</returns>
        private World ConvertToWorld(GeneratedWorld generated)
        {
            World world = new World()
            {
#pragma warning disable SA1101 // Prefix local calls with this. New C#9 feature.
                Grid = new WorldGrid(generated.Width, generated.Height),
#pragma warning restore SA1101 // Prefix local calls with this
            };

            for (int x = 0; x < generated.Width; x++)
            {
                for (int y = 0; y < generated.Height; y++)
                {
                    var genSquare = generated.Grid[x, y];

                    WorldSquare square = this.thingFactory.CreateWorldSquare(this.Random, x, y, this.GetDefinitionName(genSquare));

                    // Overwrite the attributes provided by the world generation process.
                    square.BaseAttributes[nameof(genSquare.Elevation)]   = genSquare.Elevation;
                    square.BaseAttributes[nameof(genSquare.Drainage)]    = genSquare.Drainage;
                    square.BaseAttributes[nameof(genSquare.Rainfall)]    = genSquare.Rainfall;
                    square.BaseAttributes[nameof(genSquare.Temperature)] = genSquare.Temperature;
                    square.BaseAttributes[nameof(genSquare.Evil)]        = genSquare.Evil;
                    square.BaseAttributes[nameof(genSquare.Savagery)]    = genSquare.Savagery;
                    square.BaseAttributes[nameof(genSquare.Materials)]   = genSquare.Materials;

                    world.Grid.GetSquare(x, y).SquareDefinition = square;
                }
            }

            return(world);
        }
예제 #2
0
        public override float GetScore(WorldSquare square)
        {
            if (square.elevation <= 0f)
            {
                return(-100f);
            }
            if (square.temperature < -10f)
            {
                return(0f);
            }
            if ((square.elevation < 1000f) ||
                (square.elevation > 3000f))
            {
                return(0f);
            }
            // TODO: debug.
            return(200);

            /*if (Rand.Value < 0.05f)
             * {
             *  return 100f;
             * }
             * else
             * {
             *  return -100f;
             * }*/
        }
예제 #3
0
 public override float GetScore(WorldSquare square)
 {
     if (square.elevation <= 0f)
     {
         return -100f;
     }
     if (square.temperature < -10f)
     {
         return 0f;
     }
     if ((square.elevation < 1000f)
         || (square.elevation > 3000f))
     {
         return 0f;
     }
     // TODO: debug.
     return 200;
     /*if (Rand.Value < 0.05f)
     {
         return 100f;
     }
     else
     {
         return -100f;
     }*/
 }
예제 #4
0
        // draw loop
        public virtual void Update()
        {
            if (inGame)
            {
                if (Input.GetKeyUp(KeyCode.F11))
                {
                    iconsEnabled = !iconsEnabled;

                    if (iconsEnabled)
                    {
                        Messages.Message(Translator.Translate("PSI.Enabled"), MessageSound.Standard);
                    }
                    else
                    {
                        Messages.Message(Translator.Translate("PSI.Disabled"), MessageSound.Standard);
                    }
                }

                worldScale = Screen.height / (2 * Camera.current.orthographicSize);
            }

            //  if (Input.GetKeyUp(KeyCode.RightControl))
            if (false)
            {
                IntVec2 wSize      = Find.World.Size;
                float   minTemp    = float.MaxValue;
                IntVec2 minTempPos = new IntVec2();


                for (int x = 0; x < wSize.x; x++)
                {
                    for (int z = 0; z < wSize.z; z++)
                    {
                        WorldSquare ws = Find.World.grid.Get(new IntVec2(x, z));
//                    if (ws.biome == BiomeDefOf.IceSheet)
                        //{
                        //ws.biome = BiomeDefOf.Tundra;
                        ws.temperature -= 1;
                        //}

/*                    if (ws != null)
 *                  {
 *                      if (ws.temperature < minTemp && ws.biome.canBuildBase == true)
 *                      {
 *                          minTemp = ws.temperature;
 *                          minTempPos = new IntVec2(x, z);
 *                          Log.Message(minTemp + "\t" + minTempPos.ToString());
 *                      }
 *                  }*/
                    }
                }
            }
        }