コード例 #1
0
ファイル: Unit.cs プロジェクト: nkodama/HoI2Editor
        /// <summary>
        ///     ユニットモデルを挿入する
        /// </summary>
        /// <param name="model">挿入対象のユニットモデル</param>
        /// <param name="index">挿入する位置</param>
        /// <param name="name">ユニットモデル名</param>
        public void InsertModel(UnitModel model, int index, string name)
        {
            Log.Info("[Unit] Insert model: {0} ({1})", index, this);

            // 挿入位置以降のユニットモデル名を変更する
            SlideModelNamesDown(index, Models.Count - 1);

            // 挿入位置の国別ユニットモデル名を削除する
            foreach (Country country in Countries.Tags)
            {
                RemoveModelName(index, country);
            }

            // 挿入位置のユニットモデル名を変更する
            SetModelName(index, name);

            // ユニットモデルリストに項目を挿入する
            Models.Insert(index, model);

            // 編集済みフラグを設定する
            model.SetDirtyAll();
            SetDirtyFile();
        }
コード例 #2
0
ファイル: UnitEditorForm.cs プロジェクト: nkodama/HoI2Editor
        /// <summary>
        ///     ユニットモデルを挿入する
        /// </summary>
        /// <param name="unit">ユニットクラス</param>
        /// <param name="model">挿入対象のユニットモデル</param>
        /// <param name="index">挿入する位置</param>
        /// <param name="name">ユニットモデル名</param>
        private void InsertModel(UnitClass unit, UnitModel model, int index, string name)
        {
            // ユニットクラスにユニットモデルを挿入する
            unit.InsertModel(model, index, name);

            // ユニットモデルリストの表示を更新する
            UpdateModelList();

            // 挿入した項目を選択する
            modelListView.Items[index].Focused = true;
            modelListView.Items[index].Selected = true;

            // 挿入した項目が表示されるようにする
            modelListView.EnsureVisible(index);
        }
コード例 #3
0
ファイル: UnitEditorForm.cs プロジェクト: nkodama/HoI2Editor
        /// <summary>
        ///     装備リストビューの項目を更新する
        /// </summary>
        /// <param name="model"></param>
        private void UpdateEquipmentList(UnitModel model)
        {
            // 項目を順に登録する
            equipmentListView.BeginUpdate();
            equipmentListView.Items.Clear();
            foreach (UnitEquipment equipment in model.Equipments)
            {
                equipmentListView.Items.Add(CreateEquipmentListItem(equipment));
            }
            equipmentListView.EndUpdate();

            // 項目がなければ編集項目を無効化する
            if (model.Equipments.Count == 0)
            {
                DisableEquipmentItems();
                return;
            }

            // 先頭の項目を選択する
            equipmentListView.Items[0].Focused = true;
            equipmentListView.Items[0].Selected = true;

            // 編集項目を有効化する
            EnableEquipmentItems();
        }
コード例 #4
0
ファイル: UnitEditorForm.cs プロジェクト: nkodama/HoI2Editor
        /// <summary>
        ///     複製ボタン押下時の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnCloneButtonClick(object sender, EventArgs e)
        {
            // 選択中のユニットクラスがなければ何もしない
            UnitClass unit = classListBox.SelectedItem as UnitClass;
            if (unit == null)
            {
                return;
            }

            // 選択中のユニットモデルがなければ何もしない
            if (modelListView.SelectedIndices.Count == 0)
            {
                return;
            }
            int index = modelListView.SelectedIndices[0];

            // ユニットモデルを挿入する
            UnitModel model = new UnitModel(unit.Models[index]);
            InsertModel(unit, model, index + 1, unit.GetModelName(index));

            // ユニットモデルリストの更新を通知する
            HoI2EditorController.OnItemChanged(EditorItemId.ModelList, this);
        }
