Пример #1
0
 public void Reset()
 {
     this.seedString     = GenText.RandomSeedString();
     this.planetCoverage = (float)((Prefs.DevMode && UnityData.isEditor) ? 0.05000000074505806 : 0.30000001192092896);
     this.rainfall       = OverallRainfall.Normal;
     this.temperature    = OverallTemperature.Normal;
 }
Пример #2
0
 public void Reset()
 {
     this.seedString     = GenText.RandomSeedString();
     this.planetCoverage = ((Prefs.DevMode && UnityData.isEditor) ? 0.05f : 0.3f);
     this.rainfall       = OverallRainfall.Normal;
     this.temperature    = OverallTemperature.Normal;
 }
Пример #3
0
 public void Reset()
 {
     _seedString     = GenText.RandomSeedString();
     _planetCoverage = Prefs.DevMode && UnityData.isEditor ? 0.05f : 0.3f;
     _intCoverage    = Prefs.DevMode && UnityData.isEditor ? 5 : 30;
     _rainfall       = OverallRainfall.Normal;
     _temperature    = OverallTemperature.Normal;
 }
Пример #4
0
 public void Reset()
 {
     seedString     = GenText.RandomSeedString();
     planetCoverage = ((!Prefs.DevMode || !UnityData.isEditor) ? 0.3f : 0.05f);
     rainfall       = OverallRainfall.Normal;
     temperature    = OverallTemperature.Normal;
     population     = OverallPopulation.Normal;
 }
Пример #5
0
        public override void DoWindowContents(Rect rect)
        {
            DrawPageTitle(rect);
            GUI.BeginGroup(GetMainRect(rect));
            Text.Font = GameFont.Small;
            var num = 0f;

            Widgets.Label(new Rect(0f, num, 200f, 30f), "WorldSeed".Translate());
            var rect2 = new Rect(200f, num, 200f, 30f);

            _seedString = Widgets.TextField(rect2, _seedString);
            num        += 40f;
            var rect3 = new Rect(200f, num, 200f, 30f);

            if (Widgets.ButtonText(rect3, "RandomizeSeed".Translate()))
            {
                SoundDefOf.Tick_Tiny.PlayOneShotOnCamera();
                _seedString = GenText.RandomSeedString();
            }

            num      += 40f;
            Text.Font = GameFont.Tiny;
            var textAnchorBackup = Text.Anchor;

            Text.Anchor = TextAnchor.MiddleCenter;
            Widgets.Label(new Rect(0, num, rect3.xMax, 20f), "[Prepare Landing] Precise World Generation %");
            Text.Font   = GameFont.Small;
            Text.Anchor = textAnchorBackup;

            num += 20f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), $"{"PlanetCoverage".Translate()} [1,100]%");
            var rect4 = new Rect(200f, num, 200f, 30f);

            //
            TextFieldNumericCoverage(rect4.LeftHalf());
            ButtonCoverage(rect4.RightHalf());
            //

            TooltipHandler.TipRegion(new Rect(0f, num, rect4.xMax, rect4.height), "PlanetCoverageTip".Translate());
            num += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetRainfall".Translate());
            var rect5 = new Rect(200f, num, 200f, 30f);

            _rainfall = (OverallRainfall)Mathf.RoundToInt(Widgets.HorizontalSlider(rect5, (float)_rainfall, 0f,
                                                                                   OverallRainfallUtility.EnumValuesCount - 1, true, "PlanetRainfall_Normal".Translate(),
                                                                                   "PlanetRainfall_Low".Translate(), "PlanetRainfall_High".Translate(), 1f));
            num += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetTemperature".Translate());
            var rect6 = new Rect(200f, num, 200f, 30f);

            _temperature = (OverallTemperature)Mathf.RoundToInt(Widgets.HorizontalSlider(rect6, (float)_temperature,
                                                                                         0f, OverallTemperatureUtility.EnumValuesCount - 1, true, "PlanetTemperature_Normal".Translate(),
                                                                                         "PlanetTemperature_Low".Translate(), "PlanetTemperature_High".Translate(), 1f));
            GUI.EndGroup();
            DoBottomButtons(rect, "WorldGenerate".Translate(), "Reset".Translate(), Reset);
        }
Пример #6
0
 public static void ShortSetupForQuickTestPlay()
 {
     //частичная копия
     Current.Game          = new Game();
     Current.Game.InitData = new GameInitData();
     Current.Game.Scenario = ScenarioDefOf.Crashlanded.scenario;
     Find.Scenario.PreConfigure();
     Current.Game.storyteller = new Storyteller(StorytellerDefOf.Cassandra, DifficultyDefOf.Rough);
     Current.Game.World       = WorldGenerator.GenerateWorld(0.05f, GenText.RandomSeedString(), OverallRainfall.Normal, OverallTemperature.Normal);
 }
 public void Reset()
 {
     this.seedString                 = GenText.RandomSeedString();
     this.planetCoverage             = 0.3f;
     this.worldPreset                = "Planets.Vanilla";
     Planets_GameComponent.axialTilt = AxialTilt.Normal;
     Planets_GameComponent.worldType = WorldType.Vanilla;
     Planets_GameComponent.subcount  = 10;
     this.rainfallMod                = RainfallModifier.Normal;
     this.temperature                = OverallTemperature.Normal;
 }
