예제 #1
0
 /// <summary>
 ///     技術ツリーに項目ラベル群を追加する
 /// </summary>
 /// <param name="item">追加対象の項目</param>
 public void AddItem(ITechItem item)
 {
     foreach (TechPosition position in item.Positions)
     {
         AddItem(item, position);
     }
 }
예제 #2
0
        /// <summary>
        ///     技術ツリーに項目ラベルを追加する
        /// </summary>
        /// <param name="item">追加対象の項目</param>
        /// <param name="position">追加対象の位置</param>
        public void AddItem(ITechItem item, TechPosition position)
        {
            TechItem tech = item as TechItem;

            if (tech != null)
            {
                AddTechItem(tech, position);
                return;
            }

            TechLabel label = item as TechLabel;

            if (label != null)
            {
                AddLabelItem(label, position);
                return;
            }

            TechEvent ev = item as TechEvent;

            if (ev != null)
            {
                AddEventItem(ev, position);
            }
        }
예제 #3
0
        /// <summary>
        ///     項目を書き出す
        /// </summary>
        /// <param name="item">項目</param>
        /// <param name="writer">ファイル書き込み用</param>
        private static void WriteTechItem(ITechItem item, StreamWriter writer)
        {
            TechItem techItem = item as TechItem;

            if (techItem != null)
            {
                WriteApplication(techItem, writer);
                return;
            }

            TechLabel labelItem = item as TechLabel;

            if (labelItem != null)
            {
                WriteLabel(labelItem, writer);
                return;
            }

            TechEvent eventItem = item as TechEvent;

            if (eventItem != null)
            {
                WriteEvent(eventItem, writer);
            }
        }
예제 #4
0
        /// <summary>
        ///     技術ツリーの項目を更新する
        /// </summary>
        /// <param name="item">更新対象の項目</param>
        /// <param name="position">更新対象の座標</param>
        public void UpdateItem(ITechItem item, TechPosition position)
        {
            Control.ControlCollection labels = _pictureBox.Controls;
            foreach (Label label in labels)
            {
                TechLabelInfo info = label.Tag as TechLabelInfo;
                if (info == null)
                {
                    continue;
                }

                if (info.Item != item)
                {
                    continue;
                }

                // ラベルの位置を更新する
                if (info.Position == position)
                {
                    label.Location = new Point(DeviceCaps.GetScaledWidth(position.X),
                                               DeviceCaps.GetScaledHeight(position.Y));
                }

                // 項目ラベルの表示に項目の状態を反映しないならば座標変更のみ
                if (!ApplyItemStatus || (QueryItemStatus == null))
                {
                    continue;
                }

                if (item is TechItem)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done
                        ? (e.Blueprint ? _blueprintDoneTechLabelBitmap : _doneTechLabelBitmap)
                        : (e.Blueprint ? _blueprintTechLabelBitmap : _techLabelBitmap);
                }
                else if (item is TechEvent)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done ? _doneEventLabelBitmap : _eventLabelBitmap;
                }
            }
        }
예제 #5
0
        /// <summary>
        ///     技術ツリーの項目ラベルを更新する
        /// </summary>
        /// <param name="item">更新対象の項目</param>
        public void UpdateItem(ITechItem item)
        {
            Control.ControlCollection labels = _pictureBox.Controls;
            foreach (Label label in labels)
            {
                TechLabelInfo info = label.Tag as TechLabelInfo;
                if (info == null)
                {
                    continue;
                }

                if (info.Item != item)
                {
                    continue;
                }

                // ラベル項目の場合はサイズを再計算する
                if (item is TechLabel)
                {
                    label.Size = Graphics.FromHwnd(label.Handle).MeasureString(item.ToString(), label.Font).ToSize();
                }

                // 項目ラベルの表示に項目の状態を反映しないならば再描画のみ
                if (!ApplyItemStatus || (QueryItemStatus == null))
                {
                    label.Refresh();
                    continue;
                }

                if (item is TechItem)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done
                        ? (e.Blueprint ? _blueprintDoneTechLabelBitmap : _doneTechLabelBitmap)
                        : (e.Blueprint ? _blueprintTechLabelBitmap : _techLabelBitmap);
                }
                else if (item is TechEvent)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done ? _doneEventLabelBitmap : _eventLabelBitmap;
                }
            }
        }