コード例 #5
0
ファイル: UnitEditorForm.cs プロジェクト: nkodama/HoI2Editor
        /// <summary>
        ///     新規ボタン押下時の処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnNewButtonClick(object sender, EventArgs e)
        {
            // 選択中のユニットクラスがなければ何もしない
            UnitClass unit = classListBox.SelectedItem as UnitClass;
            if (unit == null)
            {
                return;
            }

            // ユニットモデルを挿入する
            UnitModel model = new UnitModel();
            int index = modelListView.SelectedIndices.Count > 0 ? modelListView.SelectedIndices[0] + 1 : 0;
            InsertModel(unit, model, index, "");

            // ユニットモデルリストの更新を通知する
            HoI2EditorController.OnItemChanged(EditorItemId.ModelList, this);
        }
コード例 #6
0
ファイル: UnitWriter.cs プロジェクト: nkodama/HoI2Editor
 /// <summary>
 ///     海軍師団のモデルデータを書き出す
 /// </summary>
 /// <param name="model">ユニットモデルデータ</param>
 /// <param name="writer">ファイル書き込み用</param>
 private static void WriteNavalDivision(UnitModel model, StreamWriter writer)
 {
     writer.WriteLine("\tcost\t\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Cost));
     // 必要ICが0のモデルは未定義と扱う
     if (DoubleHelper.IsZero(model.Cost))
     {
         return;
     }
     writer.WriteLine("\tbuildtime \t\t\t\t\t= {0}", DoubleHelper.ToString(model.BuildTime));
     writer.WriteLine("\tdefaultorganisation \t\t= {0}", DoubleHelper.ToString(model.DefaultOrganization));
     writer.WriteLine("\tmorale\t\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Morale));
     writer.WriteLine("\tmanpower\t\t\t\t\t= {0}", DoubleHelper.ToString(model.ManPower));
     writer.WriteLine("\tmaxspeed\t\t\t\t\t= {0}", DoubleHelper.ToString(model.MaxSpeed));
     writer.WriteLine("\tsurfacedetectioncapability\t= {0}",
         DoubleHelper.ToString(model.SurfaceDetectionCapability));
     writer.WriteLine("\tairdetectioncapability\t\t= {0}", DoubleHelper.ToString(model.AirDetectionCapability));
     writer.WriteLine("\tsubdetectioncapability\t\t= {0}", DoubleHelper.ToString(model.SubDetectionCapability));
     writer.WriteLine("\tvisibility\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Visibility));
     writer.WriteLine("\tseadefence\t\t\t\t\t= {0}", DoubleHelper.ToString(model.SeaDefense));
     writer.WriteLine("\tairdefence\t\t\t\t\t= {0}", DoubleHelper.ToString(model.AirDefence));
     writer.WriteLine("\tseaattack\t\t\t\t\t= {0}", DoubleHelper.ToString(model.SeaAttack));
     writer.WriteLine("\tairattack\t\t\t\t\t= {0}", DoubleHelper.ToString(model.AirAttack));
     writer.WriteLine("\tsubattack\t\t\t\t\t= {0}", DoubleHelper.ToString(model.SubAttack));
     writer.WriteLine("\tconvoyattack\t\t\t\t\t= {0}", DoubleHelper.ToString(model.ConvoyAttack));
     writer.WriteLine("\tshorebombardment\t\t\t= {0}", DoubleHelper.ToString(model.ShoreBombardment));
     writer.WriteLine("\ttransportcapability\t\t\t= {0}", DoubleHelper.ToString(model.TransportCapability));
     writer.WriteLine("\trange\t\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Range));
     writer.WriteLine("\tsupplyconsumption\t\t\t= {0}", DoubleHelper.ToString(model.SupplyConsumption));
     writer.WriteLine("\tfuelconsumption\t\t\t\t= {0}", DoubleHelper.ToString(model.FuelConsumption));
     writer.WriteLine("\tdistance\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Distance));
     if ((Game.Type == GameType.DarkestHour) && !DoubleHelper.IsZero(model.UpgradeTimeFactor))
     {
         writer.WriteLine("\tupgrade_time_factor = {0}", DoubleHelper.ToString(model.UpgradeTimeFactor));
     }
     if ((Game.Type == GameType.DarkestHour) && !DoubleHelper.IsZero(model.UpgradeCostFactor))
     {
         writer.WriteLine("\tupgrade_cost_factor = {0}", DoubleHelper.ToString(model.UpgradeCostFactor));
     }
     if ((Game.Type == GameType.DarkestHour) && !DoubleHelper.IsZero(model.ReinforceTimeFactor))
     {
         writer.WriteLine("\treinforce_time\t\t= {0}", DoubleHelper.ToString(model.ReinforceTimeFactor));
     }
     if ((Game.Type == GameType.DarkestHour) && !DoubleHelper.IsZero(model.ReinforceCostFactor))
     {
         writer.WriteLine("\treinforce_cost \t\t= {0}", DoubleHelper.ToString(model.ReinforceCostFactor));
     }
 }
コード例 #7
0
ファイル: UnitWriter.cs プロジェクト: nkodama/HoI2Editor
        /// <summary>
        ///     modelセクションを書き出す
        /// </summary>
        /// <param name="model">ユニットモデルデータ</param>
        /// <param name="unit">ユニットデータ</param>
        /// <param name="index">ユニットモデルのインデックス</param>
        /// <param name="writer">ファイル書き込み用</param>
        private static void WriteModel(UnitModel model, UnitClass unit, int index, StreamWriter writer)
        {
            writer.WriteLine("# {0} - {1}", index, unit.GetModelName(index));
            writer.WriteLine("model = {");

            // 兵科固有部分
            switch (unit.Branch)
            {
                case Branch.Army:
                    if (unit.Organization == UnitOrganization.Division)
                    {
                        WriteLandDivision(model, writer);
                    }
                    else
                    {
                        WriteLandBrigade(model, writer);
                    }
                    break;

                case Branch.Navy:
                    if (unit.Organization == UnitOrganization.Division)
                    {
                        WriteNavalDivision(model, writer);
                    }
                    else
                    {
                        WriteNavalBrigade(model, writer);
                    }
                    break;

                case Branch.Airforce:
                    if (unit.Organization == UnitOrganization.Division)
                    {
                        WriteAirDivision(model, writer);
                    }
                    else
                    {
                        WriteAirBrigade(model, writer);
                    }
                    break;
            }

            if (Game.Type == GameType.DarkestHour)
            {
                // 自動改良
                if (model.AutoUpgrade)
                {
                    writer.WriteLine("\t{0}\t\t\t\t= {1}", Units.Strings[(int) model.UpgradeClass], model.UpgradeModel);
                }
                // upgrade_time_boost
                if (!model.UpgradeTimeBoost)
                {
                    writer.WriteLine("\tupgrade_time_boost \t= {0}", model.UpgradeTimeBoost ? "yes" : "no");
                }
            }

            // equipment (DH1.03以降)
            if ((Game.Type == GameType.DarkestHour) && (Game.Version >= 103) && (model.Equipments.Count > 0))
            {
                writer.Write("\tequipment = {");
                foreach (UnitEquipment equipment in model.Equipments)
                {
                    writer.Write(" {0} = {1}", Units.EquipmentStrings[(int) equipment.Resource], equipment.Quantity);
                }
                writer.WriteLine(" }");
            }

            writer.WriteLine("}");
        }
コード例 #8
0
ファイル: UnitWriter.cs プロジェクト: nkodama/HoI2Editor
 /// <summary>
 ///     陸軍師団のモデルデータを書き出す
 /// </summary>
 /// <param name="model">ユニットモデルデータ</param>
 /// <param name="writer">ファイル書き込み用</param>
 private static void WriteLandDivision(UnitModel model, StreamWriter writer)
 {
     writer.WriteLine("\tcost \t\t\t\t\t= {0}", DoubleHelper.ToString(model.Cost));
     // 必要ICが0のモデルは未定義と扱う
     if (DoubleHelper.IsZero(model.Cost))
     {
         return;
     }
     writer.WriteLine("\tbuildtime\t \t\t\t= {0}", DoubleHelper.ToString(model.BuildTime));
     writer.WriteLine("\tmanpower \t\t\t\t= {0}", DoubleHelper.ToString(model.ManPower));
     writer.WriteLine("\tmaxspeed \t\t\t\t= {0}", DoubleHelper.ToString(model.MaxSpeed));
     writer.WriteLine("\tdefaultorganisation \t= {0}", DoubleHelper.ToString(model.DefaultOrganization));
     writer.WriteLine("\tmorale\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Morale));
     writer.WriteLine("\tdefensiveness \t\t\t= {0}", DoubleHelper.ToString(model.Defensiveness));
     writer.WriteLine("\ttoughness\t\t\t\t= {0}", DoubleHelper.ToString(model.Toughness));
     writer.WriteLine("\tsoftness\t\t\t\t= {0}", DoubleHelper.ToString(model.Softness));
     writer.WriteLine("\tsuppression\t\t\t\t= {0}", DoubleHelper.ToString(model.Suppression));
     writer.WriteLine("\tairdefence\t\t\t\t= {0}", DoubleHelper.ToString(model.AirDefence));
     writer.WriteLine("\tsoftattack\t\t\t\t= {0}", DoubleHelper.ToString(model.SoftAttack));
     writer.WriteLine("\thardattack\t\t\t\t= {0}", DoubleHelper.ToString(model.HardAttack));
     writer.WriteLine("\tairattack\t\t\t\t= {0}", DoubleHelper.ToString(model.AirAttack));
     writer.WriteLine("\ttransportweight\t\t\t= {0}", DoubleHelper.ToString(model.TransportWeight));
     writer.WriteLine("\tsupplyconsumption \t\t= {0}", DoubleHelper.ToString(model.SupplyConsumption));
     writer.WriteLine("\tfuelconsumption\t\t\t= {0}", DoubleHelper.ToString(model.FuelConsumption));
     if ((Game.Type == GameType.DarkestHour) && !DoubleHelper.IsZero(model.NoFuelCombatMod))
     {
         writer.WriteLine("\tno_fuel_combat_mod \t\t= {0}", DoubleHelper.ToString(model.NoFuelCombatMod));
     }
     if (!DoubleHelper.IsZero(model.SpeedCapArt))
     {
         writer.WriteLine("\tspeed_cap_art\t\t\t= {0}", DoubleHelper.ToString(model.SpeedCapArt));
     }
     if (!DoubleHelper.IsZero(model.SpeedCapEng))
     {
         writer.WriteLine("\tspeed_cap_eng\t\t\t= {0}", DoubleHelper.ToString(model.SpeedCapEng));
     }
     if (!DoubleHelper.IsZero(model.SpeedCapAt))
     {
         writer.WriteLine("\tspeed_cap_at\t\t\t= {0}", DoubleHelper.ToString(model.SpeedCapAt));
     }
     if (!DoubleHelper.IsZero(model.SpeedCapAa))
     {
         writer.WriteLine("\tspeed_cap_aa\t\t\t= {0}", DoubleHelper.ToString(model.SpeedCapAa));
     }
     writer.WriteLine("\tupgrade_time_factor = {0}", DoubleHelper.ToString(model.UpgradeTimeFactor));
     writer.WriteLine("\tupgrade_cost_factor = {0}", DoubleHelper.ToString(model.UpgradeCostFactor));
     if ((Game.Type == GameType.ArsenalOfDemocracy) && !DoubleHelper.IsZero(model.MaxSupplyStock))
     {
         writer.WriteLine("\tmax_supply_stock = {0}", DoubleHelper.ToString(model.MaxSupplyStock));
     }
     if ((Game.Type == GameType.ArsenalOfDemocracy) && !DoubleHelper.IsZero(model.MaxOilStock))
     {
         writer.WriteLine("\tmax_oil_stock = {0}", DoubleHelper.ToString(model.MaxOilStock));
     }
     if ((Game.Type == GameType.DarkestHour) && !DoubleHelper.IsZero(model.ReinforceTimeFactor))
     {
         writer.WriteLine("\treinforce_time\t\t= {0}", DoubleHelper.ToString(model.ReinforceTimeFactor));
     }
     if ((Game.Type == GameType.DarkestHour) && !DoubleHelper.IsZero(model.ReinforceCostFactor))
     {
         writer.WriteLine("\treinforce_cost \t\t= {0}", DoubleHelper.ToString(model.ReinforceCostFactor));
     }
 }
コード例 #9
0
ファイル: UnitWriter.cs プロジェクト: nkodama/HoI2Editor
 /// <summary>
 ///     陸軍旅団のモデルデータを書き出す
 /// </summary>
 /// <param name="model">ユニットモデルデータ</param>
 /// <param name="writer">ファイル書き込み用</param>
 private static void WriteLandBrigade(UnitModel model, StreamWriter writer)
 {
     writer.WriteLine("\tcost \t\t\t\t= {0}", DoubleHelper.ToString(model.Cost));
     // 必要ICが0のモデルは未定義と扱う
     if (DoubleHelper.IsZero(model.Cost))
     {
         return;
     }
     writer.WriteLine("\tbuildtime\t \t\t= {0}", DoubleHelper.ToString(model.BuildTime));
     writer.WriteLine("\tmanpower \t\t\t= {0}", DoubleHelper.ToString(model.ManPower));
     if (!DoubleHelper.IsZero(model.MaxSpeed))
     {
         writer.WriteLine("\tmaxspeed \t\t\t= {0}", DoubleHelper.ToString(model.MaxSpeed));
     }
     if (!DoubleHelper.IsZero(model.DefaultOrganization))
     {
         writer.WriteLine("\tdefaultorganisation = {0}", DoubleHelper.ToString(model.DefaultOrganization));
     }
     if (!DoubleHelper.IsZero(model.Morale))
     {
         writer.WriteLine("\tmorale\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Morale));
     }
     if (!DoubleHelper.IsZero(model.Defensiveness))
     {
         writer.WriteLine("\tdefensiveness \t\t= {0}", DoubleHelper.ToString(model.Defensiveness));
     }
     if (!DoubleHelper.IsZero(model.Toughness))
     {
         writer.WriteLine("\ttoughness \t\t\t= {0}", DoubleHelper.ToString(model.Toughness));
     }
     if (!DoubleHelper.IsZero(model.Softness))
     {
         writer.WriteLine("\tsoftness\t\t\t= {0}", DoubleHelper.ToString(model.Softness));
     }
     if (!DoubleHelper.IsZero(model.Suppression))
     {
         writer.WriteLine("\tsuppression\t\t\t= {0}", DoubleHelper.ToString(model.Suppression));
     }
     if (!DoubleHelper.IsZero(model.AirDefence))
     {
         writer.WriteLine("\tairdefence\t\t\t\t= {0}", DoubleHelper.ToString(model.AirDefence));
     }
     if (!DoubleHelper.IsZero(model.SoftAttack))
     {
         writer.WriteLine("\tsoftattack\t\t\t= {0}", DoubleHelper.ToString(model.SoftAttack));
     }
     if (!DoubleHelper.IsZero(model.HardAttack))
     {
         writer.WriteLine("\thardattack\t\t\t= {0}", DoubleHelper.ToString(model.HardAttack));
     }
     if (!DoubleHelper.IsZero(model.AirAttack))
     {
         writer.WriteLine("\tairattack\t\t\t= {0}", DoubleHelper.ToString(model.AirAttack));
     }
     if ((Game.Type == GameType.ArsenalOfDemocracy) && !DoubleHelper.IsZero(model.ArtilleryBombardment))
     {
         writer.WriteLine("\tartillery_bombardment\t\t= {0}", DoubleHelper.ToString(model.ArtilleryBombardment));
     }
     if (!DoubleHelper.IsZero(model.TransportWeight))
     {
         writer.WriteLine("\ttransportweight\t\t\t= {0}", DoubleHelper.ToString(model.TransportWeight));
     }
     writer.WriteLine("\tsupplyconsumption \t= {0}", DoubleHelper.ToString(model.SupplyConsumption));
     if (!DoubleHelper.IsZero(model.FuelConsumption))
     {
         writer.WriteLine("\tfuelconsumption\t\t= {0}", DoubleHelper.ToString(model.FuelConsumption));
     }
     writer.WriteLine("\tupgrade_time_factor = {0}", DoubleHelper.ToString(model.UpgradeTimeFactor));
     writer.WriteLine("\tupgrade_cost_factor = {0}", DoubleHelper.ToString(model.UpgradeCostFactor));
     if ((Game.Type == GameType.DarkestHour) && (Game.Version >= 103) && !DoubleHelper.IsZero(model.SpeedCap))
     {
         writer.WriteLine("\tspeed_cap\t\t\t= {0}", DoubleHelper.ToString(model.SpeedCap));
     }
 }
コード例 #10
0
ファイル: UnitWriter.cs プロジェクト: nkodama/HoI2Editor
 /// <summary>
 ///     空軍旅団のモデルデータを書き出す
 /// </summary>
 /// <param name="model">ユニットモデルデータ</param>
 /// <param name="writer">ファイル書き込み用</param>
 private static void WriteAirBrigade(UnitModel model, StreamWriter writer)
 {
     writer.WriteLine("\tcost \t\t\t\t\t= {0}", DoubleHelper.ToString(model.Cost));
     // 必要ICが0のモデルは未定義と扱う
     if (DoubleHelper.IsZero(model.Cost))
     {
         return;
     }
     writer.WriteLine("\tbuildtime\t \t\t\t= {0}", DoubleHelper.ToString(model.BuildTime));
     writer.WriteLine("\tdefaultorganisation \t\t= {0}", DoubleHelper.ToString(model.DefaultOrganization));
     writer.WriteLine("\tmorale\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Morale));
     writer.WriteLine("\tmanpower\t\t\t\t= {0}", DoubleHelper.ToString(model.ManPower));
     writer.WriteLine("\tmaxspeed\t\t\t\t= {0}", DoubleHelper.ToString(model.MaxSpeed));
     writer.WriteLine("\tsurfacedetectioncapability\t= {0}",
         DoubleHelper.ToString(model.SurfaceDetectionCapability));
     writer.WriteLine("\tairdetectioncapability\t\t= {0}", DoubleHelper.ToString(model.AirDetectionCapability));
     writer.WriteLine("\tsurfacedefence\t\t\t\t= {0}", DoubleHelper.ToString(model.SurfaceDefence));
     writer.WriteLine("\tairdefence\t\t\t\t= {0}", DoubleHelper.ToString(model.AirDefence));
     writer.WriteLine("\tairattack\t\t\t\t= {0}", DoubleHelper.ToString(model.AirAttack));
     writer.WriteLine("\tstrategicattack\t\t\t\t= {0}", DoubleHelper.ToString(model.StrategicAttack));
     writer.WriteLine("\tsoftattack\t\t\t\t= {0}", DoubleHelper.ToString(model.SoftAttack));
     writer.WriteLine("\thardattack\t\t\t\t= {0}", DoubleHelper.ToString(model.HardAttack));
     writer.WriteLine("\tnavalattack\t\t\t\t= {0}", DoubleHelper.ToString(model.NavalAttack));
     if (!DoubleHelper.IsZero(model.TransportCapability))
     {
         writer.WriteLine("\ttransportcapability\t\t\t= {0}", DoubleHelper.ToString(model.TransportCapability));
     }
     writer.WriteLine("\trange\t\t\t\t\t= {0}", DoubleHelper.ToString(model.Range));
     writer.WriteLine("\tsupplyconsumption \t\t\t= {0}", DoubleHelper.ToString(model.SupplyConsumption));
     writer.WriteLine("\tfuelconsumption\t\t\t\t= {0}", DoubleHelper.ToString(model.FuelConsumption));
     writer.WriteLine("\tupgrade_time_factor = {0}", DoubleHelper.ToString(model.UpgradeTimeFactor));
     writer.WriteLine("\tupgrade_cost_factor = {0}", DoubleHelper.ToString(model.UpgradeCostFactor));
 }