/// <summary> /// ラベルタブの項目を更新する /// </summary> /// <param name="item">技術ラベル</param> private void UpdateLabelItems(TechLabel item) { // 編集項目の値を更新する labelNameTextBox.Text = item.ToString(); UpdateLabelPositionList(item); // 編集項目の色を更新する labelNameTextBox.ForeColor = item.IsDirty(TechItemId.Name) ? Color.Red : SystemColors.WindowText; }
/// <summary> /// 技術ラベル座標リストを更新する /// </summary> /// <param name="item">技術ラベル</param> private void UpdateLabelPositionList(TechLabel item) { labelPositionListView.BeginUpdate(); labelPositionListView.Items.Clear(); foreach (TechPosition position in item.Positions) { ListViewItem listItem = new ListViewItem(IntHelper.ToString(position.X)); listItem.SubItems.Add(IntHelper.ToString(position.Y)); labelPositionListView.Items.Add(listItem); } if (labelPositionListView.Items.Count > 0) { // 先頭の項目を選択する labelPositionListView.Items[0].Focused = true; labelPositionListView.Items[0].Selected = true; // 編集項目を有効化する EnableLabelPositionItems(); } else { // 編集項目を無効化する DisableLabelPositionItems(); } labelPositionListView.EndUpdate(); }
/// <summary> /// 技術項目リストの新規ラベルボタン押下時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnNewLabelButtonClick(object sender, EventArgs e) { TechGroup grp = GetSelectedGroup(); // 項目を作成する TechLabel item = new TechLabel { Name = Config.GetTempKey() }; Config.SetText(item.Name, "", 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 }); // 技術項目リストに項目を挿入する grp.InsertItem(item, selected); // 項目リストビューに項目を挿入する InsertTechListItem(item, techListBox.SelectedIndex + 1); } else { // 仮の座標を登録する item.Positions.Add(new TechPosition()); // 技術項目リストに項目を追加する grp.AddItem(item); // 項目リストビューに項目を追加する AddTechListItem(item); } // 技術ツリーにラベルを追加する _techTreePanelController.AddItem(item); Log.Info("[Tech] Added new label"); }
/// <summary> /// 技術ツリーに技術ラベルを追加する /// </summary> /// <param name="item">追加対象の項目</param> /// <param name="position">追加対象の位置</param> private void AddLabelItem(TechLabel item, TechPosition position) { Label label = new Label { Location = new Point(DeviceCaps.GetScaledWidth(position.X), DeviceCaps.GetScaledHeight(position.Y)), BackColor = Color.Transparent, Tag = new TechLabelInfo { Item = item, Position = position } }; label.Size = Graphics.FromHwnd(label.Handle).MeasureString(item.ToString(), label.Font).ToSize(); label.Click += OnItemLabelClick; label.MouseClick += OnItemLabelMouseClick; label.MouseDown += OnItemLabelMouseDown; label.MouseUp += OnItemLabelMouseUp; label.MouseMove += OnItemLabelMouseMove; label.GiveFeedback += OnItemLabelGiveFeedback; label.Paint += OnTechLabelPaint; _pictureBox.Controls.Add(label); }
/// <summary> /// 技術ラベルを複製する /// </summary> /// <returns>複製した技術ラベル</returns> public ITechItem Clone() { TechLabel item = new TechLabel { Name = Config.GetTempKey() }; // 文字列設定 Config.SetText(item.Name, Config.GetText(Name), Game.TechTextFileName); // 座標リスト foreach (TechPosition position in Positions) { item.Positions.Add(position.Clone()); } return item; }
/// <summary> /// 技術ラベルを作成する /// </summary> /// <returns>作成した技術ラベル</returns> public static TechLabel Create() { TechLabel item = new TechLabel { Name = Config.GetTempKey() }; // 文字列設定 Config.SetText(item.Name, "", Game.TechTextFileName); return item; }
/// <summary> /// labelセクションを書き出す /// </summary> /// <param name="item">技術ラベル項目</param> /// <param name="writer">ファイル書き込み用</param> private static void WriteLabel(TechLabel item, StreamWriter writer) { writer.WriteLine(" label ="); writer.WriteLine(" {{ tag = {0}", item.Name); foreach (TechPosition position in item.Positions) { writer.WriteLine(" position = {{ x = {0} y = {1} }}", position.X, position.Y); } writer.WriteLine(" }"); }