コード例 #1
0
    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);
    }
コード例 #2
0
        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);
        }
コード例 #3
0
 public SimSaveFileStructure()
 {
     worldDetail = new WorldDetailSave();
 }
コード例 #4
0
 public void SetWorldDetail(WorldDetailSave worldDetail)
 {
     worldDetailSave = worldDetail;
 }