コード例 #1
0
        /// <summary>
        ///     ユニットを追加する
        /// </summary>
        /// <param name="index">追加先のインデックス</param>
        /// <param name="branch">兵科</param>
        /// <param name="parent">親ノード</param>
        /// <param name="units">ユニットリスト</param>
        /// <param name="settings">国家設定</param>
        private void AddUnit(int index, Branch branch, TreeNode parent, List <Unit> units, CountrySettings settings)
        {
            // ユニットを作成する
            Unit unit = new Unit {
                Id = settings.GetNewUnitTypeId(), Branch = branch
            };

            unit.SetDirtyAll();

            // ユニットの位置を初期化する
            InitUnitLocation(unit, settings);

            // ツリーノードを追加する
            TreeNode node = CreateUnitNode(unit);

            node.Text = Resources.UnitTreeNewUnit;
            parent.Nodes.Insert(index, node);

            // ユニットリストに追加する
            units.Insert(index, unit);

            // 編集済みフラグを設定する
            settings.SetDirty();
            Scenarios.SetDirty();

            // 追加したノードを選択する
            _treeView.SelectedNode = node;
        }
コード例 #2
0
        /// <summary>
        ///     ユニットを削除する
        /// </summary>
        /// <param name="unit">削除対象のユニット</param>
        private void RemoveUnit(Unit unit)
        {
            TreeNode node   = _treeView.SelectedNode;
            TreeNode parent = node.Parent;

            parent.Nodes.Remove(node);

            CountrySettings settings = Scenarios.GetCountrySettings(_country) ??
                                       Scenarios.CreateCountrySettings(_country);

            // 編集済みフラグを設定する
            settings.SetDirty();
            Scenarios.SetDirty();

            // 陸軍/海軍/空軍/搭載ユニット
            switch ((NodeType)parent.Tag)
            {
            case NodeType.Land:
                settings.LandUnits.Remove(unit);
                break;

            case NodeType.Naval:
                settings.NavalUnits.Remove(unit);
                break;

            case NodeType.Air:
                settings.AirUnits.Remove(unit);
                break;

            case NodeType.Boarding:
                Unit transport = (Unit)parent.Parent.Tag;
                transport.LandUnits.Remove(unit);
                break;
            }
        }
コード例 #3
0
        /// <summary>
        ///     師団を移動する
        /// </summary>
        /// <param name="division">移動対象の師団</param>
        /// <param name="index">移動先のインデックス</param>
        private void MoveDivision(Division division, int index)
        {
            TreeNode node   = _treeView.SelectedNode;
            TreeNode parent = node.Parent;

            parent.Nodes.Remove(node);
            parent.Nodes.Insert(index, node);

            CountrySettings settings = Scenarios.GetCountrySettings(_country) ??
                                       Scenarios.CreateCountrySettings(_country);

            // 編集済みフラグを設定する
            settings.SetDirty();
            Scenarios.SetDirty();

            // 陸軍/海軍/空軍/搭載師団
            Unit unit = parent.Tag as Unit;

            if (unit != null)
            {
                unit.Divisions.Remove(division);
                unit.Divisions.Insert(index, division);

                // 移動対象のノードを選択する
                _treeView.SelectedNode = node;
                return;
            }

            // 未配備陸軍/海軍/空軍師団
            switch ((NodeType)parent.Tag)
            {
            case NodeType.UndeployedLand:
                settings.LandDivisions.Remove(division);
                settings.LandDivisions.Insert(index, division);
                break;

            case NodeType.UndeployedNaval:
                settings.NavalDivisions.Remove(division);
                settings.NavalDivisions.Insert(index, division);
                break;

            case NodeType.UndeployedAir:
                settings.AirDivisions.Remove(division);
                settings.AirDivisions.Insert(index, division);
                break;
            }

            // 移動対象のノードを選択する
            _treeView.SelectedNode = node;
        }
