/// <summary> /// フォームクローズ時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnFormClosing(object sender, FormClosingEventArgs e) { // 編集済みでなければフォームを閉じる if (!HoI2EditorController.IsDirty()) { return; } // 保存するかを問い合わせる DialogResult result = MessageBox.Show(Resources.ConfirmSaveMessage, Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); switch (result) { case DialogResult.Cancel: e.Cancel = true; break; case DialogResult.Yes: HoI2EditorController.Save(); break; case DialogResult.No: HoI2EditorController.SaveCanceled = true; break; } }
/// <summary> /// ゲームフォルダ名文字列変更時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnGameFolderTextBoxTextChanged(object sender, EventArgs e) { // ゲームフォルダ名が変更なければ戻る if (gameFolderTextBox.Text.Equals(Game.FolderName)) { return; } // 言語モードを記憶する LanguageMode prev = Config.LangMode; // ゲームフォルダ名を変更する Game.FolderName = gameFolderTextBox.Text; // 言語モードが変更されたら言語リストを更新する if (Config.LangMode != prev) { UpdateLanguage(); } // ゲームフォルダ名が有効でなければデータ編集を無効化する if (!Game.IsGameFolderActive) { editGroupBox.Enabled = false; return; } // 他のエディタプロセスで使われていなければ、データ編集を有効化する editGroupBox.Enabled = HoI2EditorController.LockMutex(Game.FolderName); }
/// <summary> /// フォーム読み込み時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnMainFormLoad(object sender, EventArgs e) { // バージョン文字列を更新する Text = HoI2EditorController.Version; // ログレベルを初期化する logLevelComboBox.SelectedIndex = Log.Level; // ログ初期化前にゲームの種類が確定している時にはここでログ出力する if (Game.Type != GameType.None) { Game.OutputGameType(); Game.OutputGameVersion(); } // マップ読み込みの禁止チェックボックスを初期化する mapLoadCheckBox.Checked = Maps.ForbidLoad; // 初期状態のゲームフォルダ名を設定する if (!string.IsNullOrEmpty(Game.FolderName)) { gameFolderTextBox.Text = HoI2EditorController.Settings.Main.GameFolder; Log.Error("Game Folder: {0}", HoI2EditorController.Settings.Main.GameFolder); if (!string.IsNullOrEmpty(HoI2EditorController.Settings.Main.ModFolder)) { modTextBox.Text = HoI2EditorController.Settings.Main.ModFolder; Log.Error("MOD Name: {0}", HoI2EditorController.Settings.Main.ModFolder); } if (!string.IsNullOrEmpty(HoI2EditorController.Settings.Main.ExportFolder)) { exportFolderTextBox.Text = HoI2EditorController.Settings.Main.ExportFolder; Log.Error("Export Name: {0}", HoI2EditorController.Settings.Main.ExportFolder); } // 言語リストを更新する UpdateLanguage(); // ゲームフォルダ名が有効でなければデータ編集を無効化する if (!Game.IsGameFolderActive) { editGroupBox.Enabled = false; return; } // 他のエディタプロセスで使われていなければ、データ編集を有効化する editGroupBox.Enabled = HoI2EditorController.LockMutex(Game.FolderName); } else { SetFolderName(Environment.CurrentDirectory); } }
/// <summary> /// 再読み込みボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnReloadButtonClick(object sender, EventArgs e) { // 編集済みならば保存するかを問い合わせる if (HoI2EditorController.IsDirty()) { DialogResult result = MessageBox.Show(Resources.ConfirmSaveMessage, Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); switch (result) { case DialogResult.Cancel: return; case DialogResult.Yes: HoI2EditorController.Save(); break; } } HoI2EditorController.Reload(); }
/// <summary> /// フォームクローズ後の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnFormClosed(object sender, FormClosedEventArgs e) { HoI2EditorController.OnUnitNameEditorFormClosed(); }
/// <summary> /// 遅延読み込み完了時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void OnWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // 遅延読み込み完了時の処理 HoI2EditorController.OnLoadingCompleted(); }
/// <summary> /// 他のフォームに更新を通知する /// </summary> /// <param name="id">項目ID</param> private void NotifyItemChange(MiscItemId id) { switch (id) { case MiscItemId.TpMaxAttach: // 輸送艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.Transport].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.SsMaxAttach: // 潜水艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.Submarine].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.SsnMaxAttach: // 原子力潜水艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.NuclearSubmarine].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.DdMaxAttach: // 駆逐艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.Destroyer].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.ClMaxAttach: // 軽巡洋艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.LightCruiser].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.CaMaxAttach: // 重巡洋艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.HeavyCruiser].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.BcMaxAttach: // 巡洋戦艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.BattleCruiser].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.BbMaxAttach: // 戦艦最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.BattleShip].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.CvlMaxAttach: // 軽空母最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.EscortCarrier].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; case MiscItemId.CvMaxAttach: // 空母最大付属装備数 if (Units.IsLoaded()) { Units.Items[(int)UnitType.Carrier].SetDirty(UnitClassItemId.MaxAllowedBrigades); } HoI2EditorController.OnItemChanged(EditorItemId.MaxAllowedBrigades, this); break; } }
/// <summary> /// フォームクローズ後の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnFormClosed(object sender, FormClosedEventArgs e) { HoI2EditorController.OnRandomLeaderEditorFormClosed(); }
/// <summary> /// フォームクローズ後の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnFormClosed(object sender, FormClosedEventArgs e) { HoI2EditorController.OnResearchViewerFormClosed(); }
/// <summary> /// シナリオボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnScenarioButtonClick(object sender, EventArgs e) { HoI2EditorController.LaunchScenarioEditorForm(); }
/// <summary> /// 研究速度ボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnResearchButtonClick(object sender, EventArgs e) { HoI2EditorController.LaunchResearchViewerForm(); }
/// <summary> /// ランダム指揮官名ボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnRandomLeaderButtonClick(object sender, EventArgs e) { HoI2EditorController.LaunchRandomLeaderEditorForm(); }
/// <summary> /// モデル名ボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnModelNameButtonClick(object sender, EventArgs e) { HoI2EditorController.LaunchModelNameEditorForm(); }
/// <summary> /// ゲーム設定ボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnMiscButtonClick(object sender, EventArgs e) { HoI2EditorController.LaunchMiscEditorForm(); }
/// <summary> /// プロヴィンスボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnProvinceButtonClick(object sender, EventArgs e) { HoI2EditorController.LaunchProvinceEditorForm(); }
/// <summary> /// 保存ボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnSaveButtonClick(object sender, EventArgs e) { HoI2EditorController.Save(); }
/// <summary> /// 編集項目テキストボックスフォーカス移動後の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnItemTextBoxValidated(object sender, EventArgs e) { // 選択中の国家がなければ戻る if (countryListBox.SelectedIndex < 0) { return; } Country country = Countries.Tags[countryListBox.SelectedIndex]; // 選択中のユニット名種類がなければ戻る UnitClass unit = typeListBox.SelectedItem as UnitClass; if (unit == null) { return; } TextBox textBox = sender as TextBox; if (textBox == null) { return; } int index = (int)textBox.Tag; if (unit.ExistsModelName(index, country)) { // 値に変化がなければ何もしない if (textBox.Text.Equals(unit.GetCountryModelName(index, country))) { return; } if (string.IsNullOrEmpty(textBox.Text)) { // 変更後の文字列が空ならば国別のモデル名を削除する unit.RemoveModelName(index, country); } else { // 値を更新する unit.SetModelName(index, country, textBox.Text); } } else { // 値に変化がなければ何もしない if (string.IsNullOrEmpty(textBox.Text)) { return; } // 値を更新する unit.SetModelName(index, country, textBox.Text); } // 編集済みフラグを設定する UnitModel model = unit.Models[index]; model.SetDirtyName(country); Units.SetDirtyModelName(country, unit.Type); // 文字色を変更する textBox.ForeColor = Color.Red; // 編集済みフラグが更新されるため国家リストボックスの表示を更新する countryListBox.Refresh(); typeListBox.Refresh(); // ユニットモデル名の更新を通知する HoI2EditorController.OnItemChanged(EditorItemId.CountryModelName, this); }