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