Пример #1
0
        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");
            }
        }
Пример #3
0
        public static void Apply()
        {
            var harmony = new Harmony(Id);

            harmony.PatchAll(typeof(HarmonyDetours).Assembly);
            Loader.HarmonyDetourFailed = false;
            DebugLog.LogToFileOnly("Harmony patches applied");
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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}");
            }
        }
Пример #6
0
 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;
 }
Пример #7
0
 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;
 }
Пример #8
0
 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++;
 }
Пример #9
0
        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}");
            }
        }
Пример #10
0
        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}");
            }
        }
Пример #11
0
        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;
                }
            }
        }
Пример #12
0
 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}");
     }
 }
Пример #13
0
        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);
            }
        }