コード例 #1
0
        /*********
        ** Public methods
        *********/
        /// <summary>The mod entry point, called after the mod is first loaded.</summary>
        /// <param name="helper">Provides simplified APIs for writing mods.</param>
        public override void Entry(IModHelper helper)
        {
            // read config
            _config = helper.ReadConfig <ModConfigModel>();

            // set up sounds
            if (Constants.TargetPlatform == GamePlatform.Windows && _config.EnableWhistleAudio)
            {
                try
                {
                    _customSoundBank = new SoundBankWrapper(new SoundBank(Game1.audioEngine.Engine, Path.Combine(helper.DirectoryPath, "assets", "CustomSoundBank.xsb")));
                    _customWaveBank  = new WaveBank(Game1.audioEngine.Engine, Path.Combine(helper.DirectoryPath, "assets", "CustomWaveBank.xwb"));
                    _hasAudio        = true;
                }
                catch (ArgumentException ex)
                {
                    _customSoundBank = null;
                    _customWaveBank  = null;
                    _hasAudio        = false;

                    Monitor.Log("Couldn't load audio, so the whistle sound won't play.");
                    Monitor.Log(ex.ToString(), LogLevel.Trace);
                }
            }

            // add event listeners
            helper.Events.Input.ButtonPressed += this.OnButtonPressed;
            if (_config.EnableGrid)
            {
                helper.Events.GameLoop.UpdateTicked += this.UpdateTicked;
                helper.Events.Display.Rendered      += this.OnRendered;
            }
        }
コード例 #2
0
ファイル: ModEntry.cs プロジェクト: xxjbcxx/smapi-mod-dump
        /*********
        ** Public methods
        *********/
        /// <inheritdoc />
        /// <summary>Initialise the mod.</summary>
        /// <param name="helper">Provides methods for interacting with the mod directory, such as read/writing a config file or custom JSON files.</param>
        public override void Entry(IModHelper helper)
        {
            _config = helper.ReadConfig <ModConfigModel>();

            if (Constants.TargetPlatform == GamePlatform.Windows && _config.EnableWhistleAudio)
            {
                try
                {
                    _customSoundBank = new SoundBankWrapper(new SoundBank(Game1.audioEngine,
                                                                          Path.Combine(helper.DirectoryPath, "assets", "CustomSoundBank.xsb")));
                    _customWaveBank = new WaveBank(Game1.audioEngine,
                                                   Path.Combine(helper.DirectoryPath, "assets", "CustomWaveBank.xwb"));
                    _hasAudio = true;
                }
                catch (ArgumentException ex)
                {
                    _customSoundBank = null;
                    _customWaveBank  = null;
                    _hasAudio        = false;

                    Monitor.Log("Couldn't load audio, so the whistle sound won't play.");
                    Monitor.Log(ex.ToString(), LogLevel.Trace);
                }
            }

            // add all event listener methods
            InputEvents.ButtonPressed += InputEvents_ButtonPressed;
            if (!_config.EnableGrid)
            {
                return;
            }
            GameEvents.SecondUpdateTick      += (sender, e) => UpdateGrid();
            GraphicsEvents.OnPostRenderEvent += (sender, e) => DrawGrid(Game1.spriteBatch);
        }
コード例 #3
0
        private void ModlistBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ModConfigModel config = ((ModItemControl)modlistBox.SelectedItem).Tag as ModConfigModel;

            desTextBlock.Text    = config.Descript;
            modNamelabel.Content = config.Name;
            // throw new NotImplementedException();
        }
コード例 #4
0
        public static void SaveConfig(string file, ModConfigModel config)
        {
            FileStream fs  = new FileStream(file, FileMode.Create, FileAccess.Write);
            TextWriter tw  = new StreamWriter(fs, Encoding.Default);
            string     str = Newtonsoft.Json.JsonConvert.SerializeObject(config);

            tw.Write(str);
            tw.Close();
        }
 public override void OnRefreshMilestones()
 {
     if (managers.loading.currentMode == AppMode.Game && Singleton <UnlockManager> .exists)
     {
         ModConfigModel config = JsonHelper.FromJsonFile <ModConfigModel>(Path.Combine(ModHelper.GetPath(), _modConfigFilePath)) ?? new ModConfigModel();
         BuildNonDefault(config);
         RefreshMilestones(config);
     }
     milestonesManager.UnlockMilestone("Basic Road Created");
 }
