Field.FsDataProvider.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.IO;
  3. namespace FF8
  4. {
  5. public static partial class Field
  6. {
  7. public sealed class FsDataProvider : IDataProvider
  8. {
  9. private readonly String _fieldPath;
  10. private readonly String _fieldDirectory;
  11. public FsDataProvider(String fieldPath)
  12. {
  13. if (!File.Exists(fieldPath))
  14. throw new FileNotFoundException(fieldPath);
  15. _fieldPath = Path.ChangeExtension(fieldPath, extension: null);
  16. _fieldDirectory = Path.GetDirectoryName(fieldPath);
  17. }
  18. public Byte[] FindPart(Part part)
  19. {
  20. String filePath = GetFilePath(part);
  21. if (File.Exists(filePath))
  22. return File.ReadAllBytes(filePath);
  23. return null;
  24. }
  25. private String GetFilePath(Part part)
  26. {
  27. switch (part)
  28. {
  29. case Part.One: return Path.Combine(_fieldDirectory, "chara.one");
  30. case Part.Ca: return _fieldPath + ".ca";
  31. case Part.Id: return _fieldPath + ".id";
  32. case Part.Inf: return _fieldPath + ".inf";
  33. case Part.Jsm: return _fieldPath + ".jsm";
  34. case Part.Map: return _fieldPath + ".map";
  35. case Part.Mim: return _fieldPath + ".mim";
  36. case Part.Mrt: return _fieldPath + ".mrt";
  37. case Part.Msd: return _fieldPath + ".msd";
  38. case Part.Pcb: return _fieldPath + ".pcb";
  39. case Part.Pmd: return _fieldPath + ".pmd";
  40. case Part.Pmp: return _fieldPath + ".pmp";
  41. case Part.Pvp: return _fieldPath + ".pvp";
  42. case Part.Rat: return _fieldPath + ".rat";
  43. case Part.Sfx: return _fieldPath + ".sfx";
  44. case Part.Sym: return _fieldPath + ".sym";
  45. case Part.Tdw: return _fieldPath + ".tdw";
  46. default: throw new NotSupportedException(part.ToString());
  47. }
  48. }
  49. }
  50. }
  51. }