Example #1
0
        /// <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;
        }
Example #2
0
        /// <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();
        }
Example #3
0
        /// <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);
        }
Example #5
0
        /// <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;
        }
Example #6
0
        /// <summary>
        ///     技術ラベルを作成する
        /// </summary>
        /// <returns>作成した技術ラベル</returns>
        public static TechLabel Create()
        {
            TechLabel item = new TechLabel { Name = Config.GetTempKey() };

            // 文字列設定
            Config.SetText(item.Name, "", Game.TechTextFileName);

            return item;
        }
Example #7
0
 /// <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("  }");
 }