ScriptFormatterContext.cs 1.5 KB

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