/// <summary> /// フォームの初期化 /// </summary> private void InitForm() { // 技術カテゴリリストボックス categoryListBox.ItemHeight = DeviceCaps.GetScaledHeight(categoryListBox.ItemHeight); // 技術項目リストボックス techListBox.ItemHeight = DeviceCaps.GetScaledHeight(techListBox.ItemHeight); // 技術座標リストビュー techXColumnHeader.Width = HoI2EditorController.Settings.TechEditor.TechPositionListColumnWidth[0]; techYColumnHeader.Width = HoI2EditorController.Settings.TechEditor.TechPositionListColumnWidth[1]; // AND条件必要技術リストビュー andIdColumnHeader.Width = HoI2EditorController.Settings.TechEditor.AndRequiredListColumnWidth[0]; andNameColumnHeader.Width = HoI2EditorController.Settings.TechEditor.AndRequiredListColumnWidth[1]; // OR条件必要技術リストビュー orIdColumnHeader.Width = HoI2EditorController.Settings.TechEditor.OrRequiredListColumnWidth[0]; orNameColumnHeader.Width = HoI2EditorController.Settings.TechEditor.OrRequiredListColumnWidth[1]; // 小研究リストビュー componentIdColumnHeader.Width = HoI2EditorController.Settings.TechEditor.ComponentListColumnWidth[0]; componentNameColumnHeader.Width = HoI2EditorController.Settings.TechEditor.ComponentListColumnWidth[1]; componentSpecialityColumnHeader.Width = HoI2EditorController.Settings.TechEditor.ComponentListColumnWidth[2]; componentDifficultyColumnHeader.Width = HoI2EditorController.Settings.TechEditor.ComponentListColumnWidth[3]; componentDoubleTimeColumnHeader.Width = HoI2EditorController.Settings.TechEditor.ComponentListColumnWidth[4]; // 小研究特性コンボボックス componentSpecialityComboBox.ItemHeight = DeviceCaps.GetScaledHeight(componentSpecialityComboBox.ItemHeight); // 技術効果リストビュー commandTypeColumnHeader.Width = HoI2EditorController.Settings.TechEditor.EffectListColumnWidth[0]; commandWhichColumnHeader.Width = HoI2EditorController.Settings.TechEditor.EffectListColumnWidth[1]; commandValueColumnHeader.Width = HoI2EditorController.Settings.TechEditor.EffectListColumnWidth[2]; commandWhenColumnHeader.Width = HoI2EditorController.Settings.TechEditor.EffectListColumnWidth[3]; commandWhereColumnHeader.Width = HoI2EditorController.Settings.TechEditor.EffectListColumnWidth[4]; // ラベル座標リストビュー labelXColumnHeader.Width = HoI2EditorController.Settings.TechEditor.LabelPositionListColumnWidth[0]; labelYColumnHeader.Width = HoI2EditorController.Settings.TechEditor.LabelPositionListColumnWidth[1]; // 発明イベント座標リストビュー eventXColumnHeader.Width = HoI2EditorController.Settings.TechEditor.EventPositionListColumnWidth[0]; eventYColumnHeader.Width = HoI2EditorController.Settings.TechEditor.EventPositionListColumnWidth[1]; // 技術ツリーパネル _techTreePanelController = new TechTreePanelController(treePictureBox) { AllowDragDrop = true }; _techTreePanelController.ItemMouseDown += OnTechTreeLabelMouseDown; _techTreePanelController.ItemDragDrop += OnTreePictureBoxDragDrop; // ウィンドウの位置 Location = HoI2EditorController.Settings.TechEditor.Location; Size = HoI2EditorController.Settings.TechEditor.Size; }
/// <summary> /// 技術ツリーピクチャーボックスにドロップした時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnTreePictureBoxDragDrop(object sender, TechTreePanelController.ItemDragEventArgs e) { // 座標リストビューの項目を更新する for (int i = 0; i < e.Item.Positions.Count; i++) { if (e.Item.Positions[i] == e.Position) { if (e.Item is TechItem) { techPositionListView.Items[i].Text = IntHelper.ToString(e.Position.X); techPositionListView.Items[i].SubItems[1].Text = IntHelper.ToString(e.Position.Y); techXNumericUpDown.Value = e.Position.X; techYNumericUpDown.Value = e.Position.Y; techXNumericUpDown.ForeColor = Color.Red; techYNumericUpDown.ForeColor = Color.Red; } else if (e.Item is TechLabel) { labelPositionListView.Items[i].Text = IntHelper.ToString(e.Position.X); labelPositionListView.Items[i].SubItems[1].Text = IntHelper.ToString(e.Position.Y); labelXNumericUpDown.Value = e.Position.X; labelYNumericUpDown.Value = e.Position.Y; labelXNumericUpDown.ForeColor = Color.Red; labelYNumericUpDown.ForeColor = Color.Red; } else { eventPositionListView.Items[i].Text = IntHelper.ToString(e.Position.X); eventPositionListView.Items[i].SubItems[1].Text = IntHelper.ToString(e.Position.Y); eventXNumericUpDown.Value = e.Position.X; eventYNumericUpDown.Value = e.Position.Y; eventXNumericUpDown.ForeColor = Color.Red; eventYNumericUpDown.ForeColor = Color.Red; } break; } } // 編集済みフラグを設定する TechGroup grp = GetSelectedGroup(); grp.SetDirty(); e.Item.SetDirty(); e.Position.SetDirtyAll(); }
/// <summary> /// 技術ツリーラベルのマウスダウン時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnTechTreeLabelMouseDown(object sender, TechTreePanelController.ItemMouseEventArgs e) { // 技術項目リストの項目を選択する techListBox.SelectedItem = e.Item; }
/// <summary> /// 項目ラベルマウスクリック時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnTechTreeItemMouseClick(object sender, TechTreePanelController.ItemMouseEventArgs e) { // 選択中の国家がなければ何もしない Country country = GetSelectedTechCountry(); if (country == Country.None) { return; } TechItem tech = e.Item as TechItem; if (tech != null) { // 左クリックで保有技術の有無を切り替える if (e.Button == MouseButtons.Left) { ToggleOwnedTech(tech, country); } // 右クリックで青写真の有無を切り替える else if (e.Button == MouseButtons.Right) { ToggleBlueprint(tech, country); } return; } TechEvent ev = e.Item as TechEvent; if (ev != null) { // 左クリックで保有技術の有無を切り替える if (e.Button == MouseButtons.Left) { ToggleInvention(ev, country); } } }
/// <summary> /// 技術項目の状態を返す /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnQueryTechTreeItemStatus(object sender, TechTreePanelController.QueryItemStatusEventArgs e) { // 選択中の国家がなければ何もしない Country country = GetSelectedTechCountry(); if (country == Country.None) { return; } CountrySettings settings = Scenarios.GetCountrySettings(country); if (settings == null) { return; } TechItem tech = e.Item as TechItem; if (tech != null) { e.Done = settings.TechApps.Contains(tech.Id); e.Blueprint = settings.BluePrints.Contains(tech.Id); return; } TechEvent ev = e.Item as TechEvent; if (ev != null) { e.Done = settings.Inventions.Contains(ev.Id); } }
/// <summary> /// フォームの初期化 /// </summary> private void InitForm() { // ウィンドウの位置 Location = HoI2EditorController.Settings.ScenarioEditor.Location; Size = HoI2EditorController.Settings.ScenarioEditor.Size; // 技術ツリーパネル _techTreePanelController = new TechTreePanelController(techTreePictureBox) { ApplyItemStatus = true }; _techTreePanelController.ItemMouseClick += OnTechTreeItemMouseClick; _techTreePanelController.QueryItemStatus += OnQueryTechTreeItemStatus; // マップパネル _mapPanelController = new MapPanelController(provinceMapPanel, provinceMapPictureBox); // ユニットツリー _unitTreeController = new UnitTreeController(unitTreeView); // コントローラ _controller = new ScenarioEditorController(this, _mapPanelController, _unitTreeController); }