Exemple #1
0
        /// <summary>
        ///     技術項目リストの新規技術ボタン押下時の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnNewTechButtonClick(object sender, EventArgs e)
        {
            TechGroup grp = GetSelectedGroup();

            // 項目を作成する
            TechItem item = new TechItem
            {
                Name = Config.GetTempKey(),
                ShortName = Config.GetTempKey(),
                Desc = Config.GetTempKey(),
                Year = 1936
            };
            Config.SetText(item.Name, "", Game.TechTextFileName);
            Config.SetText(item.ShortName, "", Game.TechTextFileName);
            Config.SetText(item.Desc, "", Game.TechTextFileName);

            // 重複文字列リストに登録する
            Techs.AddDuplicatedListItem(item);

            // 編集済みフラグを設定する
            grp.SetDirty();
            item.SetDirtyAll();

            ITechItem selected = techListBox.SelectedItem as ITechItem;
            if (selected != null)
            {
                // 選択項目の先頭座標を引き継ぐ
                item.Positions.Add(new TechPosition { X = selected.Positions[0].X, Y = selected.Positions[0].Y });

                if (selected is TechItem)
                {
                    // 選択項目が技術アプリケーションならばIDを10増やす
                    TechItem selectedApplication = selected as TechItem;
                    item.Id = Techs.GetNewId(selectedApplication.Id + 10);
                }
                else
                {
                    // 未使用の技術IDを1010以降で検索する
                    item.Id = Techs.GetNewId(1010);
                }

                // 空の小研究を追加する
                item.CreateNewComponents();

                // 技術項目リストに項目を挿入する
                grp.InsertItem(item, selected);

                // 項目リストビューに項目を挿入する
                InsertTechListItem(item, techListBox.SelectedIndex + 1);
            }
            else
            {
                // 仮の座標を登録する
                item.Positions.Add(new TechPosition());

                // 未使用の技術IDを1010以降で検索する
                item.Id = Techs.GetNewId(1010);

                // 空の小研究を追加する
                item.CreateNewComponents();

                // 技術項目リストに項目を追加する
                grp.AddItem(item);

                // 項目リストビューに項目を追加する
                AddTechListItem(item);
            }

            // 技術ツリーにラベルを追加する
            _techTreePanelController.AddItem(item);

            // 技術項目とIDの対応付けを更新する
            Techs.UpdateTechIdMap();
            // 必要技術コンボボックスの項目を更新する
            UpdateRequiredTechListItems();
            // 技術イベントの技術IDコンボボックスの項目を更新する
            UpdateEventTechListItems();

            // 技術項目リストの更新を通知する
            HoI2EditorController.OnItemChanged(EditorItemId.TechItemList, this);

            Log.Info("[Tech] Added new tech: {0}", item.Id);
        }