public static SimulationConfiguration LoadConfigOrDefault()
 {
     if (File.Exists("Simulation.cfg"))
     {
         string                  sourceText       = File.ReadAllText("Simulation.cfg");
         Deserializer            yamlDeserializer = new Deserializer();
         SimulationConfiguration deserialized     = yamlDeserializer.Deserialize <SimulationConfiguration>(sourceText);
         CheckLoadedConfig(deserialized);
         // Write config with updated values
         SerializerBuilder builder = new SerializerBuilder();
         builder.EmitDefaults();
         Serializer yamlSerializer = builder.Build();
         string     serialized     = yamlSerializer.Serialize(deserialized);
         File.WriteAllText("Simulation.cfg", serialized);
         return(deserialized);
     }
     else
     {
         // Write out default config if there is no config for easier adjustment
         SerializerBuilder builder = new SerializerBuilder();
         builder.EmitDefaults();
         Serializer yamlSerializer = builder.Build();
         string     serialized     = yamlSerializer.Serialize(DefaultConfig);
         File.WriteAllText("Simulation.cfg", serialized);
         return(DefaultConfig);
     }
 }
 public static void CheckLoadedConfig(SimulationConfiguration config)
 {
     if (config.TickInterval <= 0)
     {
         Console.WriteLine("Reset TickInterval in config from {0} to {1}", config.TickInterval, 0.01f);
         config.TickInterval = 0.01f;
     }
 }
        public static void CheckLoadedConfig(SimulationConfiguration config)
        {
            if (config.TickInterval <= 0)
            {
                Console.WriteLine("Reset TickInterval in config from {0} to {1}", config.TickInterval, 0.01f);
                config.TickInterval = 0.01f;
            }

            if (config.NumCreatureTasks == 0)
            {
                config.NumCreatureTasks = Environment.ProcessorCount;
            }
            config.NumberOfStartNeuronLayers = Math.Max(1, config.NumberOfStartNeuronLayers);
            config.MinCreatures             = Math.Max(1, config.MinCreatures);
            config.TileMapSizeX             = Math.Max(1, config.TileMapSizeX);
            config.TileMapSizeY             = Math.Max(1, config.TileMapSizeY);
            config.MateBrainPercentage      = Math.Max(0.0f, Math.Min(1.0f, config.MateBrainPercentage));
            config.AddRemoveLayerPercentage = Math.Max(0.0f, Math.Min(1.0f, config.AddRemoveLayerPercentage));
            config.WaterPercentage          = Math.Max(0.0f, Math.Min(1.0f, config.WaterPercentage));
        }