Пример #8
0
 private static void SetupForQuickTestPlay()
 {
     Current.ProgramState  = ProgramState.Entry;
     Current.Game          = new Game();
     Current.Game.InitData = new GameInitData();
     Current.Game.Scenario = ScenarioDefOf.Crashlanded.scenario;
     Find.Scenario.PreConfigure();
     Current.Game.storyteller = new Storyteller(StorytellerDefOf.Cassandra, DifficultyDefOf.Rough);
     Current.Game.World       = WorldGenerator.GenerateWorld(0.05f, GenText.RandomSeedString(), OverallRainfall.Normal, OverallTemperature.Normal, OverallPopulation.Normal);
     Find.GameInitData.ChooseRandomStartingTile();
     Find.GameInitData.mapSize = 150;
     Find.GameInitData.PrepForMapGen();
     Find.Scenario.PreMapGenerate();
 }
        public void Randomize()
        {
            this.seedString = GenText.RandomSeedString();

            Planets_GameComponent.axialTilt = Planets_Random.GetRandomAxialTilt();
            Planets_GameComponent.worldType = Planets_Random.GetRandomWorldType();
            this.rainfallMod        = Planets_Random.GetRandomRainfallModifier();
            this.temperature        = Planets_Random.GetRandomTemperature();
            this.population         = Planets_Random.GetRandomPopulation();
            this.CurrentWorldPreset = "Planets.Custom";

            Controller.Settings.randomPlanet = true;

            if (this.CanDoNext())
            {
                this.DoNext();
            }
        }
