ScriptFormatterContext.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Collections.Generic;
  3. namespace FF8
  4. {
  5. public sealed class ScriptFormatterContext : IScriptFormatterContext
  6. {
  7. private Sym.GameObjects _symbols;
  8. private IReadOnlyList<String> _messages;
  9. public void GetObjectScriptNamesById(Int32 id, out String objectName, out String scriptName)
  10. {
  11. if (_symbols != null && _symbols.FindByLabel(id, out var obj, out scriptName))
  12. {
  13. objectName = obj.Name;
  14. return;
  15. }
  16. objectName = $"ObjectId_{id:D2}";
  17. scriptName = $"Script_{id:D2}";
  18. }
  19. public String GetObjectNameByIndex(Int32 index)
  20. {
  21. String objectName = String.Empty;
  22. if (_symbols != null)
  23. objectName = _symbols.GetObjectOrDefault(index, defaultValue: String.Empty).Name;
  24. if (String.IsNullOrEmpty(objectName))
  25. return $"ObjectIndex_{index:D2}";
  26. return objectName;
  27. }
  28. public String GetMessage(Int32 messageIndex)
  29. {
  30. if (messageIndex < _messages.Count)
  31. return _messages[messageIndex];
  32. return $"INVALID MESSAGE {messageIndex:D3}";
  33. }
  34. public void SetSymbols(Sym.GameObjects symbols)
  35. {
  36. _symbols = symbols;
  37. }
  38. public void SetMessages(IReadOnlyList<String> messages)
  39. {
  40. _messages = messages;
  41. }
  42. }
  43. }