Пример #1
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;
            }
        }