Пример #10
0
        public override void DoWindowContents(Rect rect)
        {
            base.DrawPageTitle(rect);
            GUI.BeginGroup(base.GetMainRect(rect, 0f, false));
            Text.Font = GameFont.Small;
            float num = 0f;

            Widgets.Label(new Rect(0f, num, 200f, 30f), "WorldSeed".Translate());
            Rect rect2 = new Rect(200f, num, 200f, 30f);

            this.seedString = Widgets.TextField(rect2, this.seedString);
            num            += 40f;
            Rect rect3 = new Rect(200f, num, 200f, 30f);

            if (Widgets.ButtonText(rect3, "RandomizeSeed".Translate(), true, false, true))
            {
                SoundDefOf.Tick_Tiny.PlayOneShotOnCamera(null);
                this.seedString = GenText.RandomSeedString();
            }
            num += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetCoverage".Translate());
            Rect rect4 = new Rect(200f, num, 200f, 30f);

            if (Widgets.ButtonText(rect4, this.planetCoverage.ToStringPercent(), true, false, true))
            {
                List <FloatMenuOption> list = new List <FloatMenuOption>();
                float[] array = (!Prefs.DevMode) ? Page_CreateWorldParams.PlanetCoverages : Page_CreateWorldParams.PlanetCoveragesDev;
                for (int i = 0; i < array.Length; i++)
                {
                    float  coverage = array[i];
                    string text     = coverage.ToStringPercent();
                    if (coverage <= 0.1f)
                    {
                        text += " (dev)";
                    }
                    FloatMenuOption item = new FloatMenuOption(text, delegate
                    {
                        if (this.planetCoverage != coverage)
                        {
                            this.planetCoverage = coverage;
                            if (this.planetCoverage == 1f)
                            {
                                Messages.Message("MessageMaxPlanetCoveragePerformanceWarning".Translate(), MessageTypeDefOf.CautionInput, false);
                            }
                        }
                    }, MenuOptionPriority.Default, null, null, 0f, null, null);
                    list.Add(item);
                }
                Find.WindowStack.Add(new FloatMenu(list));
            }
            TooltipHandler.TipRegion(new Rect(0f, num, rect4.xMax, rect4.height), "PlanetCoverageTip".Translate());
            num += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetRainfall".Translate());
            Rect rect5 = new Rect(200f, num, 200f, 30f);

            this.rainfall = (OverallRainfall)Mathf.RoundToInt(Widgets.HorizontalSlider(rect5, (float)this.rainfall, 0f, (float)(OverallRainfallUtility.EnumValuesCount - 1), true, "PlanetRainfall_Normal".Translate(), "PlanetRainfall_Low".Translate(), "PlanetRainfall_High".Translate(), 1f));
            num          += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetTemperature".Translate());
            Rect rect6 = new Rect(200f, num, 200f, 30f);

            this.temperature = (OverallTemperature)Mathf.RoundToInt(Widgets.HorizontalSlider(rect6, (float)this.temperature, 0f, (float)(OverallTemperatureUtility.EnumValuesCount - 1), true, "PlanetTemperature_Normal".Translate(), "PlanetTemperature_Low".Translate(), "PlanetTemperature_High".Translate(), 1f));
            GUI.EndGroup();
            base.DoBottomButtons(rect, "WorldGenerate".Translate(), "Reset".Translate(), new Action(this.Reset), true, true);
        }
        public override void DoWindowContents(Rect rect)
        {
            base.DrawPageTitle(rect);
            GUI.BeginGroup(base.GetMainRect(rect, 0f, false));
            Text.Font = GameFont.Small;
            //
            // PLANET SEED
            //
            float single = 0f;

            Widgets.Label(new Rect(0f, single, 200f, 30f), "WorldSeed".Translate());
            Rect rect1 = new Rect(200f, single, 200f, 30f);

            this.seedString = Widgets.TextField(rect1, this.seedString);
            single         += 40f;
            Rect rect2 = new Rect(200f, single, 200f, 30f);

            if (Widgets.ButtonText(rect2, "RandomizeSeed".Translate(), true, false, true))
            {
                SoundDefOf.Tick_Tiny.PlayOneShotOnCamera(null);
                this.seedString = GenText.RandomSeedString();
            }
            //
            // PLANET SIZE (IF "MY LITTLE PLANET" IS IN USE)
            //
            if (ModsConfig.ActiveModsInLoadOrder.Any(mod => mod.Name.Contains("My Little Planet")))
            {
                single += 80f;
                Widgets.Label(new Rect(0f, single, 200f, 30f), "MLPWorldPlanetSize".Translate());
                Rect rect7 = new Rect(200f, single, 200f, 30f);
                Planets_GameComponent.subcount = Mathf.RoundToInt(Widgets.HorizontalSlider(rect7, Planets_GameComponent.subcount, 6f, 10f, true, null, "MLPWorldTiny".Translate(), "MLPWorldDefault".Translate(), 1f));
            }
            //
            // PLANET COVERAGE
            //
            single += 80f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "PlanetCoverage".Translate());
            Rect rect3 = new Rect(200f, single, 200f, 30f);

            if (Widgets.ButtonText(rect3, this.planetCoverage.ToStringPercent(), true, false, true))
            {
                List <FloatMenuOption> floatMenuOptions = new List <FloatMenuOption>();
                float[] singleArray = Planets_CreateWorldParams.PlanetCoverages;
                for (int i = 0; i < (int)singleArray.Length; i++)
                {
                    float           single1         = singleArray[i];
                    string          stringPercent   = single1.ToStringPercent();
                    FloatMenuOption floatMenuOption = new FloatMenuOption(stringPercent, () => {
                        if (this.planetCoverage != single1)
                        {
                            this.planetCoverage = single1;
                            if (this.planetCoverage < 0.15f)
                            {
                                Messages.Message("Planets.MessageLowPlanetCoverageWarning".Translate(), MessageTypeDefOf.CautionInput, false);
                            }
                            if (this.planetCoverage > 0.7f)
                            {
                                Messages.Message("MessageMaxPlanetCoveragePerformanceWarning".Translate(), MessageTypeDefOf.CautionInput, false);
                            }
                        }
                    }, MenuOptionPriority.Default, null, null, 0f, null, null);
                    floatMenuOptions.Add(floatMenuOption);
                }
                Find.WindowStack.Add(new FloatMenu(floatMenuOptions));
            }
            TooltipHandler.TipRegion(new Rect(0f, single, rect3.xMax, rect3.height), "PlanetCoverageTip".Translate());
            //
            // WORLD TYPE PRESETS
            //
            single += 80f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "Planets.WorldPresets".Translate());
            Rect rect8 = new Rect(200f, single, 200f, 30f);

            if (Widgets.ButtonText(rect8, this.worldPreset.Translate(), true, false, true))
            {
                List <FloatMenuOption> floatMenuOptions = new List <FloatMenuOption>();
                string[] singleArray = Planets_CreateWorldParams.WorldPresets;
                for (int i = 0; i < (int)singleArray.Length; i++)
                {
                    string          single1           = singleArray[i];
                    string          single1Translated = single1.Translate();
                    FloatMenuOption floatMenuOption   = new FloatMenuOption(single1Translated, () => {
                        if (this.worldPreset != single1)
                        {
                            this.worldPreset = single1;
                            if (this.worldPreset == "Planets.Vanilla")
                            {
                                Planets_GameComponent.worldType = WorldType.Vanilla;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.Normal;
                                this.temperature = OverallTemperature.Normal;
                            }
                            else if (this.worldPreset == "Planets.Desert")
                            {
                                Planets_GameComponent.worldType = WorldType.Dry;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.LittleBitLess;
                                this.temperature = OverallTemperature.LittleBitWarmer;
                            }
                            else if (this.worldPreset == "Planets.Frozen")
                            {
                                Planets_GameComponent.worldType = WorldType.VeryDry;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.LittleBitLess;
                                this.temperature = OverallTemperature.Cold;
                            }
                            else if (this.worldPreset == "Planets.Earthlike")
                            {
                                Planets_GameComponent.worldType = WorldType.Earthlike;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.Normal;
                                this.temperature = OverallTemperature.Normal;
                            }
                            else if (this.worldPreset == "Planets.Forest")
                            {
                                Planets_GameComponent.worldType = WorldType.Vanilla;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.LittleBitMore;
                                this.temperature = OverallTemperature.LittleBitColder;
                            }
                            else if (this.worldPreset == "Planets.Iceball")
                            {
                                Planets_GameComponent.worldType = WorldType.Vanilla;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.Normal;
                                this.temperature = OverallTemperature.VeryCold;
                            }
                            else if (this.worldPreset == "Planets.Jungle")
                            {
                                Planets_GameComponent.worldType = WorldType.Earthlike;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.LittleBitMore;
                                this.temperature = OverallTemperature.LittleBitWarmer;
                            }
                            else if (this.worldPreset == "Planets.Ocean")
                            {
                                Planets_GameComponent.worldType = WorldType.Waterworld;
                                Planets_GameComponent.axialTilt = AxialTilt.Normal;
                                this.rainfallMod = RainfallModifier.Normal;
                                this.temperature = OverallTemperature.Normal;
                            }
                            else
                            {
                            }
                        }
                    }, MenuOptionPriority.Default, null, null, 0f, null, null);
                    floatMenuOptions.Add(floatMenuOption);
                }
                Find.WindowStack.Add(new FloatMenu(floatMenuOptions));
            }
            TooltipHandler.TipRegion(new Rect(0f, single, rect8.xMax, rect8.height), "Planets.WorldPresetsTip".Translate());
            //
            // OCEAN SLIDER
            //
            single += 80f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "Planets.OceanType".Translate());
            Rect      rect6          = new Rect(200f, single, 200f, 30f);
            WorldType worldTypeCheck = Planets_GameComponent.worldType;

            Planets_GameComponent.worldType = (WorldType)Mathf.RoundToInt(Widgets.HorizontalSlider(rect6, (float)Planets_GameComponent.worldType, 0f, (float)(WorldTypeUtility.EnumValuesCount - 1), true, "Planets.OceanType_Earthlike".Translate(), "Planets.OceanType_Waterworld".Translate(), "Planets.OceanType_Barren".Translate(), 1f));
            if (Planets_GameComponent.worldType != worldTypeCheck)
            {
                this.worldPreset = "Planets.Custom";
            }
            TooltipHandler.TipRegion(new Rect(0f, single, rect6.xMax, rect6.height), "Planets.OceanTypeTip".Translate());
            //
            // RAINFALL SLIDER
            //
            single += 40f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "PlanetRainfall".Translate());
            Rect             rect4            = new Rect(200f, single, 200f, 30f);
            RainfallModifier rainfallModCheck = this.rainfallMod;

            this.rainfallMod = (RainfallModifier)Mathf.RoundToInt(Widgets.HorizontalSlider(rect4, (float)this.rainfallMod, 0f, (float)(RainfallModifierUtility.EnumValuesCount - 1), true, "PlanetRainfall_Normal".Translate(), "PlanetRainfall_Low".Translate(), "PlanetRainfall_High".Translate(), 1f));
            if (this.rainfallMod != rainfallModCheck)
            {
                this.worldPreset = "Planets.Custom";
            }
            TooltipHandler.TipRegion(new Rect(0f, single, rect4.xMax, rect4.height), "Planets.RainfallTip".Translate());
            //
            // TEMPERATURE SLIDER
            //
            single += 40f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "PlanetTemperature".Translate());
            Rect rect5 = new Rect(200f, single, 200f, 30f);
            OverallTemperature temperatureCheck = this.temperature;

            this.temperature = (OverallTemperature)Mathf.RoundToInt(Widgets.HorizontalSlider(rect5, (float)this.temperature, 0f, (float)(OverallTemperatureUtility.EnumValuesCount - 1), true, "PlanetTemperature_Normal".Translate(), "PlanetTemperature_Low".Translate(), "PlanetTemperature_High".Translate(), 1f));
            if (this.temperature != temperatureCheck)
            {
                this.worldPreset = "Planets.Custom";
            }
            //
            // AXIAL TILT
            //
            single += 40f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "Planets.AxialTilt".Translate());
            Rect      rect9          = new Rect(200f, single, 200f, 30f);
            AxialTilt axialTiltCheck = Planets_GameComponent.axialTilt;

            Planets_GameComponent.axialTilt = (AxialTilt)Mathf.RoundToInt(Widgets.HorizontalSlider(rect9, (float)Planets_GameComponent.axialTilt, 0f, (float)(AxialTiltUtility.EnumValuesCount - 1), true, "Planets.AxialTilt_Normal".Translate(), "Planets.AxialTilt_Low".Translate(), "Planets.AxialTilt_High".Translate(), 1f));
            if (Planets_GameComponent.axialTilt != axialTiltCheck)
            {
                this.worldPreset = "Planets.Custom";
            }
            TooltipHandler.TipRegion(new Rect(0f, single, rect9.xMax, rect9.height), "Planets.AxialTiltTip".Translate());
            GUI.EndGroup();
            //
            // BOTTOM BUTTONS
            //
            base.DoBottomButtons(rect, "WorldGenerate".Translate(), "Planets.Random".Translate(), new Action(this.Randomize), true, true);
        }
