/// <summary> /// 支配プロヴィンスのチェック /// </summary> /// <param name="provinces">プロヴィンスリスト</param> private static void CheckControlledProvinces(IEnumerable <Province> provinces) { foreach (Province province in provinces) { int id = province.Id; ProvinceSettings ps = Scenarios.GetProvinceSettings(id); IEnumerable <Country> countries = Scenarios.Data.Countries .Where(settings => settings.OwnedProvinces.Contains(id)) .Select(settings => settings.Country).ToList(); if (!countries.Any()) { string name = Scenarios.GetProvinceName(province, ps); WriteLine("{0}: {1} [{2}]", Resources.CheckResultNoProvinceController, id, name); Log.Error("[Scenario] no province controller: {0} [{1}]", id, name); } else if (countries.Count() > 1) { string name = Scenarios.GetProvinceName(province, ps); string tagList = Countries.GetTagList(countries); WriteLine("{0}: {1} [{2}] - {3}", Resources.CheckResultDuplicatedProvinceController, id, name, tagList); Log.Error("[Scenario] duplicated province controller: {0} [{1}] - {2}", id, name, tagList); } } }
private static void initProvince(ProvinceSettings provSettings) { map.ToggleProvinceSurface(map.GetProvinceIndex("Spain", provSettings.province), true, new Color(provSettings.initcolor.r / 255f, provSettings.initcolor.g / 255f, provSettings.initcolor.b / 255f), null, true); Vector2 barLocation = map.GetCity(provSettings.city, "Spain").unity2DLocation; GameObject provinceBars = (GameObject)Instantiate(Resources.Load("Bar3DSimple")); map.AddMarker3DObject(provinceBars, barLocation, 0.5f); provinceBars.transform.eulerAngles = new Vector3(0, 0, 0); provinceBars.transform.localScale = new Vector3(0.0005f, 0.0005f, 0.001f); provinceBars.transform.position = new Vector3(provinceBars.transform.position.x, provinceBars.transform.position.y - 0.1f, -3); }
/// <summary> /// テキストボックスのフォーカス移動後の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnProvinceIntItemTextBoxValidated(object sender, EventArgs e) { // 選択項目がなければ何もしない Province province = GetSelectedProvince(); if (province == null) { return; } TextBox control = sender as TextBox; if (control == null) { return; } ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag; ProvinceSettings settings = Scenarios.GetProvinceSettings(province.Id); // 文字列を数値に変換できなければ値を戻す int val; if (!IntHelper.TryParse(control.Text, out val)) { _controller.UpdateItemValue(control, settings); return; } // 初期値から変更されていなければ何もしない if ((settings == null) && (val == 0)) { return; } // 値に変化がなければ何もしない object prev = _controller.GetItemValue(itemId, settings); if ((prev != null) && (val == (int) prev)) { return; } if (settings == null) { settings = new ProvinceSettings { Id = province.Id }; Scenarios.AddProvinceSettings(settings); } _controller.OutputItemValueChangedLog(itemId, val, settings); // 値を更新する _controller.SetItemValue(itemId, val, settings); // 編集済みフラグを設定する _controller.SetItemDirty(itemId, settings); // 文字色を変更する control.ForeColor = Color.Red; // 項目値変更後の処理 _controller.PostItemChanged(itemId, val, settings); }
/// <summary> /// プロヴィンス情報の編集項目を更新する /// </summary> /// <param name="province">プロヴィンス</param> /// <param name="settings">プロヴィンス設定</param> private void UpdateProvinceInfoItems(Province province, ProvinceSettings settings) { _controller.UpdateItemValue(provinceIdTextBox, province); _controller.UpdateItemValue(provinceNameKeyTextBox, province, settings); _controller.UpdateItemValue(provinceNameStringTextBox, province, settings); _controller.UpdateItemValue(vpTextBox, settings); _controller.UpdateItemValue(revoltRiskTextBox, settings); _controller.UpdateItemColor(provinceNameKeyTextBox, settings); _controller.UpdateItemColor(provinceNameStringTextBox, settings); _controller.UpdateItemColor(vpTextBox, settings); _controller.UpdateItemColor(revoltRiskTextBox, settings); }
/// <summary> /// プロヴィンス設定を構文解析する /// </summary> /// <param name="lexer">字句解析器</param> /// <returns>プロヴィンス設定</returns> private static ProvinceSettings ParseProvince(TextLexer lexer) { // = Token token = lexer.GetToken(); if (token.Type != TokenType.Equal) { Log.InvalidToken(LogCategory, token, lexer); return null; } // { token = lexer.GetToken(); if (token.Type != TokenType.OpenBrace) { Log.InvalidToken(LogCategory, token, lexer); return null; } ProvinceSettings province = new ProvinceSettings(); while (true) { token = lexer.GetToken(); // ファイルの終端 if (token == null) { Log.MissingCloseBrace(LogCategory, "province", lexer); break; } // } (セクション終端) if (token.Type == TokenType.CloseBrace) { break; } // 無効なトークン if (token.Type != TokenType.Identifier) { Log.InvalidToken(LogCategory, token, lexer); lexer.SkipLine(); continue; } string keyword = token.Value as string; if (string.IsNullOrEmpty(keyword)) { continue; } keyword = keyword.ToLower(); // id if (keyword.Equals("id")) { int? n = ParseInt(lexer); if (!n.HasValue) { Log.InvalidClause(LogCategory, "id", lexer); continue; } // プロヴィンスID province.Id = (int) n; continue; } // ic if (keyword.Equals("ic")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "ic", lexer); continue; } // IC province.Ic = size; continue; } // infra if (keyword.Equals("infra")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "infra", lexer); continue; } // インフラ province.Infrastructure = size; continue; } // landfort if (keyword.Equals("landfort")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "landfort", lexer); continue; } // 陸上要塞 province.LandFort = size; continue; } // coastalfort if (keyword.Equals("coastalfort")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "coastalfort", lexer); continue; } // 沿岸要塞 province.CoastalFort = size; continue; } // anti_air if (keyword.Equals("anti_air")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "anti_air", lexer); continue; } // 対空砲 province.AntiAir = size; continue; } // air_base if (keyword.Equals("air_base")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "air_base", lexer); continue; } // 空軍基地 province.AirBase = size; continue; } // naval_base if (keyword.Equals("naval_base")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "naval_base", lexer); continue; } // 海軍基地 province.NavalBase = size; continue; } // radar_station if (keyword.Equals("radar_station")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "radar_station", lexer); continue; } // レーダー基地 province.RadarStation = size; continue; } // nuclear_reactor if (keyword.Equals("nuclear_reactor")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "nuclear_reactor", lexer); continue; } // 原子炉 province.NuclearReactor = size; continue; } // rocket_test if (keyword.Equals("rocket_test")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "rocket_test", lexer); continue; } // ロケット試験場 province.RocketTest = size; continue; } // synthetic_oil if (keyword.Equals("synthetic_oil")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "synthetic_oil", lexer); continue; } // 合成石油工場 province.SyntheticOil = size; continue; } // synthetic_rares if (keyword.Equals("synthetic_rares")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "synthetic_rares", lexer); continue; } // 合成素材工場 province.SyntheticRares = size; continue; } // nuclear_power if (keyword.Equals("nuclear_power")) { BuildingSize size = ParseSize(lexer); if (size == null) { Log.InvalidSection(LogCategory, "nuclear_power", lexer); continue; } // 原子力発電所 province.NuclearPower = size; continue; } // supplypool if (keyword.Equals("supplypool")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "supplypool", lexer); continue; } // 物資の備蓄量 province.SupplyPool = (double) d; continue; } // oilpool if (keyword.Equals("oilpool")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "oilpool", lexer); continue; } // 石油の備蓄量 province.OilPool = (double) d; continue; } // energypool if (keyword.Equals("energypool")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "energypool", lexer); continue; } // エネルギーの備蓄量 province.EnergyPool = (double) d; continue; } // metalpool if (keyword.Equals("metalpool")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "metalpool", lexer); continue; } // 金属の備蓄量 province.MetalPool = (double) d; continue; } // rarematerialspool if (keyword.Equals("rarematerialspool")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "rarematerialspool", lexer); continue; } // 希少資源の備蓄量 province.RareMaterialsPool = (double) d; continue; } // energy if (keyword.Equals("energy")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "energy", lexer); continue; } // エネルギー産出量 province.Energy = (double) d; continue; } // max_energy if (keyword.Equals("max_energy")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "max_energy", lexer); continue; } // 最大エネルギー産出量 province.MaxEnergy = (double) d; continue; } // metal if (keyword.Equals("metal")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "metal", lexer); continue; } // 金属産出量 province.Metal = (double) d; continue; } // max_metal if (keyword.Equals("max_metal")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "max_metal", lexer); continue; } // 最大金属産出量 province.MaxMetal = (double) d; continue; } // rare_materials if (keyword.Equals("rare_materials")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "rare_materials", lexer); continue; } // 希少資源産出量 province.RareMaterials = (double) d; continue; } // max_rare_materials if (keyword.Equals("max_rare_materials")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "max_rare_materials", lexer); continue; } // 最大希少資源産出量 province.MaxRareMaterials = (double) d; continue; } // oil if (keyword.Equals("oil")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "oil", lexer); continue; } // 石油産出量 province.Oil = (double) d; continue; } // max_oil if (keyword.Equals("max_oil")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "max_oil", lexer); continue; } // 最大石油産出量 province.MaxOil = (double) d; continue; } // manpower if (keyword.Equals("manpower")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "manpower", lexer); continue; } // 人的資源 province.Manpower = (double) d; continue; } // max_manpower if (keyword.Equals("max_manpower")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "max_manpower", lexer); continue; } // 最大人的資源 province.MaxManpower = (double) d; continue; } // points if (keyword.Equals("points")) { int? n = ParseInt(lexer); if (!n.HasValue) { Log.InvalidClause(LogCategory, "points", lexer); continue; } // 勝利ポイント province.Vp = (int) n; continue; } // province_revoltrisk if (keyword.Equals("province_revoltrisk")) { double? d = ParseDouble(lexer); if (!d.HasValue) { Log.InvalidClause(LogCategory, "province_revoltrisk", lexer); continue; } // 反乱率 province.RevoltRisk = (double) d; continue; } // weather if (keyword.Equals("weather")) { string s = ParseIdentifier(lexer); if (string.IsNullOrEmpty(s)) { continue; } s = s.ToLower(); if (!Scenarios.WeatherStrings.Contains(s)) { Log.InvalidToken(LogCategory, token, lexer); continue; } // 天候 province.Weather = (WeatherType) Array.IndexOf(Scenarios.WeatherStrings, s); continue; } if (Game.Type == GameType.DarkestHour) { // name if (keyword.Equals("name")) { string s = ParseStringOrIdentifier(lexer); if (string.IsNullOrEmpty(s)) { Log.InvalidClause(LogCategory, "name", lexer); continue; } // プロヴィンス名 province.Name = s; continue; } } // 無効なトークン Log.InvalidToken(LogCategory, token, lexer); lexer.SkipLine(); } return province; }
/// <summary> /// 項目値変更後の処理 - 建物相対値 /// </summary> /// <param name="control1">現在値のコントロール1</param> /// <param name="control2">最大値のコントロール2</param> /// <param name="val">編集項目の値</param> /// <param name="settings">プロヴィンス設定</param> private void PostItemChangedBuildingRelative(Control control1, Control control2, object val, ProvinceSettings settings) { // 現在値が0でなければクリアする ScenarioEditorItemId itemId1 = (ScenarioEditorItemId) control1.Tag; double current = (double) GetItemValue(itemId1, settings); if (!DoubleHelper.IsZero(current)) { OutputItemValueChangedLog(itemId1, val, settings); // 現在値を0に設定する SetItemValue(itemId1, (double) 0, settings); // 編集済みフラグを設定する SetItemDirty(itemId1, settings); // 編集項目の値をクリアする control1.Text = ""; } // 最大値が0でなければクリアする ScenarioEditorItemId itemId2 = (ScenarioEditorItemId) control2.Tag; double max = (double) GetItemValue(itemId2, settings); if (!DoubleHelper.IsZero(max)) { OutputItemValueChangedLog(itemId2, val, settings); // 最大値を0に設定する SetItemValue(itemId2, (double) 0, settings); // 編集済みフラグを設定する SetItemDirty(itemId2, settings); // 編集項目の値をクリアする control2.Text = ""; } }
/// <summary> /// 編集項目の値を更新する /// </summary> /// <param name="control">コントロール</param> /// <param name="province">プロヴィンス</param> /// <param name="settings">プロヴィンス設定</param> public void UpdateItemValue(TextBox control, Province province, ProvinceSettings settings) { ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag; control.Text = ObjectHelper.ToString(GetItemValue(itemId, province, settings)); switch (itemId) { case ScenarioEditorItemId.ProvinceNameString: // プロヴィンス設定のプロヴィンス名定義がなければ編集不可 control.ReadOnly = string.IsNullOrEmpty(settings?.Name); break; } }
/// <summary> /// 編集項目の色を更新する /// </summary> /// <param name="control">コントロール</param> /// <param name="settings">プロヴィンス設定</param> public void UpdateItemColor(Control control, ProvinceSettings settings) { ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag; control.ForeColor = IsItemDirty(itemId, settings) ? Color.Red : SystemColors.WindowText; }
/// <summary> /// 編集項目の編集済みフラグを設定する /// </summary> /// <param name="itemId">項目ID</param> /// <param name="settings">プロヴィンス設定</param> public void SetItemDirty(ScenarioEditorItemId itemId, ProvinceSettings settings) { settings.SetDirty((ProvinceSettings.ItemId) ItemDirtyFlags[(int) itemId]); switch (itemId) { case ScenarioEditorItemId.ProvinceNameKey: case ScenarioEditorItemId.ProvinceManpowerCurrent: case ScenarioEditorItemId.ProvinceManpowerMax: case ScenarioEditorItemId.ProvinceEnergyCurrent: case ScenarioEditorItemId.ProvinceEnergyMax: case ScenarioEditorItemId.ProvinceMetalCurrent: case ScenarioEditorItemId.ProvinceMetalMax: case ScenarioEditorItemId.ProvinceRareMaterialsCurrent: case ScenarioEditorItemId.ProvinceRareMaterialsMax: case ScenarioEditorItemId.ProvinceOilCurrent: case ScenarioEditorItemId.ProvinceOilMax: if (Scenarios.Data.IsBaseProvinceSettings || Scenarios.Data.IsCountryProvinceSettings) { Scenarios.Data.SetDirtyProvinces(); } else { Scenarios.Data.SetDirty(); } Scenarios.SetDirty(); break; case ScenarioEditorItemId.ProvinceEnergyPool: case ScenarioEditorItemId.ProvinceMetalPool: case ScenarioEditorItemId.ProvinceRareMaterialsPool: case ScenarioEditorItemId.ProvinceOilPool: case ScenarioEditorItemId.ProvinceSupplyPool: if (Scenarios.Data.IsDepotsProvinceSettings || Scenarios.Data.IsBaseProvinceSettings || Scenarios.Data.IsCountryProvinceSettings) { Scenarios.Data.SetDirtyProvinces(); } else { Scenarios.Data.SetDirty(); } Scenarios.SetDirty(); break; case ScenarioEditorItemId.ProvinceIcCurrent: case ScenarioEditorItemId.ProvinceIcMax: case ScenarioEditorItemId.ProvinceIcRelative: case ScenarioEditorItemId.ProvinceInfrastructureCurrent: case ScenarioEditorItemId.ProvinceInfrastructureMax: case ScenarioEditorItemId.ProvinceInfrastructureRelative: case ScenarioEditorItemId.ProvinceLandFortCurrent: case ScenarioEditorItemId.ProvinceLandFortMax: case ScenarioEditorItemId.ProvinceLandFortRelative: case ScenarioEditorItemId.ProvinceCoastalFortCurrent: case ScenarioEditorItemId.ProvinceCoastalFortMax: case ScenarioEditorItemId.ProvinceCoastalFortRelative: case ScenarioEditorItemId.ProvinceAntiAirCurrent: case ScenarioEditorItemId.ProvinceAntiAirMax: case ScenarioEditorItemId.ProvinceAntiAirRelative: case ScenarioEditorItemId.ProvinceAirBaseCurrent: case ScenarioEditorItemId.ProvinceAirBaseMax: case ScenarioEditorItemId.ProvinceAirBaseRelative: case ScenarioEditorItemId.ProvinceNavalBaseCurrent: case ScenarioEditorItemId.ProvinceNavalBaseMax: case ScenarioEditorItemId.ProvinceNavalBaseRelative: case ScenarioEditorItemId.ProvinceRadarStationCurrent: case ScenarioEditorItemId.ProvinceRadarStationMax: case ScenarioEditorItemId.ProvinceRadarStationRelative: case ScenarioEditorItemId.ProvinceNuclearReactorCurrent: case ScenarioEditorItemId.ProvinceNuclearReactorMax: case ScenarioEditorItemId.ProvinceNuclearReactorRelative: case ScenarioEditorItemId.ProvinceRocketTestCurrent: case ScenarioEditorItemId.ProvinceRocketTestMax: case ScenarioEditorItemId.ProvinceRocketTestRelative: case ScenarioEditorItemId.ProvinceSyntheticOilCurrent: case ScenarioEditorItemId.ProvinceSyntheticOilMax: case ScenarioEditorItemId.ProvinceSyntheticOilRelative: case ScenarioEditorItemId.ProvinceSyntheticRaresCurrent: case ScenarioEditorItemId.ProvinceSyntheticRaresMax: case ScenarioEditorItemId.ProvinceSyntheticRaresRelative: case ScenarioEditorItemId.ProvinceNuclearPowerCurrent: case ScenarioEditorItemId.ProvinceNuclearPowerMax: case ScenarioEditorItemId.ProvinceNuclearPowerRelative: case ScenarioEditorItemId.ProvinceRevoltRisk: if (Scenarios.Data.IsBaseDodProvinceSettings || Scenarios.Data.IsBaseProvinceSettings || Scenarios.Data.IsCountryProvinceSettings) { Scenarios.Data.SetDirtyProvinces(); } else { Scenarios.Data.SetDirty(); } Scenarios.SetDirty(); break; case ScenarioEditorItemId.ProvinceVp: if (Scenarios.Data.IsVpProvinceSettings) { Scenarios.Data.SetDirtyVpInc(); } else { Scenarios.Data.SetDirty(); } Scenarios.SetDirty(); break; } }
/// <summary> /// depots.incに保存するプロヴィンスデータが存在するかどうかを返す /// </summary> /// <param name="settings">プロヴィンス設定</param> /// <returns>depots.incに保存するデータが存在すればtrueを返す</returns> private static bool ExistsDepotsIncData(ProvinceSettings settings) { if (settings.EnergyPool > 0 || settings.MetalPool > 0 || settings.RareMaterialsPool > 0 || settings.OilPool > 0 || settings.SupplyPool > 0) { return true; } return false; }
/// <summary> /// 国別.incに保存するプロヴィンスデータが存在するかどうかを返す /// </summary> /// <param name="settings">プロヴィンス設定</param> /// <param name="scenario">シナリオデータ</param> /// <returns>bases.incに保存するデータが存在すればtrueを返す</returns> private static bool ExistsCountryIncData(ProvinceSettings settings, Scenario scenario) { if (Game.IsDhFull() && scenario.IsBaseProvinceSettings) { return false; } if (!scenario.IsBaseDodProvinceSettings) { if (settings.Ic != null || settings.Infrastructure != null) { return true; } } if (settings.LandFort != null || settings.CoastalFort != null || settings.AntiAir != null || settings.AirBase != null || settings.NavalBase != null || settings.RadarStation != null || settings.NuclearReactor != null || settings.RocketTest != null || settings.SyntheticOil != null || settings.SyntheticRares != null || settings.NuclearPower != null) { return true; } if (!scenario.IsDepotsProvinceSettings) { if (settings.SupplyPool > 0 || settings.OilPool > 0 || settings.EnergyPool > 0 || settings.MetalPool > 0 || settings.RareMaterialsPool > 0) { return true; } } if (settings.RevoltRisk > 0 || settings.Manpower > 0 || settings.MaxManpower > 0 || settings.Energy > 0 || settings.MaxEnergy > 0 || settings.Metal > 0 || settings.MaxMetal > 0 || settings.RareMaterials > 0 || settings.MaxRareMaterials > 0 || settings.Oil > 0 || settings.MaxOil > 0) { return true; } if (!string.IsNullOrEmpty(settings.Name)) { return true; } if (settings.Weather != WeatherType.None) { return true; } return false; }
/// <summary> /// bases_DOD.incに保存するプロヴィンスデータが存在するかどうかを返す /// </summary> /// <param name="settings">プロヴィンス設定</param> /// <returns>bases_DOD.incに保存するデータが存在すればtrueを返す</returns> private static bool ExistsBasesDodIncData(ProvinceSettings settings) { return (settings.Ic != null) || (settings.Infrastructure != null); }
/// <summary> /// 単一行のプロヴィンス設定を国別incに書き込む /// </summary> /// <param name="settings">プロヴィンス設定</param> /// <param name="scenario">シナリオデータ</param> /// <param name="writer">ファイル書き込み用</param> private static void WriteCountryProvinceSingleLine(ProvinceSettings settings, Scenario scenario, TextWriter writer) { Province province = Provinces.Items[settings.Id]; writer.Write("province = {{ id = {0}", settings.Id); if (settings.Ic != null) { writer.Write(" ic = "); WriteBuilding(settings.Ic, writer); } if (settings.Infrastructure != null) { writer.Write(" infra = "); WriteBuilding(settings.Infrastructure, writer); } if (settings.LandFort != null) { writer.Write(" landfort = "); WriteBuilding(settings.LandFort, writer); } if (settings.CoastalFort != null) { writer.Write(" coastalfort = "); WriteBuilding(settings.CoastalFort, writer); } if (settings.AntiAir != null) { writer.Write(" anti_air = "); WriteBuilding(settings.AntiAir, writer); } if (!scenario.IsBaseProvinceSettings) { if (settings.AirBase != null) { writer.Write(" air_base = "); WriteBuilding(settings.AirBase, writer); } if (settings.NavalBase != null) { writer.Write(" naval_base = "); WriteBuilding(settings.NavalBase, writer); } } if (settings.RadarStation != null) { writer.Write(" radar_station = "); WriteBuilding(settings.RadarStation, writer); } if (settings.NuclearReactor != null) { writer.Write(" nuclear_reactor = "); WriteBuilding(settings.NuclearReactor, writer); } if (settings.RocketTest != null) { writer.Write(" rocket_test = "); WriteBuilding(settings.RocketTest, writer); } if (Game.Type == GameType.ArsenalOfDemocracy) { if (settings.SyntheticOil != null) { writer.Write(" synthetic_oil = "); WriteBuilding(settings.SyntheticOil, writer); } if (settings.SyntheticRares != null) { writer.Write(" synthetic_rares = "); WriteBuilding(settings.SyntheticRares, writer); } if (settings.NuclearPower != null) { writer.Write(" nuclear_power = "); WriteBuilding(settings.NuclearPower, writer); } } if (settings.SupplyPool > 0) { writer.Write(" supplypool = {0}", ObjectHelper.ToString(settings.SupplyPool)); } if (settings.OilPool > 0) { writer.Write(" oilpool = {0}", ObjectHelper.ToString(settings.OilPool)); } writer.WriteLine(" }} # {0}", Scenarios.GetProvinceName(province, settings)); }
/// <summary> /// 複数行のプロヴィンス設定を国別incに書き込む /// </summary> /// <param name="settings">プロヴィンス設定</param> /// <param name="scenario">シナリオデータ</param> /// <param name="writer">ファイル書き込み用</param> private static void WriteCountryProvinceMultiLine(ProvinceSettings settings, Scenario scenario, TextWriter writer) { Province province = Provinces.Items[settings.Id]; writer.WriteLine("province = {"); writer.WriteLine(" id = {0} # {1}", settings.Id, Scenarios.GetProvinceName(province, settings)); if (settings.Ic != null) { writer.Write(" ic = "); WriteBuilding(settings.Ic, writer); writer.WriteLine(); } if (settings.Infrastructure != null) { writer.Write(" infra = "); WriteBuilding(settings.Infrastructure, writer); writer.WriteLine(); } if (settings.LandFort != null) { writer.Write(" landfort = "); WriteBuilding(settings.LandFort, writer); writer.WriteLine(); } if (settings.CoastalFort != null) { writer.Write(" coastalfort = "); WriteBuilding(settings.CoastalFort, writer); writer.WriteLine(); } if (settings.AntiAir != null) { writer.Write(" anti_air = "); WriteBuilding(settings.AntiAir, writer); writer.WriteLine(); } if (!scenario.IsBaseProvinceSettings) { if (settings.AirBase != null) { writer.Write(" air_base = "); WriteBuilding(settings.AirBase, writer); writer.WriteLine(); } if (settings.NavalBase != null) { writer.Write(" naval_base = "); WriteBuilding(settings.NavalBase, writer); writer.WriteLine(); } } if (settings.RadarStation != null) { writer.Write(" radar_station = "); WriteBuilding(settings.RadarStation, writer); writer.WriteLine(); } if (settings.NuclearReactor != null) { writer.Write(" nuclear_reactor = "); WriteBuilding(settings.NuclearReactor, writer); writer.WriteLine(); } if (settings.RocketTest != null) { writer.Write(" rocket_test = "); WriteBuilding(settings.RocketTest, writer); writer.WriteLine(); } if (Game.Type == GameType.ArsenalOfDemocracy) { if (settings.SyntheticOil != null) { writer.Write(" synthetic_oil = "); WriteBuilding(settings.SyntheticOil, writer); writer.WriteLine(); } if (settings.SyntheticRares != null) { writer.Write(" synthetic_rares = "); WriteBuilding(settings.SyntheticRares, writer); writer.WriteLine(); } if (settings.NuclearPower != null) { writer.Write(" nuclear_power = "); WriteBuilding(settings.NuclearPower, writer); writer.WriteLine(); } } if (settings.SupplyPool > 0) { writer.WriteLine(" supplypool = {0}", ObjectHelper.ToString(settings.SupplyPool)); } if (settings.OilPool > 0) { writer.WriteLine(" oilpool = {0}", ObjectHelper.ToString(settings.OilPool)); } if (settings.EnergyPool > 0) { writer.WriteLine(" energypool = {0}", ObjectHelper.ToString(settings.EnergyPool)); } if (settings.MetalPool > 0) { writer.WriteLine(" metalpool = {0}", ObjectHelper.ToString(settings.MetalPool)); } if (settings.RareMaterialsPool > 0) { writer.WriteLine(" rarematerialspool = {0}", ObjectHelper.ToString(settings.RareMaterialsPool)); } if (settings.Energy > 0) { writer.WriteLine(" energy = {0}", ObjectHelper.ToString(settings.Energy)); } if (settings.MaxEnergy > 0) { writer.WriteLine(" max_energy = {0}", ObjectHelper.ToString(settings.MaxEnergy)); } if (settings.Metal > 0) { writer.WriteLine(" metal = {0}", ObjectHelper.ToString(settings.Metal)); } if (settings.MaxMetal > 0) { writer.WriteLine(" max_metal = {0}", ObjectHelper.ToString(settings.MaxMetal)); } if (settings.RareMaterials > 0) { writer.WriteLine(" rare_materials = {0}", ObjectHelper.ToString(settings.RareMaterials)); } if (settings.MaxRareMaterials > 0) { writer.WriteLine(" max_rare_materials = {0}", ObjectHelper.ToString(settings.MaxRareMaterials)); } if (settings.Oil > 0) { writer.WriteLine(" oil = {0}", ObjectHelper.ToString(settings.Oil)); } if (settings.MaxOil > 0) { writer.WriteLine(" max_oil = {0}", ObjectHelper.ToString(settings.MaxOil)); } if (settings.Manpower > 0) { writer.WriteLine(" manpower = {0}", ObjectHelper.ToString(settings.Manpower)); } if (settings.MaxManpower > 0) { writer.WriteLine(" max_manpower = {0}", ObjectHelper.ToString(settings.MaxManpower)); } if (settings.RevoltRisk > 0) { writer.WriteLine(" province_revoltrisk = {0}", ObjectHelper.ToString(settings.RevoltRisk)); } if (!string.IsNullOrEmpty(settings.Name)) { writer.WriteLine(" name = {0} ", settings.Name); } if (settings.Weather != WeatherType.None) { writer.WriteLine(" weather = {0}", Scenarios.WeatherStrings[(int) settings.Weather]); } writer.WriteLine("}"); }
/// <summary> /// プロヴィンス設定を国別incに書き込む /// </summary> /// <param name="settings">プロヴィンス設定</param> /// <param name="scenario">シナリオデータ</param> /// <param name="writer">ファイル書き込み用</param> private static void WriteCountryProvince(ProvinceSettings settings, Scenario scenario, TextWriter writer) { if (IsProvinceSingleLine(settings)) { WriteCountryProvinceSingleLine(settings, scenario, writer); } else { WriteCountryProvinceMultiLine(settings, scenario, writer); } }
/// <summary> /// プロヴィンス名を取得する /// </summary> /// <param name="province">プロヴィンス</param> /// <param name="settings">プロヴィンス設定</param> /// <returns>プロヴィンス名</returns> public static string GetProvinceName(Province province, ProvinceSettings settings) { if (!string.IsNullOrEmpty(settings?.Name)) { return Config.ExistsKey(settings.Name) ? Config.GetText(settings.Name) : ""; } return province.GetName(); }
/// <summary> /// 項目変更前の処理 /// </summary> /// <param name="itemId">項目ID</param> /// <param name="settings">プロヴィンス設定</param> public void PreItemChanged(ScenarioEditorItemId itemId, ProvinceSettings settings) { switch (itemId) { case ScenarioEditorItemId.ProvinceIcCurrent: case ScenarioEditorItemId.ProvinceIcMax: case ScenarioEditorItemId.ProvinceIcRelative: if (settings.Ic == null) { settings.Ic = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceInfrastructureCurrent: case ScenarioEditorItemId.ProvinceInfrastructureMax: case ScenarioEditorItemId.ProvinceInfrastructureRelative: if (settings.Infrastructure == null) { settings.Infrastructure = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceLandFortCurrent: case ScenarioEditorItemId.ProvinceLandFortMax: case ScenarioEditorItemId.ProvinceLandFortRelative: if (settings.LandFort == null) { settings.LandFort = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceCoastalFortCurrent: case ScenarioEditorItemId.ProvinceCoastalFortMax: case ScenarioEditorItemId.ProvinceCoastalFortRelative: if (settings.CoastalFort == null) { settings.CoastalFort = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceAntiAirCurrent: case ScenarioEditorItemId.ProvinceAntiAirMax: case ScenarioEditorItemId.ProvinceAntiAirRelative: if (settings.AntiAir == null) { settings.AntiAir = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceAirBaseCurrent: case ScenarioEditorItemId.ProvinceAirBaseMax: case ScenarioEditorItemId.ProvinceAirBaseRelative: if (settings.AirBase == null) { settings.AirBase = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceNavalBaseCurrent: case ScenarioEditorItemId.ProvinceNavalBaseMax: case ScenarioEditorItemId.ProvinceNavalBaseRelative: if (settings.NavalBase == null) { settings.NavalBase = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceRadarStationCurrent: case ScenarioEditorItemId.ProvinceRadarStationMax: case ScenarioEditorItemId.ProvinceRadarStationRelative: if (settings.RadarStation == null) { settings.RadarStation = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceNuclearReactorCurrent: case ScenarioEditorItemId.ProvinceNuclearReactorMax: case ScenarioEditorItemId.ProvinceNuclearReactorRelative: if (settings.NuclearReactor == null) { settings.NuclearReactor = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceRocketTestCurrent: case ScenarioEditorItemId.ProvinceRocketTestMax: case ScenarioEditorItemId.ProvinceRocketTestRelative: if (settings.RocketTest == null) { settings.RocketTest = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceSyntheticOilCurrent: case ScenarioEditorItemId.ProvinceSyntheticOilMax: case ScenarioEditorItemId.ProvinceSyntheticOilRelative: if (settings.SyntheticOil == null) { settings.SyntheticOil = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceSyntheticRaresCurrent: case ScenarioEditorItemId.ProvinceSyntheticRaresMax: case ScenarioEditorItemId.ProvinceSyntheticRaresRelative: if (settings.SyntheticRares == null) { settings.SyntheticRares = new BuildingSize(); } break; case ScenarioEditorItemId.ProvinceNuclearPowerCurrent: case ScenarioEditorItemId.ProvinceNuclearPowerMax: case ScenarioEditorItemId.ProvinceNuclearPowerRelative: if (settings.NuclearPower == null) { settings.NuclearPower = new BuildingSize(); } break; } }
/// <summary> /// プロヴィンス設定が単一行で記載できるかどうかを返す /// </summary> /// <param name="settings">プロヴィンス設定</param> /// <returns>単一行で記載できればtrueを返す</returns> private static bool IsProvinceSingleLine(ProvinceSettings settings) { if ((settings.Ic != null && settings.Ic.MaxSize > 0) || (settings.Infrastructure != null && settings.Infrastructure.MaxSize > 0) || (settings.LandFort != null && settings.LandFort.MaxSize > 0) || (settings.CoastalFort != null && settings.CoastalFort.MaxSize > 0) || (settings.AntiAir != null && settings.AntiAir.MaxSize > 0) || (settings.AirBase != null && settings.AirBase.MaxSize > 0) || (settings.NavalBase != null && settings.NavalBase.MaxSize > 0) || (settings.RadarStation != null && settings.RadarStation.MaxSize > 0) || (settings.NuclearReactor != null && settings.NuclearReactor.MaxSize > 0) || (settings.RocketTest != null && settings.RocketTest.MaxSize > 0) || (settings.SyntheticOil != null && settings.SyntheticOil.MaxSize > 0) || (settings.SyntheticRares != null && settings.SyntheticRares.MaxSize > 0) || (settings.NuclearPower != null && settings.NuclearPower.MaxSize > 0)) { return false; } if (settings.EnergyPool > 0 || settings.MetalPool > 0 || settings.RareMaterialsPool > 0 || settings.Energy > 0 || settings.MaxEnergy > 0 || settings.Metal > 0 || settings.MaxMetal > 0 || settings.RareMaterials > 0 || settings.MaxRareMaterials > 0 || settings.Oil > 0 || settings.MaxOil > 0 || settings.Manpower > 0 || settings.MaxManpower > 0 || settings.RevoltRisk > 0) { return false; } if (!string.IsNullOrEmpty(settings.Name)) { return false; } if (settings.Weather != WeatherType.None) { return false; } return true; }
/// <summary> /// 編集項目の値を設定する /// </summary> /// <param name="itemId">項目ID</param> /// <param name="val">編集項目の値</param> /// <param name="settings">プロヴィンス設定</param> public void SetItemValue(ScenarioEditorItemId itemId, object val, ProvinceSettings settings) { switch (itemId) { case ScenarioEditorItemId.ProvinceNameKey: settings.Name = (string) val; break; case ScenarioEditorItemId.ProvinceNameString: Config.SetText(settings.Name, (string) val, Game.ProvinceTextFileName); break; case ScenarioEditorItemId.ProvinceVp: settings.Vp = (int) val; break; case ScenarioEditorItemId.ProvinceRevoltRisk: settings.RevoltRisk = (double) val; break; case ScenarioEditorItemId.ProvinceManpowerCurrent: settings.Manpower = (double) val; break; case ScenarioEditorItemId.ProvinceManpowerMax: settings.MaxManpower = (double) val; break; case ScenarioEditorItemId.ProvinceEnergyPool: settings.EnergyPool = (double) val; break; case ScenarioEditorItemId.ProvinceEnergyCurrent: settings.Energy = (double) val; break; case ScenarioEditorItemId.ProvinceEnergyMax: settings.MaxEnergy = (double) val; break; case ScenarioEditorItemId.ProvinceMetalPool: settings.MetalPool = (double) val; break; case ScenarioEditorItemId.ProvinceMetalCurrent: settings.Metal = (double) val; break; case ScenarioEditorItemId.ProvinceMetalMax: settings.MaxMetal = (double) val; break; case ScenarioEditorItemId.ProvinceRareMaterialsPool: settings.RareMaterialsPool = (double) val; break; case ScenarioEditorItemId.ProvinceRareMaterialsCurrent: settings.RareMaterials = (double) val; break; case ScenarioEditorItemId.ProvinceRareMaterialsMax: settings.MaxRareMaterials = (double) val; break; case ScenarioEditorItemId.ProvinceOilPool: settings.OilPool = (double) val; break; case ScenarioEditorItemId.ProvinceOilCurrent: settings.Oil = (double) val; break; case ScenarioEditorItemId.ProvinceOilMax: settings.MaxOil = (double) val; break; case ScenarioEditorItemId.ProvinceSupplyPool: settings.SupplyPool = (double) val; break; case ScenarioEditorItemId.ProvinceIcCurrent: settings.Ic.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceIcMax: settings.Ic.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceIcRelative: settings.Ic.Size = (double) val; break; case ScenarioEditorItemId.ProvinceInfrastructureCurrent: settings.Infrastructure.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceInfrastructureMax: settings.Infrastructure.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceInfrastructureRelative: settings.Infrastructure.Size = (double) val; break; case ScenarioEditorItemId.ProvinceLandFortCurrent: settings.LandFort.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceLandFortMax: settings.LandFort.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceLandFortRelative: settings.LandFort.Size = (double) val; break; case ScenarioEditorItemId.ProvinceCoastalFortCurrent: settings.CoastalFort.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceCoastalFortMax: settings.CoastalFort.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceCoastalFortRelative: settings.CoastalFort.Size = (double) val; break; case ScenarioEditorItemId.ProvinceAntiAirCurrent: settings.AntiAir.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceAntiAirMax: settings.AntiAir.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceAntiAirRelative: settings.AntiAir.Size = (double) val; break; case ScenarioEditorItemId.ProvinceAirBaseCurrent: settings.AirBase.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceAirBaseMax: settings.AirBase.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceAirBaseRelative: settings.AirBase.Size = (double) val; break; case ScenarioEditorItemId.ProvinceNavalBaseCurrent: settings.NavalBase.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceNavalBaseMax: settings.NavalBase.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceNavalBaseRelative: settings.NavalBase.Size = (double) val; break; case ScenarioEditorItemId.ProvinceRadarStationCurrent: settings.RadarStation.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceRadarStationMax: settings.RadarStation.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceRadarStationRelative: settings.RadarStation.Size = (double) val; break; case ScenarioEditorItemId.ProvinceNuclearReactorCurrent: settings.NuclearReactor.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceNuclearReactorMax: settings.NuclearReactor.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceNuclearReactorRelative: settings.NuclearReactor.Size = (double) val; break; case ScenarioEditorItemId.ProvinceRocketTestCurrent: settings.RocketTest.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceRocketTestMax: settings.RocketTest.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceRocketTestRelative: settings.RocketTest.Size = (double) val; break; case ScenarioEditorItemId.ProvinceSyntheticOilCurrent: settings.SyntheticOil.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceSyntheticOilMax: settings.SyntheticOil.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceSyntheticOilRelative: settings.SyntheticOil.Size = (double) val; break; case ScenarioEditorItemId.ProvinceSyntheticRaresCurrent: settings.SyntheticRares.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceSyntheticRaresMax: settings.SyntheticRares.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceSyntheticRaresRelative: settings.SyntheticRares.Size = (double) val; break; case ScenarioEditorItemId.ProvinceNuclearPowerCurrent: settings.NuclearPower.CurrentSize = (double) val; break; case ScenarioEditorItemId.ProvinceNuclearPowerMax: settings.NuclearPower.MaxSize = (double) val; break; case ScenarioEditorItemId.ProvinceNuclearPowerRelative: settings.NuclearPower.Size = (double) val; break; } }
/// <summary> /// 編集項目の値を取得する /// </summary> /// <param name="itemId">項目ID</param> /// <param name="settings">プロヴィンス設定</param> /// <returns>編集項目の値</returns> public object GetItemValue(ScenarioEditorItemId itemId, ProvinceSettings settings) { switch (itemId) { case ScenarioEditorItemId.ProvinceVp: return settings?.Vp ?? 0; case ScenarioEditorItemId.ProvinceRevoltRisk: return settings?.RevoltRisk ?? 0; case ScenarioEditorItemId.ProvinceManpowerCurrent: return settings?.Manpower ?? 0; case ScenarioEditorItemId.ProvinceManpowerMax: return settings?.MaxManpower ?? 0; case ScenarioEditorItemId.ProvinceEnergyPool: return settings?.EnergyPool ?? 0; case ScenarioEditorItemId.ProvinceEnergyCurrent: return settings?.Energy ?? 0; case ScenarioEditorItemId.ProvinceEnergyMax: return settings?.MaxEnergy ?? 0; case ScenarioEditorItemId.ProvinceMetalPool: return settings?.MetalPool ?? 0; case ScenarioEditorItemId.ProvinceMetalCurrent: return settings?.Metal ?? 0; case ScenarioEditorItemId.ProvinceMetalMax: return settings?.MaxMetal ?? 0; case ScenarioEditorItemId.ProvinceRareMaterialsPool: return settings?.RareMaterialsPool ?? 0; case ScenarioEditorItemId.ProvinceRareMaterialsCurrent: return settings?.RareMaterials ?? 0; case ScenarioEditorItemId.ProvinceRareMaterialsMax: return settings?.MaxRareMaterials ?? 0; case ScenarioEditorItemId.ProvinceOilPool: return settings?.OilPool ?? 0; case ScenarioEditorItemId.ProvinceOilCurrent: return settings?.Oil ?? 0; case ScenarioEditorItemId.ProvinceOilMax: return settings?.MaxOil ?? 0; case ScenarioEditorItemId.ProvinceSupplyPool: return settings?.SupplyPool ?? 0; case ScenarioEditorItemId.ProvinceIcCurrent: return settings?.Ic?.CurrentSize; case ScenarioEditorItemId.ProvinceIcMax: return settings?.Ic?.MaxSize; case ScenarioEditorItemId.ProvinceIcRelative: return settings?.Ic?.Size; case ScenarioEditorItemId.ProvinceInfrastructureCurrent: return settings?.Infrastructure?.CurrentSize; case ScenarioEditorItemId.ProvinceInfrastructureMax: return settings?.Infrastructure?.MaxSize; case ScenarioEditorItemId.ProvinceInfrastructureRelative: return settings?.Infrastructure?.Size; case ScenarioEditorItemId.ProvinceLandFortCurrent: return settings?.LandFort?.CurrentSize; case ScenarioEditorItemId.ProvinceLandFortMax: return settings?.LandFort?.MaxSize; case ScenarioEditorItemId.ProvinceLandFortRelative: return settings?.LandFort?.Size; case ScenarioEditorItemId.ProvinceCoastalFortCurrent: return settings?.CoastalFort?.CurrentSize; case ScenarioEditorItemId.ProvinceCoastalFortMax: return settings?.CoastalFort?.MaxSize; case ScenarioEditorItemId.ProvinceCoastalFortRelative: return settings?.CoastalFort?.Size; case ScenarioEditorItemId.ProvinceAntiAirCurrent: return settings?.AntiAir?.CurrentSize; case ScenarioEditorItemId.ProvinceAntiAirMax: return settings?.AntiAir?.MaxSize; case ScenarioEditorItemId.ProvinceAntiAirRelative: return settings?.AntiAir?.Size; case ScenarioEditorItemId.ProvinceAirBaseCurrent: return settings?.AirBase?.CurrentSize; case ScenarioEditorItemId.ProvinceAirBaseMax: return settings?.AirBase?.MaxSize; case ScenarioEditorItemId.ProvinceAirBaseRelative: return settings?.AirBase?.Size; case ScenarioEditorItemId.ProvinceNavalBaseCurrent: return settings?.NavalBase?.CurrentSize; case ScenarioEditorItemId.ProvinceNavalBaseMax: return settings?.NavalBase?.MaxSize; case ScenarioEditorItemId.ProvinceNavalBaseRelative: return settings?.NavalBase?.Size; case ScenarioEditorItemId.ProvinceRadarStationCurrent: return settings?.RadarStation?.CurrentSize; case ScenarioEditorItemId.ProvinceRadarStationMax: return settings?.RadarStation?.MaxSize; case ScenarioEditorItemId.ProvinceRadarStationRelative: return settings?.RadarStation?.Size; case ScenarioEditorItemId.ProvinceNuclearReactorCurrent: return settings?.NuclearReactor?.CurrentSize; case ScenarioEditorItemId.ProvinceNuclearReactorMax: return settings?.NuclearReactor?.MaxSize; case ScenarioEditorItemId.ProvinceNuclearReactorRelative: return settings?.NuclearReactor?.Size; case ScenarioEditorItemId.ProvinceRocketTestCurrent: return settings?.RocketTest?.CurrentSize; case ScenarioEditorItemId.ProvinceRocketTestMax: return settings?.RocketTest?.MaxSize; case ScenarioEditorItemId.ProvinceRocketTestRelative: return settings?.RocketTest?.Size; case ScenarioEditorItemId.ProvinceSyntheticOilCurrent: return settings?.SyntheticOil?.CurrentSize; case ScenarioEditorItemId.ProvinceSyntheticOilMax: return settings?.SyntheticOil?.MaxSize; case ScenarioEditorItemId.ProvinceSyntheticOilRelative: return settings?.SyntheticOil?.Size; case ScenarioEditorItemId.ProvinceSyntheticRaresCurrent: return settings?.SyntheticRares?.CurrentSize; case ScenarioEditorItemId.ProvinceSyntheticRaresMax: return settings?.SyntheticRares?.MaxSize; case ScenarioEditorItemId.ProvinceSyntheticRaresRelative: return settings?.SyntheticRares?.Size; case ScenarioEditorItemId.ProvinceNuclearPowerCurrent: return settings?.NuclearPower?.CurrentSize; case ScenarioEditorItemId.ProvinceNuclearPowerMax: return settings?.NuclearPower?.MaxSize; case ScenarioEditorItemId.ProvinceNuclearPowerRelative: return settings?.NuclearPower?.Size; } return null; }
/// <summary> /// 編集項目の値を更新する /// </summary> /// <param name="control">コントロール</param> /// <param name="settings">プロヴィンス設定</param> public void UpdateItemValue(Control control, ProvinceSettings settings) { ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag; control.Text = ObjectHelper.ToString(GetItemValue(itemId, settings)); }
/// <summary> /// 編集項目の値を取得する /// </summary> /// <param name="itemId">項目ID</param> /// <param name="province">プロヴィンス</param> /// <param name="settings">プロヴィンス設定</param> /// <returns>編集項目の値</returns> public object GetItemValue(ScenarioEditorItemId itemId, Province province, ProvinceSettings settings) { switch (itemId) { case ScenarioEditorItemId.ProvinceNameKey: return !string.IsNullOrEmpty(settings?.Name) ? settings.Name : ""; case ScenarioEditorItemId.ProvinceNameString: return Scenarios.GetProvinceName(province, settings); } return null; }
/// <summary> /// 項目値変更後の処理 - 建物最大値 /// </summary> /// <param name="control1">現在値のコントロール1</param> /// <param name="control2">相対値のコントロール2</param> /// <param name="val">編集項目の値</param> /// <param name="settings">プロヴィンス設定</param> private void PostItemChangedBuildingMax(Control control1, Control control2, object val, ProvinceSettings settings) { // 相対値が0でなければクリアする ScenarioEditorItemId itemId2 = (ScenarioEditorItemId) control2.Tag; double relative = (double) GetItemValue(itemId2, settings); if (!DoubleHelper.IsZero(relative)) { OutputItemValueChangedLog(itemId2, val, settings); // 相対値を0に設定する SetItemValue(itemId2, (double) 0, settings); // 編集済みフラグを設定する SetItemDirty(itemId2, settings); // 編集項目の値をクリアする control2.Text = ""; } // 最大値が現在値以上ならば何もしない ScenarioEditorItemId itemId1 = (ScenarioEditorItemId) control1.Tag; double current = (double) GetItemValue(itemId1, settings); if (DoubleHelper.IsGreaterOrEqual((double) val, current)) { return; } OutputItemValueChangedLog(itemId1, val, settings); // 現在値を最大値で更新する SetItemValue(itemId1, val, settings); // 編集済みフラグを設定する SetItemDirty(itemId1, settings); // 編集項目の値を更新する control1.Text = DoubleHelper.ToString((double) val); // 編集項目の色を更新する control1.ForeColor = Color.Red; }
/// <summary> /// 編集項目の編集済みフラグを取得する /// </summary> /// <param name="itemId">項目ID</param> /// <param name="settings">プロヴィンス設定</param> /// <returns>編集済みフラグ</returns> public bool IsItemDirty(ScenarioEditorItemId itemId, ProvinceSettings settings) { return (settings != null) && settings.IsDirty((ProvinceSettings.ItemId) ItemDirtyFlags[(int) itemId]); }
/// <summary> /// 項目値変更後の処理 - 資源最大値 /// </summary> /// <param name="control">現在値のコントロール</param> /// <param name="val">編集項目の値</param> /// <param name="settings">プロヴィンス設定</param> private void PostItemChangedResourceMax(Control control, object val, ProvinceSettings settings) { // 最大値が現在値以上ならば何もしない ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag; double current = (double) GetItemValue(itemId, settings); if (DoubleHelper.IsGreaterOrEqual((double) val, current)) { return; } OutputItemValueChangedLog(itemId, val, settings); // 現在値を最大値で更新する SetItemValue(itemId, val, settings); // 編集済みフラグを設定する SetItemDirty(itemId, settings); // 編集項目の値を更新する control.Text = DoubleHelper.ToString((double) val); // 編集項目の色を更新する control.ForeColor = Color.Red; }
/// <summary> /// 編集項目の値変更時のログを出力する /// </summary> /// <param name="itemId">項目ID</param> /// <param name="val">編集項目の値</param> /// <param name="province">プロヴィンス</param> /// <param name="settings">プロヴィンス設定</param> public void OutputItemValueChangedLog(ScenarioEditorItemId itemId, object val, Province province, ProvinceSettings settings) { switch (itemId) { case ScenarioEditorItemId.ProvinceNameKey: case ScenarioEditorItemId.ProvinceNameString: Log.Info("[Scenario] {0}: {1} -> {2} ({3})", ItemStrings[(int) itemId], GetItemValue(itemId, province, settings), val, province.Id); break; } }
/// <summary> /// プロヴィンス建物情報の編集項目を更新する /// </summary> /// <param name="settings">プロヴィンス設定</param> private void UpdateProvinceBuildingItems(ProvinceSettings settings) { _controller.UpdateItemValue(icCurrentTextBox, settings); _controller.UpdateItemValue(icMaxTextBox, settings); _controller.UpdateItemValue(icRelativeTextBox, settings); _controller.UpdateItemValue(infrastructureCurrentTextBox, settings); _controller.UpdateItemValue(infrastructureMaxTextBox, settings); _controller.UpdateItemValue(infrastructureRelativeTextBox, settings); _controller.UpdateItemValue(landFortCurrentTextBox, settings); _controller.UpdateItemValue(landFortMaxTextBox, settings); _controller.UpdateItemValue(landFortRelativeTextBox, settings); _controller.UpdateItemValue(coastalFortCurrentTextBox, settings); _controller.UpdateItemValue(coastalFortMaxTextBox, settings); _controller.UpdateItemValue(coastalFortRelativeTextBox, settings); _controller.UpdateItemValue(antiAirCurrentTextBox, settings); _controller.UpdateItemValue(antiAirMaxTextBox, settings); _controller.UpdateItemValue(antiAirRelativeTextBox, settings); _controller.UpdateItemValue(airBaseCurrentTextBox, settings); _controller.UpdateItemValue(airBaseMaxTextBox, settings); _controller.UpdateItemValue(airBaseRelativeTextBox, settings); _controller.UpdateItemValue(navalBaseCurrentTextBox, settings); _controller.UpdateItemValue(navalBaseMaxTextBox, settings); _controller.UpdateItemValue(navalBaseRelativeTextBox, settings); _controller.UpdateItemValue(radarStationCurrentTextBox, settings); _controller.UpdateItemValue(radarStationMaxTextBox, settings); _controller.UpdateItemValue(radarStationRelativeTextBox, settings); _controller.UpdateItemValue(nuclearReactorCurrentTextBox, settings); _controller.UpdateItemValue(nuclearReactorMaxTextBox, settings); _controller.UpdateItemValue(nuclearReactorRelativeTextBox, settings); _controller.UpdateItemValue(rocketTestCurrentTextBox, settings); _controller.UpdateItemValue(rocketTestMaxTextBox, settings); _controller.UpdateItemValue(rocketTestRelativeTextBox, settings); _controller.UpdateItemValue(syntheticOilCurrentTextBox, settings); _controller.UpdateItemValue(syntheticOilMaxTextBox, settings); _controller.UpdateItemValue(syntheticOilRelativeTextBox, settings); _controller.UpdateItemValue(syntheticRaresCurrentTextBox, settings); _controller.UpdateItemValue(syntheticRaresMaxTextBox, settings); _controller.UpdateItemValue(syntheticRaresRelativeTextBox, settings); _controller.UpdateItemValue(nuclearPowerCurrentTextBox, settings); _controller.UpdateItemValue(nuclearPowerMaxTextBox, settings); _controller.UpdateItemValue(nuclearPowerRelativeTextBox, settings); _controller.UpdateItemColor(icCurrentTextBox, settings); _controller.UpdateItemColor(icMaxTextBox, settings); _controller.UpdateItemColor(icRelativeTextBox, settings); _controller.UpdateItemColor(infrastructureCurrentTextBox, settings); _controller.UpdateItemColor(infrastructureMaxTextBox, settings); _controller.UpdateItemColor(infrastructureRelativeTextBox, settings); _controller.UpdateItemColor(landFortCurrentTextBox, settings); _controller.UpdateItemColor(landFortMaxTextBox, settings); _controller.UpdateItemColor(landFortRelativeTextBox, settings); _controller.UpdateItemColor(coastalFortCurrentTextBox, settings); _controller.UpdateItemColor(coastalFortMaxTextBox, settings); _controller.UpdateItemColor(coastalFortRelativeTextBox, settings); _controller.UpdateItemColor(antiAirCurrentTextBox, settings); _controller.UpdateItemColor(antiAirMaxTextBox, settings); _controller.UpdateItemColor(antiAirRelativeTextBox, settings); _controller.UpdateItemColor(airBaseCurrentTextBox, settings); _controller.UpdateItemColor(airBaseMaxTextBox, settings); _controller.UpdateItemColor(airBaseRelativeTextBox, settings); _controller.UpdateItemColor(navalBaseCurrentTextBox, settings); _controller.UpdateItemColor(navalBaseMaxTextBox, settings); _controller.UpdateItemColor(navalBaseRelativeTextBox, settings); _controller.UpdateItemColor(radarStationCurrentTextBox, settings); _controller.UpdateItemColor(radarStationMaxTextBox, settings); _controller.UpdateItemColor(radarStationRelativeTextBox, settings); _controller.UpdateItemColor(nuclearReactorCurrentTextBox, settings); _controller.UpdateItemColor(nuclearReactorMaxTextBox, settings); _controller.UpdateItemColor(nuclearReactorRelativeTextBox, settings); _controller.UpdateItemColor(rocketTestCurrentTextBox, settings); _controller.UpdateItemColor(rocketTestMaxTextBox, settings); _controller.UpdateItemColor(rocketTestRelativeTextBox, settings); _controller.UpdateItemColor(syntheticOilCurrentTextBox, settings); _controller.UpdateItemColor(syntheticOilMaxTextBox, settings); _controller.UpdateItemColor(syntheticOilRelativeTextBox, settings); _controller.UpdateItemColor(syntheticRaresCurrentTextBox, settings); _controller.UpdateItemColor(syntheticRaresMaxTextBox, settings); _controller.UpdateItemColor(syntheticRaresRelativeTextBox, settings); _controller.UpdateItemColor(nuclearPowerCurrentTextBox, settings); _controller.UpdateItemColor(nuclearPowerMaxTextBox, settings); _controller.UpdateItemColor(nuclearPowerRelativeTextBox, settings); }
/// <summary> /// 編集項目の値変更時のログを出力する /// </summary> /// <param name="itemId">項目ID</param> /// <param name="val">編集項目の値</param> /// <param name="settings">プロヴィンス設定</param> public void OutputItemValueChangedLog(ScenarioEditorItemId itemId, object val, ProvinceSettings settings) { Log.Info("[Scenario] {0}: {1} -> {2} ({3})", ItemStrings[(int) itemId], ObjectHelper.ToString(GetItemValue(itemId, settings)), ObjectHelper.ToString(val), settings.Id); }
/// <summary> /// プロヴィンス資源情報の編集項目を更新する /// </summary> /// <param name="settings">プロヴィンス設定</param> private void UpdateProvinceResourceItems(ProvinceSettings settings) { _controller.UpdateItemValue(manpowerCurrentTextBox, settings); _controller.UpdateItemValue(manpowerMaxTextBox, settings); _controller.UpdateItemValue(energyPoolTextBox, settings); _controller.UpdateItemValue(energyCurrentTextBox, settings); _controller.UpdateItemValue(energyMaxTextBox, settings); _controller.UpdateItemValue(metalPoolTextBox, settings); _controller.UpdateItemValue(metalCurrentTextBox, settings); _controller.UpdateItemValue(metalMaxTextBox, settings); _controller.UpdateItemValue(rareMaterialsPoolTextBox, settings); _controller.UpdateItemValue(rareMaterialsCurrentTextBox, settings); _controller.UpdateItemValue(rareMaterialsMaxTextBox, settings); _controller.UpdateItemValue(oilPoolTextBox, settings); _controller.UpdateItemValue(oilCurrentTextBox, settings); _controller.UpdateItemValue(oilMaxTextBox, settings); _controller.UpdateItemValue(suppliesPoolTextBox, settings); _controller.UpdateItemColor(manpowerCurrentTextBox, settings); _controller.UpdateItemColor(manpowerMaxTextBox, settings); _controller.UpdateItemColor(energyPoolTextBox, settings); _controller.UpdateItemColor(energyCurrentTextBox, settings); _controller.UpdateItemColor(energyMaxTextBox, settings); _controller.UpdateItemColor(metalPoolTextBox, settings); _controller.UpdateItemColor(metalCurrentTextBox, settings); _controller.UpdateItemColor(metalMaxTextBox, settings); _controller.UpdateItemColor(rareMaterialsPoolTextBox, settings); _controller.UpdateItemColor(rareMaterialsCurrentTextBox, settings); _controller.UpdateItemColor(rareMaterialsMaxTextBox, settings); _controller.UpdateItemColor(oilPoolTextBox, settings); _controller.UpdateItemColor(oilCurrentTextBox, settings); _controller.UpdateItemColor(oilMaxTextBox, settings); _controller.UpdateItemColor(suppliesPoolTextBox, settings); }
/// <summary> /// 項目値変更後の処理 /// </summary> /// <param name="itemId">項目ID</param> /// <param name="val">編集項目の値</param> /// <param name="settings">プロヴィンス設定</param> public void PostItemChanged(ScenarioEditorItemId itemId, object val, ProvinceSettings settings) { switch (itemId) { case ScenarioEditorItemId.ProvinceManpowerCurrent: PostItemChangedResourceCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceManpowerMax), val, settings); break; case ScenarioEditorItemId.ProvinceManpowerMax: PostItemChangedResourceMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceManpowerCurrent), val, settings); break; case ScenarioEditorItemId.ProvinceEnergyCurrent: PostItemChangedResourceCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceEnergyMax), val, settings); break; case ScenarioEditorItemId.ProvinceEnergyMax: PostItemChangedResourceMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceEnergyCurrent), val, settings); break; case ScenarioEditorItemId.ProvinceMetalCurrent: PostItemChangedResourceCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceMetalMax), val, settings); break; case ScenarioEditorItemId.ProvinceMetalMax: PostItemChangedResourceMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceMetalCurrent), val, settings); break; case ScenarioEditorItemId.ProvinceRareMaterialsCurrent: PostItemChangedResourceCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRareMaterialsMax), val, settings); break; case ScenarioEditorItemId.ProvinceRareMaterialsMax: PostItemChangedResourceMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRareMaterialsCurrent), val, settings); break; case ScenarioEditorItemId.ProvinceOilCurrent: PostItemChangedResourceCurrent((TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceOilMax), val, settings); break; case ScenarioEditorItemId.ProvinceOilMax: PostItemChangedResourceMax((TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceOilCurrent), val, settings); break; case ScenarioEditorItemId.ProvinceIcCurrent: PostItemChangedBuildingCurrent((TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceIcMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceIcRelative), val, settings); break; case ScenarioEditorItemId.ProvinceIcMax: PostItemChangedBuildingMax((TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceIcCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceIcRelative), val, settings); break; case ScenarioEditorItemId.ProvinceIcRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceIcCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceIcMax), val, settings); break; case ScenarioEditorItemId.ProvinceInfrastructureCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceInfrastructureMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceInfrastructureRelative), val, settings); break; case ScenarioEditorItemId.ProvinceInfrastructureMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceInfrastructureCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceInfrastructureRelative), val, settings); break; case ScenarioEditorItemId.ProvinceInfrastructureRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceInfrastructureCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceInfrastructureMax), val, settings); break; case ScenarioEditorItemId.ProvinceLandFortCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceLandFortMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceLandFortRelative), val, settings); break; case ScenarioEditorItemId.ProvinceLandFortMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceLandFortCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceLandFortRelative), val, settings); break; case ScenarioEditorItemId.ProvinceLandFortRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceLandFortCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceLandFortMax), val, settings); break; case ScenarioEditorItemId.ProvinceCoastalFortCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceCoastalFortMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceCoastalFortRelative), val, settings); break; case ScenarioEditorItemId.ProvinceCoastalFortMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceCoastalFortCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceCoastalFortRelative), val, settings); break; case ScenarioEditorItemId.ProvinceCoastalFortRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceCoastalFortCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceCoastalFortMax), val, settings); break; case ScenarioEditorItemId.ProvinceAntiAirCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAntiAirMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAntiAirRelative), val, settings); break; case ScenarioEditorItemId.ProvinceAntiAirMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAntiAirCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAntiAirRelative), val, settings); break; case ScenarioEditorItemId.ProvinceAntiAirRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAntiAirCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAntiAirMax), val, settings); break; case ScenarioEditorItemId.ProvinceAirBaseCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAirBaseMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAirBaseRelative), val, settings); break; case ScenarioEditorItemId.ProvinceAirBaseMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAirBaseCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAirBaseRelative), val, settings); break; case ScenarioEditorItemId.ProvinceAirBaseRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAirBaseCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceAirBaseMax), val, settings); break; case ScenarioEditorItemId.ProvinceNavalBaseCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNavalBaseMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNavalBaseRelative), val, settings); break; case ScenarioEditorItemId.ProvinceNavalBaseMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNavalBaseCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNavalBaseRelative), val, settings); break; case ScenarioEditorItemId.ProvinceNavalBaseRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNavalBaseCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNavalBaseMax), val, settings); break; case ScenarioEditorItemId.ProvinceRadarStationCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRadarStationMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRadarStationRelative), val, settings); break; case ScenarioEditorItemId.ProvinceRadarStationMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRadarStationCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRadarStationRelative), val, settings); break; case ScenarioEditorItemId.ProvinceRadarStationRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRadarStationCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRadarStationMax), val, settings); break; case ScenarioEditorItemId.ProvinceNuclearReactorCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearReactorMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearReactorRelative), val, settings); break; case ScenarioEditorItemId.ProvinceNuclearReactorMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearReactorCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearReactorRelative), val, settings); break; case ScenarioEditorItemId.ProvinceNuclearReactorRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearReactorCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearReactorMax), val, settings); break; case ScenarioEditorItemId.ProvinceRocketTestCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRocketTestMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRocketTestRelative), val, settings); break; case ScenarioEditorItemId.ProvinceRocketTestMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRocketTestCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRocketTestRelative), val, settings); break; case ScenarioEditorItemId.ProvinceRocketTestRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRocketTestCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceRocketTestMax), val, settings); break; case ScenarioEditorItemId.ProvinceSyntheticOilCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticOilMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticOilRelative), val, settings); break; case ScenarioEditorItemId.ProvinceSyntheticOilMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticOilCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticOilRelative), val, settings); break; case ScenarioEditorItemId.ProvinceSyntheticOilRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticOilCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticOilMax), val, settings); break; case ScenarioEditorItemId.ProvinceSyntheticRaresCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticRaresMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticRaresRelative), val, settings); break; case ScenarioEditorItemId.ProvinceSyntheticRaresMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticRaresCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticRaresRelative), val, settings); break; case ScenarioEditorItemId.ProvinceSyntheticRaresRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticRaresCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceSyntheticRaresMax), val, settings); break; case ScenarioEditorItemId.ProvinceNuclearPowerCurrent: PostItemChangedBuildingCurrent( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearPowerMax), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearPowerRelative), val, settings); break; case ScenarioEditorItemId.ProvinceNuclearPowerMax: PostItemChangedBuildingMax( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearPowerCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearPowerRelative), val, settings); break; case ScenarioEditorItemId.ProvinceNuclearPowerRelative: PostItemChangedBuildingRelative( (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearPowerCurrent), (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNuclearPowerMax), val, settings); break; } }
/// <summary> /// テキストボックスの値変更時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnProvinceStringItemTextBoxTextChanged(object sender, EventArgs e) { // 選択項目がなければ何もしない Province province = GetSelectedProvince(); if (province == null) { return; } TextBox control = sender as TextBox; if (control == null) { return; } ScenarioEditorItemId itemId = (ScenarioEditorItemId) control.Tag; ProvinceSettings settings = Scenarios.GetProvinceSettings(province.Id); // 初期値から変更されていなければ何もしない object prev = _controller.GetItemValue(itemId, province, settings); string val = control.Text; if ((prev == null) && string.IsNullOrEmpty(val)) { return; } // 値に変化がなければ何もしない if (val.Equals(prev)) { return; } if (settings == null) { settings = new ProvinceSettings { Id = province.Id }; Scenarios.AddProvinceSettings(settings); } _controller.OutputItemValueChangedLog(itemId, val, province, settings); // 項目値変更前の処理 _controller.PreItemChanged(itemId, settings); // 値を更新する _controller.SetItemValue(itemId, val, settings); // 編集済みフラグを設定する _controller.SetItemDirty(itemId, settings); // 文字色を変更する control.ForeColor = Color.Red; // 項目値変更後の処理 _controller.PostItemChanged(itemId, val, province, settings); }
/// <summary> /// 項目値変更後の処理 /// </summary> /// <param name="itemId">項目ID</param> /// <param name="val">編集項目の値</param> /// <param name="province">プロヴィンス</param> /// <param name="settings">プロヴィンス設定</param> public void PostItemChanged(ScenarioEditorItemId itemId, object val, Province province, ProvinceSettings settings) { switch (itemId) { case ScenarioEditorItemId.ProvinceNameKey: TextBox control = (TextBox) _form.GetItemControl(ScenarioEditorItemId.ProvinceNameString); UpdateItemValue(control, province, settings); UpdateItemColor(control, settings); break; } }