예제 #1
0
        /// <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;
        }
예제 #2
0
 /// <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();
 }
예제 #3
0
 /// <summary>
 ///     技術ツリーラベルのマウスダウン時の処理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnTechTreeLabelMouseDown(object sender, TechTreePanelController.ItemMouseEventArgs e)
 {
     // 技術項目リストの項目を選択する
     techListBox.SelectedItem = e.Item;
 }
예제 #4
0
        /// <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);
                }
            }
        }
예제 #5
0
        /// <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);
            }
        }
예제 #6
0
        /// <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);
        }