public bool LoadFromWorldGen() { DebugUtil.LogArgs("Attempting to start a new game with current world gen"); WorldGen.LoadSettings(); string worldName; try { worldName = CustomGameSettings.Instance.GetCurrentQualitySetting(CustomGameSettingConfigs.World).id; } catch { worldName = "worlds/SandstoneDefault"; } worldGen = new WorldGen(worldName, null); SimSaveFileStructure simSaveFileStructure = worldGen.LoadWorldGenSim(); if (simSaveFileStructure == null) { Debug.LogError("Attempt failed"); return(false); } worldDetailSave = simSaveFileStructure.worldDetail; if (worldDetailSave == null) { Debug.LogError("Detail is null"); } GridSettings.Reset(simSaveFileStructure.WidthInCells, simSaveFileStructure.HeightInCells); Singleton <KBatchedAnimUpdater> .Instance.InitializeGrid(); Sim.SIM_Initialize(Sim.DLL_MessageHandler); SimMessages.CreateSimElementsTable(ElementLoader.elements); SimMessages.CreateDiseaseTable(); try { FastReader reader = new FastReader(simSaveFileStructure.Sim); if (Sim.Load(reader) != 0) { DebugUtil.LogWarningArgs("\n--- Error loading save ---\nSimDLL found bad data\n"); Sim.Shutdown(); return(false); } } catch (Exception ex) { Debug.LogWarning("--- Error loading Sim FROM NEW WORLDGEN ---" + ex.Message + "\n" + ex.StackTrace); Sim.Shutdown(); return(false); } Debug.Log("Attempt success"); SceneInitializer.Instance.PostLoadPrefabs(); SceneInitializer.Instance.NewSaveGamePrefab(); worldGen.ReplayGenerate(Reset); OnWorldGenComplete.Signal(); ThreadedHttps <KleiMetrics> .Instance.StartNewGame(); return(true); }
public override bool Success() { WorldDetailSave worldDetailSave = SaveLoader.Instance.worldDetailSave; for (int i = 0; i < worldDetailSave.overworldCells.Count; i++) { WorldDetailSave.OverworldCell overworldCell = worldDetailSave.overworldCells[i]; if (overworldCell.tags != null && !overworldCell.tags.Contains(WorldGenTags.StartWorld)) { Polygon poly = overworldCell.poly; foreach (BuildingComplete item in Components.BuildingCompletes.Items) { KPrefabID component = item.GetComponent <KPrefabID>(); if (!component.HasTag(GameTags.TemplateBuilding) && poly.PointInPolygon(item.transform.GetPosition())) { Game.Instance.unlocks.Unlock("buildoutsidestartingbiome"); return(true); } } } } return(false); }
public SimSaveFileStructure() { worldDetail = new WorldDetailSave(); }
public void SetWorldDetail(WorldDetailSave worldDetail) { worldDetailSave = worldDetail; }