Пример #12
0
 private void RandomizeSeedAndScenario()
 {
     this.seed    = GenText.RandomSeedString();
     this.curScen = ScenarioMaker.GenerateNewRandomScenario(this.seed);
 }
Пример #13
0
        public static void GenerateEmptyMap()
        {
            LongEventHandler.QueueLongEvent(delegate()
            {
                var game = new Game
                {
                    InitData = new GameInitData()
                    {
                        mapSize = 75, permadeath = false
                    },
                    Scenario    = ScenarioDefOf.Crashlanded.scenario,
                    storyteller = new Storyteller(StorytellerDefOf.Cassandra, DifficultyDefOf.Rough)
                };
                Find.Scenario.PreConfigure();
                Current.Game = game;

                Find.GameInitData.PrepForMapGen();
                Find.GameInitData.startedFromEntry = true;
                Find.Scenario.PreMapGenerate();

                Find.GameInitData.ResetWorldRelatedMapInitData();
                Current.Game.World = WorldGenerator.GenerateWorld(0.05f, GenText.RandomSeedString(), OverallRainfall.Normal, OverallTemperature.Normal, OverallPopulation.Normal);
                MemoryUtility.UnloadUnusedUnityAssets();
                Find.World.renderer.RegenerateAllLayersNow();

                MemoryUtility.UnloadUnusedUnityAssets();

                Current.ProgramState = ProgramState.MapInitializing;

                var mapSize = new IntVec3(game.InitData.mapSize, 1, game.InitData.mapSize);
                game.World.info.initialMapSize = mapSize;
                if (game.InitData.permadeath)
                {
                    game.Info.permadeathMode           = true;
                    game.Info.permadeathModeUniqueName = PermadeathModeUtility.GeneratePermadeathSaveName();
                }

                game.tickManager.gameStartAbsTick = GenTicks.ConfiguredTicksAbsAtGameStart;

                _ = Find.Scenario.parts.RemoveAll(part => part is ScenPart_GameStartDialog);
                var arrivalMethod    = Find.Scenario.AllParts.OfType <ScenPart_PlayerPawnsArriveMethod>().First();
                arrivalMethod.method = PlayerPawnsArriveMethod.Standing;

                var tile = TileFinder.RandomStartingTile();

                Find.GameInitData.startingAndOptionalPawns.Clear();

                for (var i = 1; i <= 3; i++)
                {
                    var pawn = StartingPawnUtility.NewGeneratedStartingPawn();
                    pawn.playerSettings.hostilityResponse = HostilityResponseMode.Ignore;
                    DefDatabase <SkillDef> .AllDefsListForReading.Do(skillDef => pawn.skills.GetSkill(skillDef).EnsureMinLevelWithMargin(1));
                    Find.GameInitData.startingAndOptionalPawns.Add(pawn);
                }

                var settlement = (Settlement)WorldObjectMaker.MakeWorldObject(WorldObjectDefOf.Settlement);
                settlement.SetFaction(Find.GameInitData.playerFaction);
                settlement.Tile = tile;
                settlement.Name = NameGenerator.GenerateName(Faction.OfPlayer.def.factionNameMaker);
                Find.WorldObjects.Add(settlement);

                Current.Game.CurrentMap = MapGenerator.GenerateMap(mapSize, settlement, settlement.MapGeneratorDef, settlement.ExtraGenStepDefs, null);
                PawnUtility.GiveAllStartingPlayerPawnsThought(ThoughtDefOf.NewColonyOptimism);

                game.FinalizeInit();
                game.playSettings.useWorkPriorities = true;

                Find.CameraDriver.JumpToCurrentMapLoc(MapGenerator.PlayerStartSpot);
                Find.CameraDriver.ResetSize();
                Find.Scenario.PostGameStart();

                foreach (var researchProjectDef in DefDatabase <ResearchProjectDef> .AllDefs)
                {
                    game.researchManager.FinishProject(researchProjectDef, false, null);
                }

                GameComponentUtility.StartedNewGame();
                game.InitData = null;
            }, "GeneratingMap", true, new Action <Exception>(GameAndMapInitExceptionHandlers.ErrorWhileGeneratingMap), true);
            LongEventHandler.QueueLongEvent(delegate()
            {
                ScreenFader.SetColor(Color.black);
                ScreenFader.StartFade(Color.clear, 0.5f);
            }, null, false, null, true);
        }
