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