예제 #1
0
 /// <summary>
 ///     一括編集対象の指揮官リストを取得する
 /// </summary>
 /// <param name="args">一括編集のパラメータ</param>
 /// <returns>一括編集対象の指揮官リスト</returns>
 private static IEnumerable<Leader> GetBatchEditLeaders(LeaderBatchEditArgs args)
 {
     return args.CountryMode == BatchCountryMode.All
         ? Items
             .Where(leader =>
                 (leader.Branch == Branch.Army && args.Army) ||
                 (leader.Branch == Branch.Navy && args.Navy) ||
                 (leader.Branch == Branch.Airforce && args.Airforce))
             .ToList()
         : Items
             .Where(leader => args.TargetCountries.Contains(leader.Country))
             .Where(leader =>
                 (leader.Branch == Branch.Army && args.Army) ||
                 (leader.Branch == Branch.Navy && args.Navy) ||
                 (leader.Branch == Branch.Airforce && args.Airforce))
             .ToList();
 }
예제 #2
0
        /// <summary>
        ///     コンストラクタ
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        public LeaderBatchDialog(LeaderBatchEditArgs args)
        {
            InitializeComponent();

            _args = args;
        }
예제 #3
0
 /// <summary>
 ///     一括編集項目のログ文字列を取得する
 /// </summary>
 /// <param name="args">一括編集のパラメータ</param>
 /// <returns>ログ文字列</returns>
 private static string GetBatchEditItemLog(LeaderBatchEditArgs args)
 {
     StringBuilder sb = new StringBuilder();
     if (args.Items[(int) LeaderBatchItemId.IdealRank])
     {
         sb.AppendFormat($" ideal rank: {Config.GetText(RankNames[(int) args.IdealRank])}");
     }
     if (args.Items[(int) LeaderBatchItemId.Skill])
     {
         sb.AppendFormat($" skill: {args.Skill}");
     }
     if (args.Items[(int) LeaderBatchItemId.MaxSkill])
     {
         sb.AppendFormat($" max skill: {args.MaxSkill}");
     }
     if (args.Items[(int) LeaderBatchItemId.Experience])
     {
         sb.AppendFormat($" experience: {args.Experience}");
     }
     if (args.Items[(int) LeaderBatchItemId.Loyalty])
     {
         sb.AppendFormat($" loyalty: {args.Loyalty}");
     }
     if (args.Items[(int) LeaderBatchItemId.StartYear])
     {
         sb.AppendFormat($" start year: {args.StartYear}");
     }
     if (args.Items[(int) LeaderBatchItemId.EndYear])
     {
         sb.AppendFormat($" end year: {args.EndYear}");
     }
     if (args.Items[(int) LeaderBatchItemId.RetirementYear])
     {
         sb.AppendFormat($" retirement year: {args.RetirementYear}");
     }
     if (args.Items[(int) LeaderBatchItemId.Rank3Year])
     {
         sb.AppendFormat($" rank3 year: {args.RankYear[0]}");
     }
     if (args.Items[(int) LeaderBatchItemId.Rank2Year])
     {
         sb.AppendFormat($" rank2 year: {args.RankYear[1]}");
     }
     if (args.Items[(int) LeaderBatchItemId.Rank1Year])
     {
         sb.AppendFormat($" rank1 year: {args.RankYear[2]}");
     }
     if (args.ActionMode == BatchActionMode.Copy)
     {
         sb.Append($" Copy: {Countries.Strings[(int) args.Destination]} id: {args.Id}");
     }
     else if (args.ActionMode == BatchActionMode.Move)
     {
         sb.Append($" Move: {Countries.Strings[(int) args.Destination]} id: {args.Id}");
     }
     if (sb.Length > 0)
     {
         sb.Remove(0, 1);
     }
     return sb.ToString();
 }