コード例 #4
0
        /// <summary>
        ///     師団を複製する
        /// </summary>
        /// <param name="original">複製対象の師団</param>
        private void CloneDivision(Division original)
        {
            Division division = new Division(original);

            division.SetDirtyAll();
            TreeNode selected = _treeView.SelectedNode;
            TreeNode parent   = selected.Parent;
            TreeNode node;
            int      index = parent.Nodes.IndexOf(selected) + 1;

            CountrySettings settings = Scenarios.GetCountrySettings(_country) ??
                                       Scenarios.CreateCountrySettings(_country);

            // 編集済みフラグを設定する
            settings.SetDirty();
            Scenarios.SetDirty();

            // 陸軍/海軍/空軍/搭載師団
            Unit unit = parent.Tag as Unit;

            if (unit != null)
            {
                switch ((NodeType)parent.Parent.Tag)
                {
                case NodeType.Land:
                case NodeType.Boarding:
                    node = CreateLandDivisionNode(division);
                    if (string.IsNullOrEmpty(division.Name))
                    {
                        node.Text = Resources.UnitTreeNewDivision;
                    }
                    parent.Nodes.Insert(index, node);
                    unit.Divisions.Insert(index, division);
                    _treeView.SelectedNode = node;
                    break;

                case NodeType.Naval:
                    node = CreateNavalDivisionNode(division);
                    if (string.IsNullOrEmpty(division.Name))
                    {
                        node.Text = Resources.UnitTreeNewDivision;
                    }
                    parent.Nodes.Insert(index, node);
                    unit.Divisions.Insert(index, division);
                    _treeView.SelectedNode = node;
                    break;

                case NodeType.Air:
                    node = CreateAirDivisionNode(division);
                    if (string.IsNullOrEmpty(division.Name))
                    {
                        node.Text = Resources.UnitTreeNewDivision;
                    }
                    parent.Nodes.Insert(index, node);
                    unit.Divisions.Insert(index, division);
                    _treeView.SelectedNode = node;
                    break;
                }
                return;
            }

            // 未配備陸軍/海軍/空軍師団
            switch ((NodeType)parent.Tag)
            {
            case NodeType.UndeployedLand:
                node = CreateLandDivisionNode(division);
                if (string.IsNullOrEmpty(division.Name))
                {
                    node.Text = Resources.UnitTreeNewDivision;
                }
                parent.Nodes.Insert(index, node);
                settings.LandDivisions.Insert(index, division);
                _treeView.SelectedNode = node;
                break;

            case NodeType.UndeployedNaval:
                node = CreateNavalDivisionNode(division);
                if (string.IsNullOrEmpty(division.Name))
                {
                    node.Text = Resources.UnitTreeNewDivision;
                }
                parent.Nodes.Insert(index, node);
                settings.NavalDivisions.Insert(index, division);
                _treeView.SelectedNode = node;
                break;

            case NodeType.UndeployedAir:
                node = CreateAirDivisionNode(division);
                if (string.IsNullOrEmpty(division.Name))
                {
                    node.Text = Resources.UnitTreeNewDivision;
                }
                parent.Nodes.Insert(index, node);
                settings.AirDivisions.Insert(index, division);
                _treeView.SelectedNode = node;
                break;
            }
        }
コード例 #5
0
        /// <summary>
        ///     ユニットを複製する
        /// </summary>
        /// <param name="original">複製対象のユニット</param>
        private void CloneUnit(Unit original)
        {
            CountrySettings settings = Scenarios.GetCountrySettings(_country) ??
                                       Scenarios.CreateCountrySettings(_country);
            Unit unit = new Unit(original);

            unit.SetDirtyAll();
            TreeNode selected = _treeView.SelectedNode;
            TreeNode parent   = selected.Parent;
            TreeNode node;
            int      index = parent.Nodes.IndexOf(selected) + 1;

            // 編集済みフラグを設定する
            settings.SetDirty();
            Scenarios.SetDirty();

            // 陸軍/海軍/空軍/搭載ユニット
            switch ((NodeType)parent.Tag)
            {
            case NodeType.Land:
                node = CreateLandUnitNode(unit);
                if (string.IsNullOrEmpty(unit.Name))
                {
                    node.Text = Resources.UnitTreeNewUnit;
                }
                parent.Nodes.Insert(index, node);
                settings.LandUnits.Insert(index, unit);
                _treeView.SelectedNode = node;
                break;

            case NodeType.Naval:
                node = CreateNavalUnitNode(unit);
                if (string.IsNullOrEmpty(unit.Name))
                {
                    node.Text = Resources.UnitTreeNewUnit;
                }
                parent.Nodes.Insert(index, node);
                settings.NavalUnits.Insert(index, unit);
                _treeView.SelectedNode = node;
                break;

            case NodeType.Air:
                node = CreateAirUnitNode(unit);
                if (string.IsNullOrEmpty(unit.Name))
                {
                    node.Text = Resources.UnitTreeNewUnit;
                }
                parent.Nodes.Insert(index, node);
                settings.AirUnits.Insert(index, unit);
                _treeView.SelectedNode = node;
                break;

            case NodeType.Boarding:
                node = CreateLandUnitNode(unit);
                if (string.IsNullOrEmpty(unit.Name))
                {
                    node.Text = Resources.UnitTreeNewUnit;
                }
                parent.Nodes.Insert(index, node);
                Unit transport = (Unit)parent.Parent.Tag;
                transport.LandUnits.Insert(index, unit);
                _treeView.SelectedNode = node;
                break;
            }
        }