Пример #14
0
        public override void DoWindowContents(Rect rect)
        {
            base.DrawPageTitle(rect);
            GUI.BeginGroup(base.GetMainRect(rect, 0f, false));
            Text.Font = GameFont.Small;
            float single = 0f;

            Widgets.Label(new Rect(0f, single, 200f, 30f), "WorldSeed".Translate());
            Rect rect1 = new Rect(200f, single, 200f, 30f);

            this.seedString = Widgets.TextField(rect1, this.seedString);
            single          = single + 40f;
            Rect rect2 = new Rect(200f, single, 200f, 30f);

            if (Widgets.ButtonText(rect2, "RandomizeSeed".Translate(), true, false, true))
            {
                SoundDefOf.TickTiny.PlayOneShotOnCamera(null);
                this.seedString = GenText.RandomSeedString();
            }
            single = single + 40f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "PlanetCoverage".Translate());
            Rect rect3 = new Rect(200f, single, 200f, 30f);

            if (Widgets.ButtonText(rect3, this.planetCoverage.ToStringPercent(), true, false, true))
            {
                List <FloatMenuOption> floatMenuOptions = new List <FloatMenuOption>();
                float[] singleArray = (!Prefs.DevMode ? ProCWP.PlanetCoverages : ProCWP.PlanetCoveragesDev);
                for (int i = 0; i < (int)singleArray.Length; i++)
                {
                    float  single1       = singleArray[i];
                    string stringPercent = single1.ToStringPercent();
                    if (single1 <= 0.1f)
                    {
                        stringPercent = string.Concat(stringPercent, " (dev)");
                    }
                    FloatMenuOption floatMenuOption = new FloatMenuOption(stringPercent, () => {
                        if (this.planetCoverage != single1)
                        {
                            this.planetCoverage = single1;
                            if (this.planetCoverage == 1f)
                            {
                                Messages.Message("MessageMaxPlanetCoveragePerformanceWarning".Translate(), MessageSound.Standard);
                            }
                        }
                    }, MenuOptionPriority.Default, null, null, 0f, null, null);
                    floatMenuOptions.Add(floatMenuOption);
                }
                Find.WindowStack.Add(new FloatMenu(floatMenuOptions));
            }
            TooltipHandler.TipRegion(new Rect(0f, single, rect3.xMax, rect3.height), "PlanetCoverageTip".Translate());
            single = single + 40f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "PlanetRainfall".Translate());
            Rect rect4 = new Rect(200f, single, 200f, 30f);

            this.rainfall = (OverallRainfall)Mathf.RoundToInt(Widgets.HorizontalSlider(rect4, (float)this.rainfall, 0f, (float)(OverallRainfallUtility.EnumValuesCount - 1), true, "PlanetRainfall_Normal".Translate(), "PlanetRainfall_Low".Translate(), "PlanetRainfall_High".Translate(), 1f));
            single        = single + 40f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "PlanetTemperature".Translate());
            Rect rect5 = new Rect(200f, single, 200f, 30f);

            this.temperature = (OverallTemperature)Mathf.RoundToInt(Widgets.HorizontalSlider(rect5, (float)this.temperature, 0f, (float)(OverallTemperatureUtility.EnumValuesCount - 1), true, "PlanetTemperature_Normal".Translate(), "PlanetTemperature_Low".Translate(), "PlanetTemperature_High".Translate(), 1f));
            GUI.EndGroup();
            base.DoBottomButtons(rect, "WorldGenerate".Translate(), "Reset".Translate(), new Action(this.Reset), true);
        }
        public override void DoWindowContents(Rect rect)
        {
            base.DrawPageTitle(rect);
            GUI.BeginGroup(base.GetMainRect(rect, 0f, false));
            Text.Font = GameFont.Small;
            //
            // PLANET SEED
            //
            float single = 0f;

            Widgets.Label(new Rect(0f, single, 200f, 30f), "WorldSeed".Translate());
            Rect rect1 = new Rect(200f, single, 200f, 30f);

            this.seedString = Widgets.TextField(rect1, this.seedString);
            single         += 40f;
            Rect rect2 = new Rect(200f, single, 200f, 30f);

            if (Widgets.ButtonText(rect2, "RandomizeSeed".Translate(), true, false, true))
            {
                SoundDefOf.Tick_Tiny.PlayOneShotOnCamera(null);
                this.seedString = GenText.RandomSeedString();
            }
            //
            // PLANET SIZE (IF "MY LITTLE PLANET" IS IN USE)
            //
            if (ModsConfig.ActiveModsInLoadOrder.Any(mod => mod.Name.Contains("My Little Planet")))
            {
                single += 80f;
                Widgets.Label(new Rect(0f, single, 200f, 30f), "MLPWorldPlanetSize".Translate());
                Rect rect7 = new Rect(200f, single, 200f, 30f);
                Planets_GameComponent.subcount = Mathf.RoundToInt(Widgets.HorizontalSlider(rect7, Planets_GameComponent.subcount, 6f, 10f, true, null, "MLPWorldTiny".Translate(), "MLPWorldDefault".Translate(), 1f));
            }
            //
            // PLANET COVERAGE
            //
            single += 80f;
            Widgets.Label(new Rect(0f, single, 200f, 30f), "PlanetCoverage".Translate());
            Rect rect3 = new Rect(200f, single, 200f, 30f);

            if (Widgets.ButtonText(rect3, this.planetCoverage.ToStringPercent(), true, false, true))
            {
                List <FloatMenuOption> floatMenuOptions = new List <FloatMenuOption>();
                float[] singleArray = Planets_CreateWorldParams.PlanetCoverages;
                for (int i = 0; i < (int)singleArray.Length; i++)
                {
                    float           single1         = singleArray[i];
                    string          stringPercent   = single1.ToStringPercent();
                    FloatMenuOption floatMenuOption = new FloatMenuOption(stringPercent, () =>
                    {
                        if (this.planetCoverage != single1)
                        {
                            this.planetCoverage = single1;
                            if (this.planetCoverage < 0.15f)
                            {
                                Messages.Message("Planets.MessageLowPlanetCoverageWarning".Translate(), MessageTypeDefOf.CautionInput, false);
                            }
                            if (this.planetCoverage > 0.7f)
                            {
                                Messages.Message("MessageMaxPlanetCoveragePerformanceWarning".Translate(), MessageTypeDefOf.CautionInput, false);
                            }
                        }
                    }, MenuOptionPriority.Default, null, null, 0f, null, null);
                    floatMenuOptions.Add(floatMenuOption);
                }
                Find.WindowStack.Add(new FloatMenu(floatMenuOptions));
            }
            TooltipHandler.TipRegion(new Rect(0f, single, rect3.xMax, rect3.height), "PlanetCoverageTip".Translate());
            //
            // WORLD TYPE PRESETS
            //
            single += 80f;
            DoWorldPresetsSelection(single);


            {
                single += 80f;
                DoSeaLevelSlider(single);

                single += 40f;
                DoRainfallSlider(single);

                single += 40f;
                DoTemperatureSlider(single);

                single += 40f;
                DoAxialTiltSlider(single);

                // Faction Control will override population, so disable this slider if Faction Control is enabled
                if (Controller.FactionControlSettingsMI == null)
                {
                    single += 40f;
                    DoPopulationSlider(single);
                }
            }
            GUI.EndGroup();

            //
            // BOTTOM BUTTONS
            //
            // Add Faction Control button
            if (Controller.FactionControlSettingsMI != null)
            {
                Text.Font = GameFont.Small;
                if (Widgets.ButtonText(new Rect(0, rect.yMax - 78f, 150, 32), "RFC.FactionControlName".Translate()))
                {
                    Controller.FactionControlSettingsMI.Invoke(null, null);
                }
            }
            base.DoBottomButtons(rect, "WorldGenerate".Translate(), "Planets.Random".Translate(), new Action(this.Randomize), true, true);
        }
        public void Randomize()
        {
            this.seedString = GenText.RandomSeedString();
            float randTilt = Rand.Value;

            if (randTilt > 0.8)
            {
                Planets_GameComponent.axialTilt = AxialTilt.VeryLow;
            }
            else if (randTilt > 0.6)
            {
                Planets_GameComponent.axialTilt = AxialTilt.Low;
            }
            else if (randTilt > 0.4)
            {
                Planets_GameComponent.axialTilt = AxialTilt.Normal;
            }
            else if (randTilt > 0.2)
            {
                Planets_GameComponent.axialTilt = AxialTilt.High;
            }
            else
            {
                Planets_GameComponent.axialTilt = AxialTilt.VeryHigh;
            }
            float randType = Rand.Value;

            if (randType > 0.86)
            {
                Planets_GameComponent.worldType = WorldType.Waterworld;
            }
            else if (randType > 0.72)
            {
                Planets_GameComponent.worldType = WorldType.Islands;
            }
            else if (randType > 0.58)
            {
                Planets_GameComponent.worldType = WorldType.Earthlike;
            }
            else if (randType > 0.42)
            {
                Planets_GameComponent.worldType = WorldType.Vanilla;
            }
            else if (randType > 0.28)
            {
                Planets_GameComponent.worldType = WorldType.Dry;
            }
            else if (randType > 0.14)
            {
                Planets_GameComponent.worldType = WorldType.VeryDry;
            }
            else
            {
                Planets_GameComponent.worldType = WorldType.Barren;
            }
            float randRain = Rand.Value;

            if (randRain > 0.8)
            {
                this.rainfallMod = RainfallModifier.Little;
            }
            else if (randRain > 0.6)
            {
                this.rainfallMod = RainfallModifier.LittleBitLess;
            }
            else if (randRain > 0.4)
            {
                this.rainfallMod = RainfallModifier.Normal;
            }
            else if (randRain > 0.2)
            {
                this.rainfallMod = RainfallModifier.LittleBitMore;
            }
            else
            {
                this.rainfallMod = RainfallModifier.High;
            }
            float randTemp = Rand.Value;

            if (randTemp > 0.86)
            {
                this.temperature = OverallTemperature.VeryCold;
            }
            else if (randTemp > 0.72)
            {
                this.temperature = OverallTemperature.Cold;
            }
            else if (randTemp > 0.58)
            {
                this.temperature = OverallTemperature.LittleBitColder;
            }
            else if (randTemp > 0.42)
            {
                this.temperature = OverallTemperature.Normal;
            }
            else if (randTemp > 0.28)
            {
                this.temperature = OverallTemperature.LittleBitWarmer;
            }
            else if (randTemp > 0.14)
            {
                this.temperature = OverallTemperature.Hot;
            }
            else
            {
                this.temperature = OverallTemperature.VeryHot;
            }
            Controller.Settings.randomPlanet = true;
            if (this.CanDoNext())
            {
                this.DoNext();
            }
        }