コード例 #6
0
        public static ModConfigModel LoadConfig(Stream file)
        {
            // FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
            TextReader tr  = new StreamReader(file, Encoding.Default);
            string     str = tr.ReadToEnd();

            //file.Close();
            tr.Close();
            ModConfigModel config = Newtonsoft.Json.JsonConvert.DeserializeObject(str, typeof(ModConfigModel)) as ModConfigModel;

            return(config);
        }
        private void BuildNonDefault(ModConfigModel config)
        {
            ModSettingModel modSetting = JsonHelper.FromJsonFile <ModSettingModel>(CustomMilestonesMod.modSettingFilePath) ?? new ModSettingModel();

            if (modSetting.BuildAllAssets)
            {
                CustomAssets assets = new CustomAssets();

                for (uint index = 0; index < PrefabCollection <NetInfo> .LoadedCount(); index++)
                {
                    NetInfo net = PrefabCollection <NetInfo> .GetLoaded(index);

                    if (net.GetUnlockMilestone().GetLevel() > 0 && !config.RoadIncludes.Contains(config.Renames.GetRename(net.name)) && !config.RoadGroups.Any(m => m.Value.Contains(net.name)))
                    {
                        assets.Roads.Add(new ItemModel()
                        {
                            Name          = net.name,
                            LocalizedName = net.GetLocalizedTitle(),
                            Expansions    = net.m_class.m_service.ToString() + "|" + net.m_class.m_subService.ToString() + "|" + net.category
                        });
                    }
                }

                for (uint index = 0; index < PrefabCollection <BuildingInfo> .LoadedCount(); index++)
                {
                    BuildingInfo building = PrefabCollection <BuildingInfo> .GetLoaded(index);

                    if (building.GetUnlockMilestone().GetLevel() > 0 && !config.BuildingIncludes.Contains(config.Renames.GetRename(building.name)) && !config.BuildingGroups.Any(m => m.Value.Contains(building.name)))
                    {
                        if (building.category == "RoadsIntersection")
                        {
                            assets.Roads.Add(new ItemModel()
                            {
                                Name          = building.name,
                                LocalizedName = building.GetLocalizedTitle()
                            });
                        }
                        else
                        {
                            assets.Buildings.Add(new ItemModel()
                            {
                                Name          = building.name,
                                LocalizedName = building.GetLocalizedTitle()
                            });
                        }
                    }
                }

                modSetting.BuildAllAssets = false;
                JsonHelper.ToJsonFile(modSetting, CustomMilestonesMod.modSettingFilePath);
                XmlHelper.ToXmlFile(assets, DataLocation.executableDirectory + "\\CustomMilestone-Non-Default.xml");
            }
        }
        /// <summary>
        /// 刷新道路里程碑
        /// </summary>
        /// <param name="name">道路名称</param>
        /// <param name="milestoneInfo">新的里程碑进度</param>
        /// <param name="config">配置信息</param>
        /// <param name="inGroup">是否在组</param>
        private void RefreshRoadMilestone(string name, MilestoneInfo milestoneInfo, ModConfigModel config, bool inGroup = false)
        {
            if (config.RoadExistsBuildings.Contains(name))
            {
                RefreshBuildingMilestone(name, milestoneInfo, config);
            }
            else if (config.RoadGroups.TryGetValue(name, out List <string> roadGroup) && !inGroup)
            {
                foreach (string roadName in roadGroup)
                {
                    RefreshRoadMilestone(roadName, milestoneInfo, config, true);
                }
            }
            else if (PrefabCollection <NetInfo> .LoadedExists(name))
            {
                NetInfo net = PrefabCollection <NetInfo> .FindLoaded(name);

                if (milestoneInfo.GetLevel() < net.GetUnlockMilestone().GetLevel())
                {
                    net.m_UnlockMilestone = milestoneInfo;
                }
                RefreshRelatedMilestone(name, net.category, net.m_class.m_service, net.m_class.m_subService, net.m_UnlockMilestone);
            }
        }
 /// <summary>
 /// 刷新服务里程碑
 /// </summary>
 /// <param name="name"></param>
 /// <param name="milestoneInfo"></param>
 /// <param name="config"></param>
 /// <param name="inGroup"></param>
 private void RefreshServiceMilestones(string name, MilestoneInfo milestoneInfo, ModConfigModel config = null, bool inGroup = false)
 {
     if (config != null && config.ServiceExistsFeatures.Contains(name))
     {
         RefreshFeatureMilestones(name, milestoneInfo);
     }
     else if (EnumHelper.TryToEnumData(name, out PositionData <ItemClass.Service> serviceEnum))
     {
         if (milestoneInfo.GetLevel() < Singleton <UnlockManager> .instance.m_properties.m_ServiceMilestones[(int)serviceEnum.enumValue].GetLevel())
         {
             Singleton <UnlockManager> .instance.m_properties.m_ServiceMilestones[(int)serviceEnum.enumValue] = milestoneInfo;
             switch (name)
             {
             case "Monuments":
                 milestonesManager.UnlockMilestone("Statue of Industry Requirements");
                 milestonesManager.UnlockMilestone("Statue of Wealth Requirements");
                 milestonesManager.UnlockMilestone("Lazaret Plaza Requirements");
                 milestonesManager.UnlockMilestone("Statue of Shopping Requirements");
                 milestonesManager.UnlockMilestone("Plaza of the Dead Requirements");
                 if (managers.application.SupportsExpansion(Expansion.NaturalDisasters))
                 {
                     milestonesManager.UnlockMilestone("Meteor Park Requirements");
                 }
                 if (managers.application.SupportsExpansion(Expansion.GreenCities))
                 {
                     milestonesManager.UnlockMilestone("Bird And Bee Haven Requirements");
                 }
                 break;
             }
         }
     }
 }