コード例 #6
0
        /// <summary>
        ///     師団を追加する
        /// </summary>
        public void AddDivision()
        {
            CountrySettings settings = Scenarios.GetCountrySettings(_country) ??
                                       Scenarios.CreateCountrySettings(_country);
            TreeNode node   = _treeView.SelectedNode;
            TreeNode parent = node.Parent;

            // 編集済みフラグを設定する
            settings.SetDirty();
            Scenarios.SetDirty();

            // 未配備陸軍/海軍/空軍師団のルートノード
            if (parent == null)
            {
                switch ((NodeType)node.Tag)
                {
                case NodeType.UndeployedLand:
                    AddDivision(Branch.Army, node, settings.LandDivisions, settings);
                    break;

                case NodeType.UndeployedNaval:
                    AddDivision(Branch.Navy, node, settings.NavalDivisions, settings);
                    break;

                case NodeType.UndeployedAir:
                    AddDivision(Branch.Airforce, node, settings.AirDivisions, settings);
                    break;
                }
                return;
            }

            // 陸軍/海軍/空軍/搭載ユニット
            Unit unit = node.Tag as Unit;

            if (unit != null)
            {
                AddDivision(unit.Branch, node, unit.Divisions, settings);
                return;
            }

            int index = parent.Nodes.IndexOf(node) + 1;

            // 陸軍/海軍/空軍/搭載師団
            unit = parent.Tag as Unit;
            if (unit != null)
            {
                AddDivision(index, unit.Branch, parent, unit.Divisions, settings);
                return;
            }

            // 未配備陸軍/海軍/空軍師団
            switch ((NodeType)parent.Tag)
            {
            case NodeType.UndeployedLand:
                AddDivision(index, Branch.Army, parent, settings.LandDivisions, settings);
                break;

            case NodeType.UndeployedNaval:
                AddDivision(index, Branch.Navy, parent, settings.NavalDivisions, settings);
                break;

            case NodeType.UndeployedAir:
                AddDivision(index, Branch.Airforce, parent, settings.AirDivisions, settings);
                break;
            }
        }
コード例 #7
0
        /// <summary>
        ///     項目値変更後の処理 - 師団の最大組織率
        /// </summary>
        /// <param name="control">現在値のコントロール</param>
        /// <param name="division">師団</param>
        /// <param name="settings">国家設定</param>
        private void PostItemChangedMaxOrganisation(TextBox control, Division division, CountrySettings settings)
        {
            if (DoubleHelper.IsZero(division.Organisation) ||
                DoubleHelper.IsLessOrEqual(division.Organisation, division.MaxOrganisation))
            {
                return;
            }

            // 現在値を最大値に合わせる
            division.Organisation = division.MaxOrganisation;

            // 編集済みフラグを設定する
            division.SetDirty(Division.ItemId.Organisation);
            settings.SetDirty();
            Scenarios.SetDirty();

            // 項目の値を更新する
            UpdateItemValue(control, division);

            // 項目の色を更新する
            UpdateItemColor(control, division);
        }