예제 #4
0
        /// <summary>
        ///     一括編集の個別処理
        /// </summary>
        /// <param name="leader">対象指揮官</param>
        /// <param name="args">一括編集のパラメータ</param>
        private static void BatchEditLeader(Leader leader, LeaderBatchEditArgs args)
        {
            // 理想階級
            if (args.Items[(int) LeaderBatchItemId.IdealRank])
            {
                if (leader.IdealRank != args.IdealRank)
                {
                    leader.IdealRank = args.IdealRank;
                    leader.SetDirty(LeaderItemId.IdealRank);
                    SetDirty(leader.Country);
                }
            }

            // スキル
            if (args.Items[(int) LeaderBatchItemId.Skill])
            {
                if (leader.Skill != args.Skill)
                {
                    leader.Skill = args.Skill;
                    leader.SetDirty(LeaderItemId.Skill);
                    SetDirty(leader.Country);
                }
            }

            // 最大スキル
            if (args.Items[(int) LeaderBatchItemId.MaxSkill])
            {
                if (leader.MaxSkill != args.MaxSkill)
                {
                    leader.MaxSkill = args.MaxSkill;
                    leader.SetDirty(LeaderItemId.MaxSkill);
                    SetDirty(leader.Country);
                }
            }

            // 経験値
            if (args.Items[(int) LeaderBatchItemId.Experience])
            {
                if (leader.Experience != args.Experience)
                {
                    leader.Experience = args.Experience;
                    leader.SetDirty(LeaderItemId.Experience);
                    SetDirty(leader.Country);
                }
            }

            // 忠誠度
            if (args.Items[(int) LeaderBatchItemId.Loyalty])
            {
                if (leader.Loyalty != args.Loyalty)
                {
                    leader.Loyalty = args.Loyalty;
                    leader.SetDirty(LeaderItemId.Loyalty);
                    SetDirty(leader.Country);
                }
            }

            // 開始年
            if (args.Items[(int) LeaderBatchItemId.StartYear])
            {
                if (leader.StartYear != args.StartYear)
                {
                    leader.StartYear = args.StartYear;
                    leader.SetDirty(LeaderItemId.StartYear);
                    SetDirty(leader.Country);
                }
            }

            // 終了年
            if (args.Items[(int) LeaderBatchItemId.EndYear])
            {
                if (leader.EndYear != args.EndYear)
                {
                    leader.EndYear = args.EndYear;
                    leader.SetDirty(LeaderItemId.EndYear);
                    SetDirty(leader.Country);
                }
            }

            // 引退年
            if (args.Items[(int) LeaderBatchItemId.RetirementYear])
            {
                if (leader.RetirementYear != args.RetirementYear)
                {
                    leader.RetirementYear = args.RetirementYear;
                    leader.SetDirty(LeaderItemId.RetirementYear);
                    SetDirty(leader.Country);
                }
            }

            // 少将任官年
            if (args.Items[(int) LeaderBatchItemId.Rank3Year])
            {
                if (leader.RankYear[0] != args.RankYear[0])
                {
                    leader.RankYear[0] = args.RankYear[0];
                    leader.SetDirty(LeaderItemId.Rank3Year);
                    SetDirty(leader.Country);
                }
            }

            // 中将任官年
            if (args.Items[(int) LeaderBatchItemId.Rank2Year])
            {
                if (leader.RankYear[1] != args.RankYear[1])
                {
                    leader.RankYear[1] = args.RankYear[1];
                    leader.SetDirty(LeaderItemId.Rank2Year);
                    SetDirty(leader.Country);
                }
            }

            // 大将任官年
            if (args.Items[(int) LeaderBatchItemId.Rank1Year])
            {
                if (leader.RankYear[2] != args.RankYear[2])
                {
                    leader.RankYear[2] = args.RankYear[2];
                    leader.SetDirty(LeaderItemId.Rank1Year);
                    SetDirty(leader.Country);
                }
            }

            // 元帥任官年
            if (args.Items[(int) LeaderBatchItemId.Rank0Year])
            {
                if (leader.RankYear[3] != args.RankYear[3])
                {
                    leader.RankYear[3] = args.RankYear[3];
                    leader.SetDirty(LeaderItemId.Rank0Year);
                    SetDirty(leader.Country);
                }
            }
        }
예제 #5
0
        /// <summary>
        ///     一括編集
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        public static void BatchEdit(LeaderBatchEditArgs args)
        {
            LogBatchEdit(args);

            IEnumerable<Leader> leaders = GetBatchEditLeaders(args);
            Country newCountry;
            switch (args.ActionMode)
            {
                case BatchActionMode.Modify:
                    // 指揮官を一括編集する
                    foreach (Leader leader in leaders)
                    {
                        BatchEditLeader(leader, args);
                    }
                    break;

                case BatchActionMode.Copy:
                    // 指揮官をコピーする
                    newCountry = args.Destination;
                    int id = args.Id;
                    foreach (Leader leader in leaders)
                    {
                        id = GetNewId(id);
                        Leader newLeader = new Leader(leader)
                        {
                            Country = newCountry,
                            Id = id
                        };
                        newLeader.SetDirtyAll();
                        Items.Add(newLeader);
                    }

                    // コピー先の国の編集済みフラグを設定する
                    SetDirty(newCountry);

                    // コピー先の国がファイル一覧に存在しなければ追加する
                    if (!FileNameMap.ContainsKey(newCountry))
                    {
                        FileNameMap.Add(newCountry, Game.GetLeaderFileName(newCountry));
                        SetDirtyList();
                    }
                    break;

                case BatchActionMode.Move:
                    // 指揮官を移動する
                    newCountry = args.Destination;
                    foreach (Leader leader in leaders)
                    {
                        // 移動前の国の編集済みフラグを設定する
                        SetDirty(leader.Country);

                        leader.Country = newCountry;
                        leader.SetDirty(LeaderItemId.Country);
                    }

                    // 移動先の国の編集済みフラグを設定する
                    SetDirty(newCountry);

                    // 移動先の国がファイル一覧に存在しなければ追加する
                    if (!FileNameMap.ContainsKey(newCountry))
                    {
                        FileNameMap.Add(newCountry, Game.GetLeaderFileName(newCountry));
                        SetDirtyList();
                    }
                    break;
            }
        }
예제 #6
0
 /// <summary>
 ///     一括編集処理のログ出力
 /// </summary>
 /// <param name="args">一括編集のパラメータ</param>
 private static void LogBatchEdit(LeaderBatchEditArgs args)
 {
     Log.Verbose($"[Leader] Batch {GetBatchEditItemLog(args)} ({GetBatchEditModeLog(args)})");
 }
예제 #7
0
        /// <summary>
        ///     一括編集対象モードのログ文字列を取得する
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        /// <returns>ログ文字列</returns>
        private static string GetBatchEditModeLog(LeaderBatchEditArgs args)
        {
            StringBuilder sb = new StringBuilder();

            // 一括編集対象国
            if (args.CountryMode == BatchCountryMode.All)
            {
                sb.Append("ALL");
            }
            else
            {
                foreach (Country country in args.TargetCountries)
                {
                    sb.AppendFormat(" {0}", Countries.Strings[(int) country]);
                }
                if (sb.Length > 0)
                {
                    sb.Remove(0, 1);
                }
            }

            // 一括編集対象兵科
            if (!args.Army || !args.Navy || !args.Airforce)
            {
                sb.Append($"|{(args.Army ? 'o' : 'x')}{(args.Navy ? 'o' : 'x')}{(args.Airforce ? 'o' : 'x')}");
            }
            return sb.ToString();
        }