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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #5
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);
        }