Пример #17
0
        public override void DoWindowContents(Rect rect)
        {
            DrawPageTitle(rect);
            GUI.BeginGroup(GetMainRect(rect));
            Text.Font = GameFont.Small;
            float num = 0f;

            Widgets.Label(new Rect(0f, num, 200f, 30f), "WorldSeed".Translate());
            Rect rect2 = new Rect(200f, num, 200f, 30f);

            seedString = Widgets.TextField(rect2, seedString);
            num       += 40f;
            if (Widgets.ButtonText(new Rect(200f, num, 200f, 30f), "RandomizeSeed".Translate()))
            {
                SoundDefOf.Tick_Tiny.PlayOneShotOnCamera();
                seedString = GenText.RandomSeedString();
            }
            num += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetCoverage".Translate());
            Rect rect3 = new Rect(200f, num, 200f, 30f);

            if (Widgets.ButtonText(rect3, planetCoverage.ToStringPercent()))
            {
                List <FloatMenuOption> list = new List <FloatMenuOption>();
                float[] array = Prefs.DevMode ? PlanetCoveragesDev : PlanetCoverages;
                foreach (float coverage in array)
                {
                    string text = coverage.ToStringPercent();
                    if (coverage <= 0.1f)
                    {
                        text += " (dev)";
                    }
                    FloatMenuOption item = new FloatMenuOption(text, delegate
                    {
                        if (planetCoverage != coverage)
                        {
                            planetCoverage = coverage;
                            if (planetCoverage == 1f)
                            {
                                Messages.Message("MessageMaxPlanetCoveragePerformanceWarning".Translate(), MessageTypeDefOf.CautionInput, historical: false);
                            }
                        }
                    });
                    list.Add(item);
                }
                Find.WindowStack.Add(new FloatMenu(list));
            }
            TooltipHandler.TipRegionByKey(new Rect(0f, num, rect3.xMax, rect3.height), "PlanetCoverageTip");
            num += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetRainfall".Translate());
            Rect rect4 = new Rect(200f, num, 200f, 30f);

            rainfall = (OverallRainfall)Mathf.RoundToInt(Widgets.HorizontalSlider(rect4, (float)rainfall, 0f, OverallRainfallUtility.EnumValuesCount - 1, middleAlignment: true, "PlanetRainfall_Normal".Translate(), "PlanetRainfall_Low".Translate(), "PlanetRainfall_High".Translate(), 1f));
            num     += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetTemperature".Translate());
            Rect rect5 = new Rect(200f, num, 200f, 30f);

            temperature = (OverallTemperature)Mathf.RoundToInt(Widgets.HorizontalSlider(rect5, (float)temperature, 0f, OverallTemperatureUtility.EnumValuesCount - 1, middleAlignment: true, "PlanetTemperature_Normal".Translate(), "PlanetTemperature_Low".Translate(), "PlanetTemperature_High".Translate(), 1f));
            num        += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "PlanetPopulation".Translate());
            Rect rect6 = new Rect(200f, num, 200f, 30f);

            population = (OverallPopulation)Mathf.RoundToInt(Widgets.HorizontalSlider(rect6, (float)population, 0f, OverallPopulationUtility.EnumValuesCount - 1, middleAlignment: true, "PlanetPopulation_Normal".Translate(), "PlanetPopulation_Low".Translate(), "PlanetPopulation_High".Translate(), 1f));
            num       += 40f;
            Widgets.Label(new Rect(0f, num, 200f, 30f), "AAAA".Translate());
            Rect rect7 = new Rect(200f, num, 200f, 30f);

            GUI.EndGroup();
            DoBottomButtons(rect, "WorldGenerate".Translate(), "Reset".Translate(), Reset);
        }