Пример #1
0
        public override void OnReleased()
        {
            base.OnReleased();
            Debugger.Log("ON_RELEASED");

            BuildingThemesManager.instance.Reset();
            BuildingVariationManager.instance.Reset();
            PolicyPanelEnabler.Unregister();

            Debugger.Log("Building Themes: Reverting detoured methods...");
            try
            {
                InitializePrefabPatch.Revert();
                Redirector <BuildingManagerDetour> .Revert();

                Debugger.Log("Building Themes: BuildingManager Methods restored!");
                Redirector <DistrictManagerDetour> .Revert();

                Debugger.Log("Building Themes: DistrictManager Methods restored!");
                Redirector <ZoneBlockDetour> .Revert();

                Debugger.Log("Building Themes: ZoneBlock Methods restored!");
                Detour.ImmaterialResourceManagerDetour.Revert();
                Detour.PrivateBuildingAIDetour <ResidentialBuildingAI> .Revert();

                Detour.PrivateBuildingAIDetour <CommercialBuildingAI> .Revert();

                Detour.PrivateBuildingAIDetour <IndustrialBuildingAI> .Revert();

                Detour.PrivateBuildingAIDetour <OfficeBuildingAI> .Revert();

                Detour.PoliciesPanelDetour.Revert();
                Redirector <DistrictWorldInfoPanelDetour> .Revert();

                Debugger.Log("Building Themes: DistrictWorldInfoPanel Methods restored!");
            }
            catch (Exception e)
            {
                Debugger.LogException(e);
            }

            Debugger.Log("Building Themes: Done!");

            Debugger.Deinitialize();
        }
Пример #2
0
        private void UpdateConfig()
        {
            // If config version is 0, disable the cloning feature if it is not used in one of the themes
            if (BuildingVariationManager.Enabled)
            {
                bool cloneFeatureUsed = false;

                if (BuildingThemesManager.instance.Configuration.version == 0)
                {
                    foreach (var theme in BuildingThemesManager.instance.Configuration.themes)
                    {
                        foreach (var building in theme.buildings)
                        {
                            if (building.baseName != null)
                            {
                                cloneFeatureUsed = true;
                                break;
                            }
                        }

                        if (cloneFeatureUsed)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    cloneFeatureUsed = true;
                }

                if (cloneFeatureUsed)
                {
                    try { InitializePrefabPatch.Deploy(); }
                    catch (Exception e) { Debugger.LogException(e); }
                }
                else
                {
                    BuildingVariationManager.Enabled = false;
                }
            }
            BuildingThemesManager.instance.Configuration.version = 1;
            BuildingThemesManager.instance.SaveConfig();
        }