public static void DeApply() { var harmony = new Harmony(Id); harmony.UnpatchAll(Id); DebugLog.LogToFileOnly("Harmony patches DeApplied"); }
public void PerformModCheck() { DebugLog.LogToFileOnly("Performing incompatible mods check"); Dictionary <ulong, string> incompatibleMods = new Dictionary <ulong, string>(); for (int i = 0; i < userModList.Length; i++) { string incompatibleModName = ""; if (incompatibleModList.TryGetValue(userModList[i], out incompatibleModName)) { incompatibleMods.Add(userModList[i], incompatibleModName); } } if (incompatibleMods.Count > 0) { DebugLog.LogToFileOnly("Incompatible mods detected! Count: " + incompatibleMods.Count); IncompatibleModsPanel panel = IncompatibleModsPanel.Instance; panel.IncompatibleMods = incompatibleMods; panel.Initialize(); UIView.PushModal(panel); } else { DebugLog.LogToFileOnly("No incompatible mods detected"); } }
public static void Apply() { var harmony = new Harmony(Id); harmony.PatchAll(typeof(HarmonyDetours).Assembly); Loader.HarmonyDetourFailed = false; DebugLog.LogToFileOnly("Harmony patches applied"); }
public override void OnSaveData() { if (Loader.CurrentLoadMode == LoadMode.LoadGame || Loader.CurrentLoadMode == LoadMode.NewGame) { DebugLog.LogToFileOnly("StartSave"); //1 var saveData = new byte[2448]; RealCityEconomyManager.Save(ref saveData); _serializableData.SaveData("RealCity RealCityEconomyManager", saveData); //2 saveData = new byte[131]; MainDataStore.Save(ref saveData); _serializableData.SaveData("RealCity MainDataStore", saveData); //3 saveData = new byte[48]; RealCityResidentAI.Save(ref saveData); _serializableData.SaveData("RealCity RealCityResidentAI", saveData); //4 saveData = new byte[60]; RealCityPrivateBuildingAI.Save(ref saveData); _serializableData.SaveData("RealCity RealCityPrivateBuildingAI", saveData); //5 saveData = new byte[4194304]; CitizenData.Save(ref saveData); _serializableData.SaveData("RealCity CitizenData", saveData); //6 saveData = new byte[58]; Politics.Save(ref saveData); _serializableData.SaveData("RealCity Politics", saveData); //7 saveData = new byte[1536]; TransportLineData.Save(ref saveData); _serializableData.SaveData("RealCity TransportLineData", saveData); //8 saveData = new byte[442368]; BuildingData.Save(ref saveData); _serializableData.SaveData("RealCity BuildingData", saveData); //9 saveData = new byte[196608]; VehicleData.Save(ref saveData); _serializableData.SaveData("RealCity VehicleData", saveData); //10 saveData = new byte[3145728]; CitizenUnitData.Save(ref saveData); _serializableData.SaveData("RealCity CitizenUnitData", saveData); } }
public static void Save(ref byte[] saveData) { //58 int i = 0; //30 SaveAndRestore.SaveData(ref i, cPartyChance, ref saveData); SaveAndRestore.SaveData(ref i, gPartyChance, ref saveData); SaveAndRestore.SaveData(ref i, sPartyChance, ref saveData); SaveAndRestore.SaveData(ref i, lPartyChance, ref saveData); SaveAndRestore.SaveData(ref i, nPartyChance, ref saveData); SaveAndRestore.SaveData(ref i, cPartyTickets, ref saveData); SaveAndRestore.SaveData(ref i, gPartyTickets, ref saveData); SaveAndRestore.SaveData(ref i, sPartyTickets, ref saveData); SaveAndRestore.SaveData(ref i, lPartyTickets, ref saveData); SaveAndRestore.SaveData(ref i, nPartyTickets, ref saveData); SaveAndRestore.SaveData(ref i, cPartySeats, ref saveData); SaveAndRestore.SaveData(ref i, gPartySeats, ref saveData); SaveAndRestore.SaveData(ref i, sPartySeats, ref saveData); SaveAndRestore.SaveData(ref i, lPartySeats, ref saveData); SaveAndRestore.SaveData(ref i, nPartySeats, ref saveData); //14 SaveAndRestore.SaveData(ref i, nextMeetingInterval, ref saveData); SaveAndRestore.SaveData(ref i, case1, ref saveData); SaveAndRestore.SaveData(ref i, case2, ref saveData); SaveAndRestore.SaveData(ref i, case3, ref saveData); SaveAndRestore.SaveData(ref i, case4, ref saveData); SaveAndRestore.SaveData(ref i, case5, ref saveData); SaveAndRestore.SaveData(ref i, case6, ref saveData); SaveAndRestore.SaveData(ref i, case7, ref saveData); SaveAndRestore.SaveData(ref i, case8, ref saveData); SaveAndRestore.SaveData(ref i, currentBillId, ref saveData); SaveAndRestore.SaveData(ref i, currentYes, ref saveData); SaveAndRestore.SaveData(ref i, currentNo, ref saveData); SaveAndRestore.SaveData(ref i, currentNoAttend, ref saveData); //14 SaveAndRestore.SaveData(ref i, residentTax, ref saveData); SaveAndRestore.SaveData(ref i, commercialTax, ref saveData); SaveAndRestore.SaveData(ref i, industryTax, ref saveData); SaveAndRestore.SaveData(ref i, benefitOffset, ref saveData); residentTax = COMath.Clamp((int)residentTax, 0, 20); commercialTax = COMath.Clamp((int)commercialTax, 0, 20); industryTax = COMath.Clamp((int)industryTax, 0, 20); benefitOffset = (short)COMath.Clamp((int)benefitOffset, 0, 100); if (i != saveData.Length) { DebugLog.LogToFileOnly($"Politics Save Error: saveData.Length = {saveData.Length} + i = {i}"); } }
public static void LoadData(ref int idex, byte[] container, ref byte item) { if (idex < container.Length) { item = container[idex]; } else { DebugLog.LogToFileOnly($"load data is too short, please check {container.Length}"); item = 0; } idex = idex + 1; }
public static void LoadData(ref int idex, byte[] container, ref long item) { if (idex < container.Length) { item = BitConverter.ToInt64(container, idex); } else { DebugLog.LogToFileOnly($"load data is too short, please check {container.Length}"); item = 0; } idex = idex + 8; }
public static void LoadData(ref int idex, byte[] container, ref bool item) { if (idex < container.Length) { item = BitConverter.ToBoolean(container, idex); } else { DebugLog.LogToFileOnly($"load data is too short, please check {container.Length}"); item = false; } idex++; }
public static void Load(ref byte[] saveData) { int i = 0; SaveAndRestore.LoadData(ref i, saveData, ref cPartyChance); SaveAndRestore.LoadData(ref i, saveData, ref gPartyChance); SaveAndRestore.LoadData(ref i, saveData, ref sPartyChance); SaveAndRestore.LoadData(ref i, saveData, ref lPartyChance); SaveAndRestore.LoadData(ref i, saveData, ref nPartyChance); SaveAndRestore.LoadData(ref i, saveData, ref cPartyTickets); SaveAndRestore.LoadData(ref i, saveData, ref gPartyTickets); SaveAndRestore.LoadData(ref i, saveData, ref sPartyTickets); SaveAndRestore.LoadData(ref i, saveData, ref lPartyTickets); SaveAndRestore.LoadData(ref i, saveData, ref nPartyTickets); SaveAndRestore.LoadData(ref i, saveData, ref cPartySeats); SaveAndRestore.LoadData(ref i, saveData, ref gPartySeats); SaveAndRestore.LoadData(ref i, saveData, ref sPartySeats); SaveAndRestore.LoadData(ref i, saveData, ref lPartySeats); SaveAndRestore.LoadData(ref i, saveData, ref nPartySeats); SaveAndRestore.LoadData(ref i, saveData, ref nextMeetingInterval); SaveAndRestore.LoadData(ref i, saveData, ref case1); SaveAndRestore.LoadData(ref i, saveData, ref case2); SaveAndRestore.LoadData(ref i, saveData, ref case3); SaveAndRestore.LoadData(ref i, saveData, ref case4); SaveAndRestore.LoadData(ref i, saveData, ref case5); SaveAndRestore.LoadData(ref i, saveData, ref case6); SaveAndRestore.LoadData(ref i, saveData, ref case7); SaveAndRestore.LoadData(ref i, saveData, ref case8); SaveAndRestore.LoadData(ref i, saveData, ref currentBillId); SaveAndRestore.LoadData(ref i, saveData, ref currentYes); SaveAndRestore.LoadData(ref i, saveData, ref currentNo); SaveAndRestore.LoadData(ref i, saveData, ref currentNoAttend); SaveAndRestore.LoadData(ref i, saveData, ref residentTax); SaveAndRestore.LoadData(ref i, saveData, ref commercialTax); SaveAndRestore.LoadData(ref i, saveData, ref industryTax); SaveAndRestore.LoadData(ref i, saveData, ref benefitOffset); if (i != saveData.Length) { DebugLog.LogToFileOnly($"Politics Load Error: saveData.Length = {saveData.Length} + i = {i}"); } }
public static void LoadData(ref int idex, byte[] container, ref byte[] item) { int i; if (idex < container.Length) { for (i = 0; i < item.Length; i++) { item[i] = container[idex]; idex = idex + 1; } } else { for (i = 0; i < item.Length; i++) { idex = idex + 1; } DebugLog.LogToFileOnly($"load data is too short, please check {container.Length}"); } }
public static void LoadData(ref int idex, byte[] container, ref ushort[] item) { int i; if (idex < container.Length) { for (i = 0; i < item.Length; i++) { item[i] = BitConverter.ToUInt16(container, idex); idex = idex + 2; } } else { DebugLog.LogToFileOnly($"load data is too short, please check {container.Length}"); for (i = 0; i < item.Length; i++) { idex = idex + 2; } } }
public static void LoadData(ref int idex, byte[] container, ref bool[] item) { if (idex < container.Length) { int i; for (i = 0; i < item.Length; i++) { item[i] = BitConverter.ToBoolean(container, idex); idex++; } } else { int i; for (i = 0; i < item.Length; i++) { idex++; } DebugLog.LogToFileOnly($"load data is too short, please check {container.Length}"); } }
public override void OnLoadData() { Loader.InitData(); DebugLog.LogToFileOnly("StartLoad"); //1 var saveData = _serializableData.LoadData("RealCity RealCityEconomyManager"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity RealCityEconomyManager, please check"); } else { RealCityEconomyManager.Load(ref saveData); } //2 saveData = _serializableData.LoadData("RealCity MainDataStore"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity MainDataStore, please check"); } else { MainDataStore.Load(ref saveData); } //3 saveData = _serializableData.LoadData("RealCity RealCityResidentAI"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity RealCityResidentAI, please check"); } else { RealCityResidentAI.Load(ref saveData); } //4 saveData = _serializableData.LoadData("RealCity RealCityPrivateBuildingAI"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity RealCityPrivateBuildingAI, please check"); } else { RealCityPrivateBuildingAI.Load(ref saveData); } //5 saveData = _serializableData.LoadData("RealCity CitizenData"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity CitizenData, please check"); } else { CitizenData.Load(ref saveData); } //6 saveData = _serializableData.LoadData("RealCity Politics"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity Politics, please check"); } else { Politics.Load(ref saveData); } //7 saveData = _serializableData.LoadData("RealCity TransportLineData"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity TransportLineData, please check"); } else { TransportLineData.Load(ref saveData); } //8 saveData = _serializableData.LoadData("RealCity BuildingData"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity BuildingData, please check"); } else { BuildingData.Load(ref saveData); } //9 saveData = _serializableData.LoadData("RealCity VehicleData"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity VehicleData, please check"); } else { VehicleData.Load(ref saveData); } //10 saveData = _serializableData.LoadData("RealCity CitizenUnitData"); if (saveData == null) { DebugLog.LogToFileOnly("no RealCity CitizenUnitData, please check"); } else { CitizenUnitData.Load(ref saveData); } }