Ejemplo n.º 1
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();
        }
Ejemplo n.º 2
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();
 }
Ejemplo n.º 3
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();
 }
Ejemplo n.º 4
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);
                }
            }
        }
Ejemplo n.º 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;
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 ///     一括編集処理のログ出力
 /// </summary>
 /// <param name="args">一括編集のパラメータ</param>
 private static void LogBatchEdit(TeamBatchEditArgs args)
 {
     Log.Verbose($"[Team] Batch {GetBatchEditItemLog(args)} ({GetBatchEditModeLog(args)})");
 }
Ejemplo n.º 7
0
        /// <summary>
        ///     コンストラクタ
        /// </summary>
        /// <param name="args">一括編集のパラメータ</param>
        public TeamBatchDialog(TeamBatchEditArgs args)
        {
            InitializeComponent();

            _args = args;
        }