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 InitData() { DebugLog.LogToFileOnly("InitData"); TransportLineData.DataInit(); VehicleData.DataInit(); BuildingData.DataInit(); CitizenUnitData.DataInit(); CitizenData.DataInit(); RealCityEconomyManager.DataInit(); System.Random rand = new System.Random(); RealCityEconomyExtension.partyTrend = (byte)rand.Next(5); RealCityEconomyExtension.partyTrendStrength = (byte)rand.Next(300); DebugLog.LogToFileOnly("InitData Done"); }
public override long OnUpdateMoneyAmount(long internalMoneyAmount) { if (Loader.CurrentLoadMode == LoadMode.LoadGame || Loader.CurrentLoadMode == LoadMode.NewGame) { MainDataStore.currentTime = Singleton <SimulationManager> .instance.m_currentDayTimeHour; uint currentFrameIndex = Singleton <SimulationManager> .instance.m_currentFrameIndex; uint frameIndex = currentFrameIndex & 255u; if ((frameIndex == 255u) && (MainDataStore.currentTime != MainDataStore.prevTime)) { if (MainDataStore.updateMoneyCount == 16) { Politics.parliamentCount--; if (Politics.parliamentCount < 0) { Politics.parliamentCount = 10; } //1. Caculate minimumLivingAllowance and unfinishedTransitionLost MainDataStore.minimumLivingAllowanceFinal = MainDataStore.minimumLivingAllowance; MainDataStore.minimumLivingAllowance = 0; MainDataStore.unfinishedTransitionLostFinal = MainDataStore.unfinishedTransitionLost; MainDataStore.unfinishedTransitionLost = 0; if (MainDataStore.citizenCount > 0) { //2. Citizen Status CitizenStatus(); } } CaculateCitizenTransportFee(); MainDataStore.updateMoneyCount++; if (MainDataStore.updateMoneyCount == 17) { MainDataStore.updateMoneyCount = 0; } RealCityEconomyManager.CleanCurrent(MainDataStore.updateMoneyCount); MainDataStore.prevTime = MainDataStore.currentTime; //3 refesh UI PoliticsUI.refeshOnce = true; RealCityUI.refeshOnce = true; EcnomicUI.refeshOnce = true; PlayerBuildingUI.refeshOnce = true; BuildingUI.refeshOnce = true; HumanUI.refeshOnce = true; TouristUI.refeshOnce = true; PBLUI.refeshOnce = true; //4 limit money MainDataStore.maxOutsideMoneyLimit = (400 + MainDataStore.familyCount) * 250f; MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated0Data.m_finalCount >> 3); MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated1Data.m_finalCount >> 2); MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated2Data.m_finalCount >> 1); MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated3Data.m_finalCount); if ((MainDataStore.outsideTouristMoney > MainDataStore.maxOutsideMoneyLimit) || (MainDataStore.outsideTouristMoney < -MainDataStore.maxOutsideMoneyLimit)) { MainDataStore.outsideTouristMoney *= 0.975f; } if ((MainDataStore.outsideGovermentMoney > MainDataStore.maxOutsideMoneyLimit) || (MainDataStore.outsideGovermentMoney < -MainDataStore.maxOutsideMoneyLimit)) { MainDataStore.outsideGovermentMoney *= 0.975f; } //5 random event if (RealCity.randomEvent && (MainDataStore.citizenCount > 6000)) { if (MainDataStore.randomEventTime < 2) { System.Random rand = new System.Random(); MainDataStore.randomEventTime = (ushort)(rand.Next(3900) + 100); var randomData = (ushort)(rand.Next(600) + 100); MainDataStore.noImport = false; MainDataStore.noExport = false; MainDataStore.noDummyTraffic = false; MainDataStore.noTourist = false; if (randomData < 130) { MainDataStore.noExport = true; } else if (randomData < 160) { MainDataStore.noImport = true; } else if (randomData < 190) { MainDataStore.noTourist = true; } else if (randomData < 220) { MainDataStore.noDummyTraffic = true; } else { MainDataStore.noImport = false; MainDataStore.noExport = false; MainDataStore.noDummyTraffic = false; MainDataStore.noTourist = false; } } else { MainDataStore.randomEventTime--; } } else { MainDataStore.noImport = false; MainDataStore.noExport = false; MainDataStore.noDummyTraffic = false; MainDataStore.noTourist = false; MainDataStore.randomEventTime = 0; } //end } } return(internalMoneyAmount); }
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); } }
public override long OnUpdateMoneyAmount(long internalMoneyAmount) { if (Loader.CurrentLoadMode == LoadMode.LoadGame || Loader.CurrentLoadMode == LoadMode.NewGame) { MainDataStore.currentTime = Singleton <SimulationManager> .instance.m_currentDayTimeHour; uint currentFrameIndex = Singleton <SimulationManager> .instance.m_currentFrameIndex; uint frameIndex = currentFrameIndex & 255u; if ((frameIndex == 255u) && (MainDataStore.currentTime != MainDataStore.prevTime)) { if (MainDataStore.updateMoneyCount == 16) { Politics.nextMeetingInterval--; if (Politics.nextMeetingInterval < 0) { Politics.nextMeetingInterval = 10; } //1. Caculate minimumLivingAllowance and unfinishedTransitionLost MainDataStore.minimumLivingAllowanceFinal = MainDataStore.minimumLivingAllowance; MainDataStore.minimumLivingAllowance = 0; MainDataStore.unfinishedTransitionLostFinal = MainDataStore.unfinishedTransitionLost; MainDataStore.unfinishedTransitionLost = 0; if (MainDataStore.citizenCount > 0) { //2. Citizen Status CitizenStatus(); } } CaculateCitizenTransportFee(); MainDataStore.updateMoneyCount++; if (MainDataStore.updateMoneyCount == 17) { MainDataStore.updateMoneyCount = 0; } RealCityEconomyManager.CleanCurrent(MainDataStore.updateMoneyCount); MainDataStore.prevTime = MainDataStore.currentTime; //3 refesh UI PoliticsUI.refeshOnce = true; RealCityUI.refeshOnce = true; EcnomicUI.refeshOnce = true; PlayerBuildingUI.refeshOnce = true; BuildingUI.refeshOnce = true; HumanUI.refeshOnce = true; TouristUI.refeshOnce = true; PBLUI.refeshOnce = true; //4 limit money MainDataStore.maxOutsideMoneyLimit = (400 + MainDataStore.familyCount) * 250f; MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated0Data.m_finalCount >> 3); MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated1Data.m_finalCount >> 2); MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated2Data.m_finalCount >> 1); MainDataStore.outsideTouristMoney += (Singleton <DistrictManager> .instance.m_districts.m_buffer[0].m_educated3Data.m_finalCount); if ((MainDataStore.outsideTouristMoney > MainDataStore.maxOutsideMoneyLimit) || (MainDataStore.outsideTouristMoney < -MainDataStore.maxOutsideMoneyLimit)) { MainDataStore.outsideTouristMoney *= 0.975f; } if ((MainDataStore.outsideGovermentMoney > MainDataStore.maxOutsideMoneyLimit) || (MainDataStore.outsideGovermentMoney < -MainDataStore.maxOutsideMoneyLimit)) { MainDataStore.outsideGovermentMoney *= 0.975f; } } } return(internalMoneyAmount); }