예제 #6
0
        /// <summary>
        ///     技術ツリーの項目を削除する
        /// </summary>
        /// <param name="item">削除対象の項目</param>
        /// <param name="position">削除対象の位置</param>
        public void RemoveItem(ITechItem item, TechPosition position)
        {
            Control.ControlCollection labels = _pictureBox.Controls;
            foreach (Label label in labels)
            {
                TechLabelInfo info = label.Tag as TechLabelInfo;
                if (info == null)
                {
                    continue;
                }

                if (info.Item == item && info.Position == position)
                {
                    _pictureBox.Controls.Remove(label);
                }
            }
        }
예제 #7
0
        /// <summary>
        ///     重複文字列リストの項目を削除する
        /// </summary>
        /// <param name="item">技術項目</param>
        public static void RemoveDuplicatedListItem(ITechItem item)
        {
            TechItem techItem = item as TechItem;

            if (techItem != null)
            {
                DecrementDuplicatedListCount(techItem.Name);
                DecrementDuplicatedListCount(techItem.ShortName);
                DecrementDuplicatedListCount(techItem.Desc);
                foreach (TechComponent component in techItem.Components)
                {
                    DecrementDuplicatedListCount(component.Name);
                }
                return;
            }

            TechLabel labelItem = item as TechLabel;

            if (labelItem != null)
            {
                DecrementDuplicatedListCount(labelItem.Name);
            }
        }
예제 #8
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 /// <param name="position">項目ラベルの位置</param>
 /// <param name="e">マウスイベントのパラメータ</param>
 public ItemMouseEventArgs(ITechItem item, TechPosition position, MouseEventArgs e)
     : base(e.Button, e.Clicks, e.X, e.Y, e.Delta)
 {
     Item = item;
     Position = position;
 }
예제 #9
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 /// <param name="position">項目ラベルの位置</param>
 public ItemEventArgs(ITechItem item, TechPosition position)
 {
     Item = item;
     Position = position;
 }
예제 #10
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 /// <param name="position">項目ラベルの位置</param>
 /// <param name="e">ドラッグアンドドロップイベントのパラメータ</param>
 public ItemDragEventArgs(ITechItem item, TechPosition position, DragEventArgs e)
     : base(e.Data, e.KeyState, e.X, e.Y, e.AllowedEffect, e.Effect)
 {
     Item = item;
     Position = position;
 }
예제 #11
0
파일: Tech.cs 프로젝트: nkodama/HoI2Editor
        /// <summary>
        ///     技術項目リストから項目を削除する
        /// </summary>
        /// <param name="item">削除対象の項目</param>
        public void RemoveItem(ITechItem item)
        {
            Items.Remove(item);

            TechItem techItem = item as TechItem;
            if (techItem != null)
            {
                // 一時キーを削除する
                techItem.RemoveTempKey();
                // 技術項目とIDの対応付けを更新する
                Techs.TechIds.Remove(techItem.Id);
                Techs.TechIdMap.Remove(techItem.Id);
            }
            else if (item is TechLabel)
            {
                TechLabel labelItem = (TechLabel) item;
                // 一時キーを削除する
                labelItem.RemoveTempKey();
            }

            // 重複文字列リストの項目を削除する
            Techs.RemoveDuplicatedListItem(item);
        }
예제 #12
0
파일: Tech.cs 프로젝트: nkodama/HoI2Editor
        /// <summary>
        ///     技術項目リストの項目を移動する
        /// </summary>
        /// <param name="src">移動対象の項目</param>
        /// <param name="dest">移動先位置の項目</param>
        public void MoveItem(ITechItem src, ITechItem dest)
        {
            int srcIndex = Items.IndexOf(src);
            int destIndex = Items.IndexOf(dest);

            if (srcIndex > destIndex)
            {
                // 上へ移動する場合
                Items.Insert(destIndex, src);
                Items.RemoveAt(srcIndex + 1);
            }
            else
            {
                // 下へ移動する場合
                Items.Insert(destIndex + 1, src);
                Items.RemoveAt(srcIndex);
            }
        }
예제 #13
0
파일: Techs.cs 프로젝트: nkodama/HoI2Editor
        /// <summary>
        ///     重複文字列リストの項目を削除する
        /// </summary>
        /// <param name="item">技術項目</param>
        public static void RemoveDuplicatedListItem(ITechItem item)
        {
            TechItem techItem = item as TechItem;
            if (techItem != null)
            {
                DecrementDuplicatedListCount(techItem.Name);
                DecrementDuplicatedListCount(techItem.ShortName);
                DecrementDuplicatedListCount(techItem.Desc);
                foreach (TechComponent component in techItem.Components)
                {
                    DecrementDuplicatedListCount(component.Name);
                }
                return;
            }

            TechLabel labelItem = item as TechLabel;
            if (labelItem != null)
            {
                DecrementDuplicatedListCount(labelItem.Name);
            }
        }
예제 #14
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 public QueryItemStatusEventArgs(ITechItem item)
 {
     Item = item;
 }
예제 #15
0
        /// <summary>
        ///     技術ツリーの項目ラベルを更新する
        /// </summary>
        /// <param name="item">更新対象の項目</param>
        public void UpdateItem(ITechItem item)
        {
            Control.ControlCollection labels = _pictureBox.Controls;
            foreach (Label label in labels)
            {
                TechLabelInfo info = label.Tag as TechLabelInfo;
                if (info == null)
                {
                    continue;
                }

                if (info.Item != item)
                {
                    continue;
                }

                // ラベル項目の場合はサイズを再計算する
                if (item is TechLabel)
                {
                    label.Size = Graphics.FromHwnd(label.Handle).MeasureString(item.ToString(), label.Font).ToSize();
                }

                // 項目ラベルの表示に項目の状態を反映しないならば再描画のみ
                if (!ApplyItemStatus || (QueryItemStatus == null))
                {
                    label.Refresh();
                    continue;
                }

                if (item is TechItem)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done
                        ? (e.Blueprint ? _blueprintDoneTechLabelBitmap : _doneTechLabelBitmap)
                        : (e.Blueprint ? _blueprintTechLabelBitmap : _techLabelBitmap);
                }
                else if (item is TechEvent)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done ? _doneEventLabelBitmap : _eventLabelBitmap;
                }
            }
        }
예제 #16
0
        /// <summary>
        ///     技術ツリーに項目ラベルを追加する
        /// </summary>
        /// <param name="item">追加対象の項目</param>
        /// <param name="position">追加対象の位置</param>
        public void AddItem(ITechItem item, TechPosition position)
        {
            TechItem tech = item as TechItem;
            if (tech != null)
            {
                AddTechItem(tech, position);
                return;
            }

            TechLabel label = item as TechLabel;
            if (label != null)
            {
                AddLabelItem(label, position);
                return;
            }

            TechEvent ev = item as TechEvent;
            if (ev != null)
            {
                AddEventItem(ev, position);
            }
        }
예제 #17
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 /// <param name="position">項目ラベルの位置</param>
 public ItemEventArgs(ITechItem item, TechPosition position)
 {
     Item     = item;
     Position = position;
 }
예제 #18
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 /// <param name="position">項目ラベルの位置</param>
 /// <param name="e">マウスイベントのパラメータ</param>
 public ItemMouseEventArgs(ITechItem item, TechPosition position, MouseEventArgs e)
     : base(e.Button, e.Clicks, e.X, e.Y, e.Delta)
 {
     Item     = item;
     Position = position;
 }
예제 #19
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 public QueryItemStatusEventArgs(ITechItem item)
 {
     Item = item;
 }
예제 #20
0
 /// <summary>
 ///     技術ツリーに項目ラベル群を追加する
 /// </summary>
 /// <param name="item">追加対象の項目</param>
 public void AddItem(ITechItem item)
 {
     foreach (TechPosition position in item.Positions)
     {
         AddItem(item, position);
     }
 }
예제 #21
0
 /// <summary>
 ///     コンストラクタ
 /// </summary>
 /// <param name="item">技術項目</param>
 /// <param name="position">項目ラベルの位置</param>
 /// <param name="e">ドラッグアンドドロップイベントのパラメータ</param>
 public ItemDragEventArgs(ITechItem item, TechPosition position, DragEventArgs e)
     : base(e.Data, e.KeyState, e.X, e.Y, e.AllowedEffect, e.Effect)
 {
     Item     = item;
     Position = position;
 }
예제 #22
0
        /// <summary>
        ///     技術ツリーの項目を削除する
        /// </summary>
        /// <param name="item">削除対象の項目</param>
        /// <param name="position">削除対象の位置</param>
        public void RemoveItem(ITechItem item, TechPosition position)
        {
            Control.ControlCollection labels = _pictureBox.Controls;
            foreach (Label label in labels)
            {
                TechLabelInfo info = label.Tag as TechLabelInfo;
                if (info == null)
                {
                    continue;
                }

                if (info.Item == item && info.Position == position)
                {
                    _pictureBox.Controls.Remove(label);
                }
            }
        }
예제 #23
0
        /// <summary>
        ///     項目を書き出す
        /// </summary>
        /// <param name="item">項目</param>
        /// <param name="writer">ファイル書き込み用</param>
        private static void WriteTechItem(ITechItem item, StreamWriter writer)
        {
            TechItem techItem = item as TechItem;
            if (techItem != null)
            {
                WriteApplication(techItem, writer);
                return;
            }

            TechLabel labelItem = item as TechLabel;
            if (labelItem != null)
            {
                WriteLabel(labelItem, writer);
                return;
            }

            TechEvent eventItem = item as TechEvent;
            if (eventItem != null)
            {
                WriteEvent(eventItem, writer);
            }
        }
예제 #24
0
        /// <summary>
        ///     技術ツリーの項目を更新する
        /// </summary>
        /// <param name="item">更新対象の項目</param>
        /// <param name="position">更新対象の座標</param>
        public void UpdateItem(ITechItem item, TechPosition position)
        {
            Control.ControlCollection labels = _pictureBox.Controls;
            foreach (Label label in labels)
            {
                TechLabelInfo info = label.Tag as TechLabelInfo;
                if (info == null)
                {
                    continue;
                }

                if (info.Item != item)
                {
                    continue;
                }

                // ラベルの位置を更新する
                if (info.Position == position)
                {
                    label.Location = new Point(DeviceCaps.GetScaledWidth(position.X),
                        DeviceCaps.GetScaledHeight(position.Y));
                }

                // 項目ラベルの表示に項目の状態を反映しないならば座標変更のみ
                if (!ApplyItemStatus || (QueryItemStatus == null))
                {
                    continue;
                }

                if (item is TechItem)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done
                        ? (e.Blueprint ? _blueprintDoneTechLabelBitmap : _doneTechLabelBitmap)
                        : (e.Blueprint ? _blueprintTechLabelBitmap : _techLabelBitmap);
                }
                else if (item is TechEvent)
                {
                    // ラベル画像を設定する
                    QueryItemStatusEventArgs e = new QueryItemStatusEventArgs(item);
                    QueryItemStatus(this, e);
                    label.Image = e.Done ? _doneEventLabelBitmap : _eventLabelBitmap;
                }
            }
        }
예제 #25
0
파일: Tech.cs 프로젝트: nkodama/HoI2Editor
 /// <summary>
 ///     技術項目リストに項目を挿入する
 /// </summary>
 /// <param name="item">追加対象の項目</param>
 public void AddItem(ITechItem item)
 {
     Items.Add(item);
 }
예제 #26
0
        /// <summary>
        ///     項目リストビューに項目を追加する
        /// </summary>
        /// <param name="item">追加対象の項目</param>
        private void AddTechListItem(ITechItem item)
        {
            // 項目リストビューに項目を追加する
            techListBox.Items.Add(item);

            // 追加した項目を選択する
            techListBox.SelectedIndex = techListBox.Items.Count - 1;
        }
예제 #27
0
파일: Tech.cs 프로젝트: nkodama/HoI2Editor
 /// <summary>
 ///     技術項目リストに項目を挿入する
 /// </summary>
 /// <param name="item">挿入対象の項目</param>
 /// <param name="position">挿入位置の直前の項目</param>
 public void InsertItem(ITechItem item, ITechItem position)
 {
     Items.Insert(Items.IndexOf(position) + 1, item);
 }