コード例 #8
0
        /// <summary>
        ///     項目値変更後の処理 - 師団の戦力
        /// </summary>
        /// <param name="control">最大値のコントロール</param>
        /// <param name="division">師団</param>
        /// <param name="settings">国家設定</param>
        private void PostItemChangedStrength(TextBox control, Division division, CountrySettings settings)
        {
            if (DoubleHelper.IsZero(division.MaxStrength) ||
                DoubleHelper.IsLessOrEqual(division.Strength, division.MaxStrength))
            {
                return;
            }

            // 最大値を現在値に合わせる
            division.MaxStrength = division.Strength;

            // 編集済みフラグを設定する
            division.SetDirty(Division.ItemId.MaxStrength);
            settings.SetDirty();
            Scenarios.SetDirty();

            // 項目の値を更新する
            UpdateItemValue(control, division);

            // 項目の色を更新する
            UpdateItemColor(control, division);
        }
コード例 #9
0
 /// <summary>
 ///     編集項目の編集済みフラグを設定する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="division">師団</param>
 /// <param name="settings">国家設定</param>
 public void SetItemDirty(ScenarioEditorItemId itemId, Division division, CountrySettings settings)
 {
     division.SetDirty((Division.ItemId) ItemDirtyFlags[(int) itemId]);
     settings.SetDirty();
     Scenarios.SetDirty();
 }
コード例 #10
0
 /// <summary>
 ///     編集項目の編集済みフラグを設定する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="unit">ユニット</param>
 /// <param name="settings">国家設定</param>
 public void SetItemDirty(ScenarioEditorItemId itemId, Unit unit, CountrySettings settings)
 {
     unit.SetDirty((Unit.ItemId) ItemDirtyFlags[(int) itemId]);
     settings.SetDirty();
     Scenarios.SetDirty();
 }
コード例 #11
0
        /// <summary>
        ///     編集項目の編集済みフラグを設定する
        /// </summary>
        /// <param name="itemId">項目ID</param>
        /// <param name="province">プロヴィンス</param>
        /// <param name="settings">国家設定</param>
        public void SetItemDirty(ScenarioEditorItemId itemId, Province province, CountrySettings settings)
        {
            switch (itemId)
            {
                case ScenarioEditorItemId.CountryCapital:
                    settings.SetDirty((CountrySettings.ItemId) ItemDirtyFlags[(int) itemId]);
                    Scenarios.SetDirty();
                    break;

                case ScenarioEditorItemId.CountryCoreProvinces:
                    settings.SetDirtyCoreProvinces(province.Id);
                    Scenarios.SetDirty();
                    break;

                case ScenarioEditorItemId.CountryOwnedProvinces:
                    settings.SetDirtyOwnedProvinces(province.Id);
                    Scenarios.SetDirty();
                    break;

                case ScenarioEditorItemId.CountryControlledProvinces:
                    settings.SetDirtyControlledProvinces(province.Id);
                    Scenarios.Data.SetDirtyProvinces();
                    Scenarios.SetDirty();
                    break;

                case ScenarioEditorItemId.CountryClaimedProvinces:
                    settings.SetDirtyClaimedProvinces(province.Id);
                    Scenarios.SetDirty();
                    break;
            }
        }
コード例 #12
0
 /// <summary>
 ///     編集項目の編集済みフラグを設定する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="settings">国家設定</param>
 public void SetItemDirty(ScenarioEditorItemId itemId, CountrySettings settings)
 {
     settings.SetDirty((CountrySettings.ItemId) ItemDirtyFlags[(int) itemId]);
     Scenarios.SetDirty();
 }
コード例 #13
0
 /// <summary>
 ///     編集項目の編集済みフラグを設定する
 /// </summary>
 /// <param name="itemId">項目ID</param>
 /// <param name="relation">国家関係</param>
 /// <param name="settings">国家設定</param>
 public void SetItemDirty(ScenarioEditorItemId itemId, Relation relation, CountrySettings settings)
 {
     relation.SetDirty((Relation.ItemId) ItemDirtyFlags[(int) itemId]);
     settings.SetDirty();
     Scenarios.SetDirty();
 }