public void OnEnabled() => TMPELifecycle.StartMod();
public void OnDisabled() => TMPELifecycle.EndMod();
public static void Load() { Log.Info("Loading Traffic Manager: PE Data"); TMPELifecycle.Instance.Deserializing = true; bool loadingSucceeded = true; try { Log.Info("Initializing flags"); Flags.OnBeforeLoadData(); } catch (Exception e) { Log.Error($"OnLoadData: Error while initializing Flags: {e}"); loadingSucceeded = false; } foreach (ICustomManager manager in TMPELifecycle.Instance.RegisteredManagers) { try { Log.Info($"OnBeforeLoadData: {manager.GetType().Name}"); manager.OnBeforeLoadData(); } catch (Exception e) { Log.Error($"OnLoadData: Error while initializing {manager.GetType().Name}: {e}"); loadingSucceeded = false; } } Log.Info("Initialization done. Loading mod data now."); try { byte[] data = SerializableData.LoadData(VERSION_INFO_DATA_ID); DeserializeVersionData(data); } catch (Exception e) { Log.Error($"OnLoadData: Error while deserializing version data: {e}"); loadingSucceeded = false; } try { byte[] data = SerializableData.LoadData(DATA_ID); DeserializeData(data); } catch (Exception e) { Log.Error($"OnLoadData: Error while deserializing data: {e}"); loadingSucceeded = false; } // load options (empty byte array causes default options to be applied) try { if (TMPELifecycle.InGameOrEditor()) { // Always force default options on new game // See: https://github.com/CitiesSkylinesMods/TMPE/pull/1425 byte[] options = TMPELifecycle.IsNewGame ? null : SerializableData.LoadData("TMPE_Options"); if (!OptionsManager.Instance.LoadData(options ?? new byte[0])) { loadingSucceeded = false; } } } catch (Exception e) { Log.Error($"OnLoadData: Error while loading options: {e}"); loadingSucceeded = false; } if (loadingSucceeded) { Log.Info("OnLoadData completed successfully."); } else { Log.Info("An error occurred while loading."); // UIView.library.ShowModal<ExceptionPanel>("ExceptionPanel") // .SetMessage("An error occurred while loading", // "Traffic Manager: President Edition detected an error while loading. Please do // NOT save this game under the old filename, otherwise your timed traffic lights, // custom lane arrows, etc. are in danger. Instead, please navigate to // http://steamcommunity.com/sharedfiles/filedetails/?id=583429740 and follow the // steps under 'In case problems arise'.", true); } TMPELifecycle.Instance.Deserializing = false; foreach (ICustomManager manager in TMPELifecycle.Instance.RegisteredManagers) { try { Log.Info($"OnAfterLoadData: {manager.GetType().Name}"); manager.OnAfterLoadData(); } catch (Exception e) { Log.Error($"OnLoadData: Error while initializing {manager.GetType().Name}: {e}"); loadingSucceeded = false; } } }