Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }