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(); }
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(); }