Ejemplo n.º 1
0
        /// <summary>
        ///     研究機関リストファイルを保存する (DH)
        /// </summary>
        private static void SaveList()
        {
            // データベースフォルダが存在しなければ作成する
            string folderName = Game.GetWriteFileName(Game.DatabasePathName);

            if (!Directory.Exists(folderName))
            {
                Directory.CreateDirectory(folderName);
            }

            string fileName = Game.GetWriteFileName(Game.DhTeamListPathName);

            Log.Info("[Team] Save: {0}", Path.GetFileName(fileName));

            // 登録された研究機関ファイル名を順に書き込む
            using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.GetEncoding(Game.CodePage)))
            {
                foreach (string name in FileNameMap.Select(pair => pair.Value))
                {
                    writer.WriteLine(name);
                }
            }

            // 編集済みフラグを解除する
            ResetDirtyList();
        }
Ejemplo n.º 2
0
        public HandlerResponse Process(string outputPath)
        {
            var di = new DirectoryInfo(outputPath);

            if (!di.Exists)
            {
                throw new DirectoryNotFoundException("Invalid output path!");
            }
            var files           = di.GetFiles();
            var manifestPresent = files.Any(f => f.Extension == ".cltw");
            var infoPresent     = files.Any(f => f.Name == "app.info");

            if (!(manifestPresent && infoPresent))
            {
                return(new HandlerResponse(this, false, "This handler requires both a deployment manifest (cltw file) and an info file (app.info)! Try adding AppInfoHandler to your OutputHandlers and ensure you have set an InformationSource to generate a manifest."));
            }
            Manifest        = ManifestManager.ReadFromFile(GetManifest(outputPath).FullName);
            AppInfo         = AppInfoManager.ReadFromFile(GetInfoFile(outputPath).FullName);
            Engine.Manifest = Manifest;
            Engine.AppInfo  = AppInfo;
            var contentDirectory = Engine.CreateContentDirectory(new DirectoryInfo(outputPath));

            contentDirectory.Copy(outputPath, copySubDirs: true);
            if (FileNameMap.Any())
            {
                var outFiles = new DirectoryInfo(outputPath).GetFiles();
                foreach (var file in FileNameMap)
                {
                    var target = outFiles.FirstOrDefault(f => f.Name == file.Key);
                    target?.Rename(file.Value);
                }
            }
            Engine.Dispose();
            return(new HandlerResponse(this, true));
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     研究機関ファイル群を読み込む
        /// </summary>
        private static void LoadFiles()
        {
            Items.Clear();
            IdSet.Clear();
            FileNameMap.Clear();

            switch (Game.Type)
            {
            case GameType.HeartsOfIron2:
            case GameType.ArsenalOfDemocracy:
                if (!LoadHoI2())
                {
                    return;
                }
                break;

            case GameType.DarkestHour:
                if (!LoadDh())
                {
                    return;
                }
                break;
            }

            // 編集済みフラグを解除する
            _dirtyFlag = false;

            // 読み込み済みフラグを設定する
            _loaded = true;
        }
Ejemplo n.º 4
0
        /// <summary>
        ///     研究機関ファイルを読み込む
        /// </summary>
        /// <param name="fileName">対象ファイル名</param>
        private static void LoadFile(string fileName)
        {
            Log.Verbose("[Team] Load: {0}", Path.GetFileName(fileName));

            using (CsvLexer lexer = new CsvLexer(fileName))
            {
                // 空ファイルを読み飛ばす
                if (lexer.EndOfStream)
                {
                    return;
                }

                // 国タグ読み込み
                string[] tokens = lexer.GetTokens();
                if (tokens == null || tokens.Length == 0 || string.IsNullOrEmpty(tokens[0]))
                {
                    return;
                }
                // サポート外の国タグの場合は何もしない
                if (!Countries.StringMap.ContainsKey(tokens[0].ToUpper()))
                {
                    return;
                }
                Country country = Countries.StringMap[tokens[0].ToUpper()];

                // ヘッダ行のみのファイルを読み飛ばす
                if (lexer.EndOfStream)
                {
                    return;
                }

                while (!lexer.EndOfStream)
                {
                    Team team = ParseLine(lexer, country);

                    // 空行を読み飛ばす
                    if (team == null)
                    {
                        continue;
                    }

                    Items.Add(team);
                }

                ResetDirty(country);

                if (country != Country.None && !FileNameMap.ContainsKey(country))
                {
                    FileNameMap.Add(country, lexer.FileName);
                }
            }
        }
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
 public static void setFileNameMap(FileNameMap arg0)
 {
     Static.CallMethod(typeof(URLConnection), "setFileNameMap", "(Ljava/net/FileNameMap;)V", arg0);
 }
Ejemplo n.º 7
0
 public static void setFileNameMap(FileNameMap prm1)
 {
 }