コード例 #10
0
        /// <summary>
        /// 刷新功能里程碑
        /// </summary>
        /// <param name="name"></param>
        /// <param name="milestoneInfo"></param>
        /// <param name="config"></param>
        /// <param name="inGroup"></param>
        private void RefreshFeatureMilestones(string name, MilestoneInfo milestoneInfo, ModConfigModel config = null, bool inGroup = false)
        {
            if (config != null && config.FeatureGroups.TryGetValue(name, out List <string> featureGroup) && !inGroup)
            {
                foreach (string item in featureGroup)
                {
                    RefreshFeatureMilestones(item, milestoneInfo, config, true);
                }
            }
            else if (EnumHelper.TryToEnumData(name, out PositionData <UnlockManager.Feature> featureEnum))
            {
                if (milestoneInfo.GetLevel() < Singleton <UnlockManager> .instance.m_properties.m_FeatureMilestones[(int)featureEnum.enumValue].GetLevel())
                {
                    Singleton <UnlockManager> .instance.m_properties.m_FeatureMilestones[(int)featureEnum.enumValue] = milestoneInfo;
                    switch (name)
                    {
                    case "MonumentLevel2":
                        milestonesManager.UnlockMilestone("Fountain of LifeDeath Requirements");
                        milestonesManager.UnlockMilestone("Friendly Neighborhood Requirements");
                        milestonesManager.UnlockMilestone("Transport Tower Requirements");
                        milestonesManager.UnlockMilestone("Trash Mall Requirements");
                        milestonesManager.UnlockMilestone("Posh Mall Requirements");
                        if (managers.application.SupportsExpansion(Expansion.NaturalDisasters))
                        {
                            milestonesManager.UnlockMilestone("Disaster Memorial Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.GreenCities))
                        {
                            milestonesManager.UnlockMilestone("Climate Research Station Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.Parks))
                        {
                            milestonesManager.UnlockMilestone("Clock Tower Requirements");
                        }
                        break;

                    case "MonumentLevel3":
                        milestonesManager.UnlockMilestone("Colossal Offices Requirements");
                        milestonesManager.UnlockMilestone("Official Park Requirements");
                        milestonesManager.UnlockMilestone("CourtHouse Requirements");
                        milestonesManager.UnlockMilestone("Grand Mall Requirements");
                        milestonesManager.UnlockMilestone("Cityhall Requirements");
                        if (managers.application.SupportsExpansion(Expansion.NaturalDisasters))
                        {
                            milestonesManager.UnlockMilestone("Helicopter Park Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.Parks))
                        {
                            milestonesManager.UnlockMilestone("Old Market Street Requirements");
                        }
                        break;

                    case "MonumentLevel4":
                        milestonesManager.UnlockMilestone("Business Park Requirements");
                        milestonesManager.UnlockMilestone("Library Requirements");
                        milestonesManager.UnlockMilestone("Observatory Requirements");
                        milestonesManager.UnlockMilestone("Opera House Requirements");
                        milestonesManager.UnlockMilestone("Oppression Office Requirements");
                        if (managers.application.SupportsExpansion(Expansion.NaturalDisasters))
                        {
                            milestonesManager.UnlockMilestone("Pyramid Of Safety Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.GreenCities))
                        {
                            milestonesManager.UnlockMilestone("Floating Gardens Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.Parks))
                        {
                            milestonesManager.UnlockMilestone("Sea Fortress Requirements");
                        }
                        break;

                    case "MonumentLevel5":
                        milestonesManager.UnlockMilestone("ScienceCenter Requirements");
                        milestonesManager.UnlockMilestone("Servicing Services Requirements");
                        milestonesManager.UnlockMilestone("SeaWorld Requirements");
                        milestonesManager.UnlockMilestone("Expocenter Requirements");
                        milestonesManager.UnlockMilestone("High Interest Tower Requirements");
                        milestonesManager.UnlockMilestone("Academic Library Prerequisites");
                        milestonesManager.UnlockMilestone("Aviation Club Prerequisites");
                        if (managers.application.SupportsExpansion(Expansion.NaturalDisasters))
                        {
                            milestonesManager.UnlockMilestone("Sphinx Of Scenarios Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.GreenCities))
                        {
                            milestonesManager.UnlockMilestone("Ziggurat Garden Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.Parks))
                        {
                            milestonesManager.UnlockMilestone("Observation Tower Requirements");
                        }
                        break;

                    case "MonumentLevel6":
                        milestonesManager.UnlockMilestone("Cathedral of Plentitude Requirements");
                        milestonesManager.UnlockMilestone("Stadium Requirements");
                        milestonesManager.UnlockMilestone("Modern Art Museum Requirements");
                        milestonesManager.UnlockMilestone("SeaAndSky Scraper Requirements");
                        milestonesManager.UnlockMilestone("Theater of Wonders Requirements");
                        if (managers.application.SupportsExpansion(Expansion.NaturalDisasters))
                        {
                            milestonesManager.UnlockMilestone("Unicorn Park Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.GreenCities))
                        {
                            milestonesManager.UnlockMilestone("Central Park Requirements");
                        }
                        if (managers.application.SupportsExpansion(Expansion.Parks))
                        {
                            milestonesManager.UnlockMilestone("Statue Of Colossalus Requirements");
                        }
                        break;
                    }
                }
            }
        }
コード例 #11
0
        /// <summary>
        /// 刷新建筑里程碑
        /// </summary>
        /// <param name="name">建筑名称</param>
        /// <param name="milestoneInfo">新的里程碑进度</param>
        /// <param name="config">配置信息</param>
        /// <param name="inGroup">是否在组</param>
        private void RefreshBuildingMilestone(string name, MilestoneInfo milestoneInfo, ModConfigModel config, bool inGroup = false)
        {
            if (config.BuildingExistsRoads.Contains(name) || config.BuildingContainedRoads.Contains(name))
            {
                RefreshRoadMilestone(name, milestoneInfo, config);
            }
            else if (config.BuildingGroups.TryGetValue(name, out List <string> buildingGroup) && !inGroup)
            {
                foreach (string buildingName in buildingGroup)
                {
                    RefreshBuildingMilestone(buildingName, milestoneInfo, config, true);
                }
            }
            else if (PrefabCollection <BuildingInfo> .LoadedExists(name))
            {
                BuildingInfo building = PrefabCollection <BuildingInfo> .FindLoaded(name);

                if (milestoneInfo.GetLevel() < building.GetUnlockMilestone().GetLevel())
                {
                    building.m_UnlockMilestone = milestoneInfo;
                }
                RefreshRelatedMilestone(name, building.category, building.m_class.m_service, building.m_class.m_subService, milestoneInfo);
            }
        }
コード例 #12
0
        public void RefreshMilestones(ModConfigModel config)
        {
            CustomMilestoneModel customMilestone = XmlHelper.FromXmlFile <CustomMilestoneModel>(_xmlFilePath);

            if (customMilestone.Rebuild)
            {
                customMilestone.Rebuild = false;

                //读取默认道路信息
                for (uint index = 0; index < PrefabCollection <NetInfo> .LoadedCount(); index++)
                {
                    NetInfo net = PrefabCollection <NetInfo> .GetLoaded(index);

                    if (config.RoadIncludes.Contains(config.Renames.GetRename(net.name)) && !customMilestone.Exists(config.Renames.GetRename(net.name)))
                    {
                        if (config.BuildingExistsRoads.Contains(config.Renames.GetRename(net.name)))
                        {
                            customMilestone.Milestones[net.GetUnlockMilestone().GetLevel()].Buildings.Add(new ItemModel()
                            {
                                Name          = config.Renames.GetRename(net.name),
                                LocalizedName = net.GetLocalizedTitle(),
                                Expansions    = net.m_class.m_service.ToString() + "|" + net.m_class.m_subService.ToString() + "|" + net.category
                            });
                        }
                        else
                        {
                            customMilestone.Milestones[net.GetUnlockMilestone().GetLevel()].Roads.Add(new ItemModel()
                            {
                                Name          = config.Renames.GetRename(net.name),
                                LocalizedName = net.GetLocalizedTitle(),
                                Expansions    = net.m_class.m_service.ToString() + "|" + net.m_class.m_subService.ToString() + "|" + net.category
                            });
                        }
                    }
                }

                //读取默认建筑信息
                for (uint index = 0; index < PrefabCollection <BuildingInfo> .LoadedCount(); index++)
                {
                    BuildingInfo building = PrefabCollection <BuildingInfo> .GetLoaded(index);

                    if (config.BuildingIncludes.Contains(config.Renames.GetRename(building.name)) && !customMilestone.Exists(config.Renames.GetRename(building.name)))
                    {
                        if (config.RoadExistsBuildings.Contains(config.Renames.GetRename(building.name)))
                        {
                            customMilestone.Milestones[building.GetUnlockMilestone().GetLevel()].Roads.Add(new ItemModel()
                            {
                                Name          = config.Renames.GetRename(building.name),
                                LocalizedName = building.GetLocalizedTitle(),
                                Expansions    = building.m_class.m_service.ToString() + "|" + building.m_class.m_subService.ToString() + "|" + building.category
                            });
                        }
                        else
                        {
                            customMilestone.Milestones[building.GetUnlockMilestone().GetLevel()].Buildings.Add(new ItemModel()
                            {
                                Name          = config.Renames.GetRename(building.name),
                                LocalizedName = building.GetLocalizedTitle(),
                                Expansions    = building.m_class.m_service.ToString() + "|" + building.m_class.m_subService.ToString() + "|" + building.category
                            });
                        }
                    }
                }

                //读取默认功能信息
                foreach (var featureEnum in Utils.GetOrderedEnumData <UnlockManager.Feature>())
                {
                    if (config.Features.Contains(featureEnum.enumName) && !customMilestone.Exists(featureEnum.enumName, "Feature"))
                    {
                        var level = Singleton <UnlockManager> .instance.m_properties.m_FeatureMilestones[(int)featureEnum.enumValue].GetLevel();
                        if (config.ServiceExistsFeatures.Contains(featureEnum.enumName))
                        {
                            customMilestone.Milestones[level].Services.Add(new ItemModel()
                            {
                                Name          = featureEnum.enumName,
                                LocalizedName = featureEnum.GetLocalizedName(),
                            });
                        }
                        else
                        {
                            customMilestone.Milestones[level].Features.Add(new ItemModel()
                            {
                                Name          = featureEnum.enumName,
                                LocalizedName = featureEnum.GetLocalizedName(),
                            });
                        }
                    }
                }

                //读取默认服务信息
                foreach (var serviceEnum in Utils.GetOrderedEnumData <ItemClass.Service>())
                {
                    if (config.Services.Contains(serviceEnum.enumName) && !customMilestone.Exists(serviceEnum.enumName, "Service"))
                    {
                        var level = Singleton <UnlockManager> .instance.m_properties.m_ServiceMilestones[(int)serviceEnum.enumValue].GetLevel();
                        customMilestone.Milestones[level].Services.Add(new ItemModel()
                        {
                            Name          = serviceEnum.enumName,
                            LocalizedName = serviceEnum.GetLocalizedName(),
                        });
                    }
                }

                //读取默认服务政策信息
                foreach (var policyEnum in Utils.GetOrderedEnumData <DistrictPolicies.Policies>("Services"))
                {
                    var index = (int)(policyEnum.enumValue & (DistrictPolicies.Policies) 31);
                    var level = Singleton <UnlockManager> .instance.m_properties.m_ServicePolicyMilestones[index].GetLevel();
                    customMilestone.Milestones[level].Policies.Add(new ItemModel()
                    {
                        Name          = policyEnum.enumName,
                        LocalizedName = policyEnum.GetLocalizedName(),
                        Expansions    = policyEnum.enumCategory
                    });
                }

                //读取默认税收政策信息
                foreach (var policyEnum in Utils.GetOrderedEnumData <DistrictPolicies.Policies>("Taxation"))
                {
                    var index = (int)(policyEnum.enumValue & (DistrictPolicies.Policies) 31);
                    var level = Singleton <UnlockManager> .instance.m_properties.m_TaxationPolicyMilestones[index].GetLevel();
                    customMilestone.Milestones[level].Policies.Add(new ItemModel()
                    {
                        Name          = policyEnum.enumName,
                        LocalizedName = policyEnum.GetLocalizedName(),
                        Expansions    = policyEnum.enumCategory
                    });
                }

                //读取默认城市规划政策信息
                foreach (var policyEnum in Utils.GetOrderedEnumData <DistrictPolicies.Policies>("CityPlanning"))
                {
                    var index = (int)(policyEnum.enumValue & (DistrictPolicies.Policies) 31);
                    var level = Singleton <UnlockManager> .instance.m_properties.m_CityPlanningPolicyMilestones[index].GetLevel();
                    customMilestone.Milestones[level].Policies.Add(new ItemModel()
                    {
                        Name          = policyEnum.enumName,
                        LocalizedName = policyEnum.GetLocalizedName(),
                        Expansions    = policyEnum.enumCategory
                    });
                }

                //读取默认信息面板信息
                foreach (var infoMode in Utils.GetOrderedEnumData <InfoManager.InfoMode>())
                {
                    var level = Singleton <UnlockManager> .instance.m_properties.m_InfoModeMilestones[(int)infoMode.enumValue].GetLevel();
                    customMilestone.Milestones[level].InfoViews.Add(new ItemModel()
                    {
                        Name          = infoMode.enumName,
                        LocalizedName = Locale.Get("INFOVIEWS", infoMode.enumName)
                    });
                }

                XmlHelper.ToXmlFile(customMilestone, _xmlFilePath);
            }
            else
            {
                MilestoneInfo[] progressionMilestones = Singleton <UnlockManager> .instance.m_properties.m_progressionMilestones;

                //根据配置文件刷新里程碑信息
                foreach (MilestoneModel milestoneModel in customMilestone.Milestones)
                {
                    MilestoneInfo milestoneInfo = milestoneModel.Level > 0 ? progressionMilestones[milestoneModel.Level - 1] : null;

                    //刷新里程碑奖金、地块
                    var count = (milestoneModel.Level == 0 && milestoneModel.PurchaseAreasCount == 0) ? 1 : milestoneModel.PurchaseAreasCount;
                    var total = customMilestone.Milestones.Take(Array.IndexOf(customMilestone.Milestones, milestoneModel)).Sum(m => m.PurchaseAreasCount);
                    for (int i = total; i < total + count && i < 9; i++)
                    {
                        Singleton <UnlockManager> .instance.m_properties.m_AreaMilestones[i] = milestoneInfo;
                    }
                    if (milestoneInfo != null)
                    {
                        milestoneInfo.m_rewardCash = milestoneModel.RewardCash.Value;
                    }

                    //刷新道路
                    foreach (var roadModel in milestoneModel.Roads)
                    {
                        if (config.RoadIncludes.Contains(roadModel.Name) || config.RoadExistsBuildings.Contains(roadModel.Name))
                        {
                            RefreshRoadMilestone(roadModel.Name, milestoneInfo, config);
                        }
                    }

                    //刷新建筑
                    foreach (var buildingModel in milestoneModel.Buildings)
                    {
                        if (config.BuildingIncludes.Contains(buildingModel.Name) || config.BuildingExistsRoads.Contains(buildingModel.Name))
                        {
                            RefreshBuildingMilestone(buildingModel.Name, milestoneInfo, config);
                        }
                    }

                    //刷新功能
                    foreach (var featureModel in milestoneModel.Features)
                    {
                        if (config.Features.Contains(featureModel.Name))
                        {
                            RefreshFeatureMilestones(featureModel.Name, milestoneInfo, config);
                        }
                    }

                    //刷新服务
                    foreach (var serviceModel in milestoneModel.Services)
                    {
                        if (config.Services.Contains(serviceModel.Name) || config.ServiceExistsFeatures.Contains(serviceModel.Name))
                        {
                            RefreshServiceMilestones(serviceModel.Name, milestoneInfo, config);
                        }
                    }

                    //刷新政策
                    foreach (var policyModel in milestoneModel.Policies)
                    {
                        RefreshPolicyMilestones(policyModel.Name, milestoneInfo);
                    }
                }
            }
        }