コード例 #1
0
        /// <summary>
        ///     一括編集の個別処理
        /// </summary>
        /// <param name="team">対象研究機関</param>
        /// <param name="args">一括編集のパラメータ</param>
        private static void BatchEditTeam(Team team, TeamBatchEditArgs args)
        {
            // スキル
            if (args.Items[(int)TeamBatchItemId.Skill])
            {
                if (team.Skill != args.Skill)
                {
                    team.Skill = args.Skill;
                    team.SetDirty(TeamItemId.Skill);
                    SetDirty(team.Country);
                }
            }

            // 開始年
            if (args.Items[(int)TeamBatchItemId.StartYear])
            {
                if (team.StartYear != args.StartYear)
                {
                    team.StartYear = args.StartYear;
                    team.SetDirty(TeamItemId.StartYear);
                    SetDirty(team.Country);
                }
            }

            // 終了年
            if (args.Items[(int)TeamBatchItemId.EndYear])
            {
                if (team.EndYear != args.EndYear)
                {
                    team.EndYear = args.EndYear;
                    team.SetDirty(TeamItemId.EndYear);
                    SetDirty(team.Country);
                }
            }
        }
コード例 #2
0
        /// <summary>
        ///     一括編集項目のログ文字列を取得する
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        /// <returns>ログ文字列</returns>
        private static string GetBatchEditItemLog(TeamBatchEditArgs args)
        {
            StringBuilder sb = new StringBuilder();

            if (args.Items[(int)TeamBatchItemId.Skill])
            {
                sb.AppendFormat($" skill: {args.Skill}");
            }
            if (args.Items[(int)TeamBatchItemId.StartYear])
            {
                sb.AppendFormat($" start year: {args.StartYear}");
            }
            if (args.Items[(int)TeamBatchItemId.EndYear])
            {
                sb.AppendFormat($" end year: {args.EndYear}");
            }
            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());
        }
コード例 #3
0
        /// <summary>
        ///     一括編集対象モードのログ文字列を取得する
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        /// <returns>ログ文字列</returns>
        private static string GetBatchEditModeLog(TeamBatchEditArgs 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);
                }
            }

            return(sb.ToString());
        }
コード例 #4
0
 /// <summary>
 ///     一括編集対象の研究機関リストを取得する
 /// </summary>
 /// <param name="args">一括編集のパラメータ</param>
 /// <returns>一括編集対象の研究機関リスト</returns>
 private static IEnumerable <Team> GetBatchEditTeams(TeamBatchEditArgs args)
 {
     return(args.CountryMode == BatchCountryMode.All
         ? Items.ToList()
         : Items.Where(team => args.TargetCountries.Contains(team.Country)).ToList());
 }
コード例 #5
0
        /// <summary>
        ///     一括編集
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        public static void BatchEdit(TeamBatchEditArgs args)
        {
            LogBatchEdit(args);

            IEnumerable <Team> teams = GetBatchEditTeams(args);
            Country            newCountry;

            switch (args.ActionMode)
            {
            case BatchActionMode.Modify:
                // 研究機関を一括編集する
                foreach (Team team in teams)
                {
                    BatchEditTeam(team, args);
                }
                break;

            case BatchActionMode.Copy:
                // 研究機関をコピーする
                newCountry = args.Destination;
                int id = args.Id;
                foreach (Team team in teams)
                {
                    id = GetNewId(id);
                    Team newTeam = new Team(team)
                    {
                        Country = newCountry,
                        Id      = id
                    };
                    newTeam.SetDirtyAll();
                    Items.Add(newTeam);
                }

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

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

            case BatchActionMode.Move:
                // 研究機関を移動する
                newCountry = args.Destination;
                foreach (Team team in teams)
                {
                    // 移動前の国の編集済みフラグを設定する
                    SetDirty(team.Country);

                    team.Country = newCountry;
                    team.SetDirty(TeamItemId.Country);
                }

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

                // 移動先の国がファイル一覧に存在しなければ追加する
                if (!FileNameMap.ContainsKey(newCountry))
                {
                    FileNameMap.Add(newCountry, Game.GetTeamFileName(newCountry));
                    SetDirtyList();
                }
                break;
            }
        }
コード例 #6
0
 /// <summary>
 ///     一括編集処理のログ出力
 /// </summary>
 /// <param name="args">一括編集のパラメータ</param>
 private static void LogBatchEdit(TeamBatchEditArgs args)
 {
     Log.Verbose($"[Team] Batch {GetBatchEditItemLog(args)} ({GetBatchEditModeLog(args)})");
 }
コード例 #7
0
ファイル: TeamBatchDialog.cs プロジェクト: nkodama/HoI2Editor
        /// <summary>
        ///     コンストラクタ
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        public TeamBatchDialog(TeamBatchEditArgs args)
        {
            InitializeComponent();

            _args = args;
        }