コード例 #1
0
 private void AddUncategorizedFilesWithExtension(PAKFileSystem fieldPak, string ext)
 {
     foreach (var file in UncategorizedFiles.Where(x => x.Key.EndsWith(ext)))
     {
         fieldPak.AddFile(file.Key, file.Value, false, ConflictPolicy.Replace);
     }
 }
コード例 #2
0
        public void Save(string directoryPath, int major, int minor)
        {
            Directory.CreateDirectory(directoryPath);

            using (var fieldPak = new PAKFileSystem(FormatVersion.Version1))
            {
                TryAddFile(fieldPak, DefaultCamera, $"data/f{major:D3}_{minor:D3}.CMR", o => o.Save());

                // FBN
                for (var i = 0; i < Layers.Count; i++)
                {
                    TryAddFile(fieldPak, Layers[i].ObjectPlacement, $"data/f{major:D3}_{minor:D3}_{i:D2}.FBN", o => o.Save());
                }

                // FPA
                //TryAddFile( fieldPak, Fpa, $"data/f{major:D3}_{minor:D3}.FPA", o => o.Save() );
                AddUncategorizedFilesWithExtension(fieldPak, "FPA");

                // MDT
                //TryAddFile( fieldPak, Mdt, $"data/f{major:D3}_{minor:D3}.MDT", o => o.Save() );
                AddUncategorizedFilesWithExtension(fieldPak, "MDT");

                // PCD
                //for ( int i = 1; i < 9; i++ )
                //    TryAddFile( fieldPak, Pcds[ i ], $"data/f{major:D3}_{minor:D3}_{i:D3}.PCD", o => o.Save() );
                AddUncategorizedFilesWithExtension(fieldPak, "PCD");

                for (int i = 0; i < Layers.Count; i++)
                {
                    TryAddFile(fieldPak, Layers[i].HitTable, $"hit/f{major:D3}_{minor:D3}_{i:D2}.HTB", o => o.Save());
                }

                for (int i = 0; i < Layers.Count; i++)
                {
                    TryAddFile(fieldPak, Layers[i].HitScript, $"hit/fhit_{major:D3}_{minor:D3}_{i:D2}.bf", o => o.ToStream());
                }

                TryAddFile(fieldPak, InitScript, $"init/fini_{major:D3}_{minor:D3}.bf", o => o.ToStream());

                // CLT
                AddUncategorizedFilesWithExtension(fieldPak, "CLT");

                // SHT
                //TryAddFile( fieldPak, Sht, $"sht/f{major:D3}_{minor:D3}.SHT", o => o.Save() );
                AddUncategorizedFilesWithExtension(fieldPak, "SHT");

                // TBL
                //TryAddFile( fieldPak, Tbl, $"fext{major:D3}_{minor:D3}.tbl", o => o.Save() );
                AddUncategorizedFilesWithExtension(fieldPak, "tbl");

                // AWB
                AddUncategorizedFilesWithExtension(fieldPak, "AWB");

                // Remaining uncategorized files
                foreach (var file in UncategorizedFiles.Where(x => !fieldPak.Exists(x.Key)))
                {
                    fieldPak.AddFile(file.Key, file.Value, false, ConflictPolicy.Replace);
                }

                fieldPak.Save(Path.Combine(directoryPath, $"f{major:D3}_{minor:D3}.pac"));
            }

            using (var fieldNpcPak = new PAKFileSystem(FormatVersion.Version1))
            {
                // fnpc BF
                for (var i = 0; i < Layers.Count; i++)
                {
                    TryAddFile(fieldNpcPak, Layers[i].NpcScript, $"npc/fnpc{major:D3}_{minor:D3}_{i:D2}.bf", o => o.ToStream());
                }

                // FNT
                //for ( var i = 0; i < Layers.Count; i++ )
                //    TryAddFile( fieldNpcPak, Layers[i].Fnt, $"npc/fnt{major:D3}_{minor:D3}_{i:D2}.FNT", o => o.Save() );
                AddUncategorizedFilesWithExtension(fieldNpcPak, "FNT");

                // FPC
                //for ( var i = 0; i < Layers.Count; i++ )
                //    TryAddFile( fieldNpcPak, Layers[i].Fpc, $"npc/fpc{major:D3}_{minor:D3}_{i:D2}.FPC", o => o.Save() );
                AddUncategorizedFilesWithExtension(fieldNpcPak, "FPC");

                foreach (var file in UncategorizedNpcFiles.Where(x => !fieldNpcPak.Exists(x.Key)))
                {
                    fieldNpcPak.AddFile(file.Key, file.Value, false, ConflictPolicy.Replace);
                }

                fieldNpcPak.Save(Path.Combine(directoryPath, $"fnpc{major:D3}_{minor:D3}.pac"));
            }
        }