Jsm.GameScript.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. namespace FF8
  3. {
  4. public static partial class Jsm
  5. {
  6. public sealed class GameScript
  7. {
  8. public Int32 ScriptId { get; }
  9. public Jsm.ExecutableSegment Segment { get; }
  10. public GameScript(Int32 scriptId, Jsm.ExecutableSegment segment)
  11. {
  12. ScriptId = scriptId;
  13. Segment = segment;
  14. }
  15. public void FormatMethod(ScriptWriter sw, IScriptFormatterContext formatterContext, IServices executionContext)
  16. {
  17. String methodName = GetMethodName(formatterContext);
  18. sw.AppendLine($"public void {methodName}()");
  19. {
  20. sw.AppendLine("{");
  21. sw.Indent++;
  22. FormatMethodBody(sw, formatterContext, executionContext);
  23. sw.Indent--;
  24. sw.AppendLine("}");
  25. }
  26. }
  27. public void FormatMethodBody(ScriptWriter sw, IScriptFormatterContext formatterContext, IServices executionContext)
  28. {
  29. Segment.Format(sw, formatterContext, executionContext);
  30. }
  31. private String GetMethodName(IScriptFormatterContext formatterContext)
  32. {
  33. formatterContext.GetObjectScriptNamesById(ScriptId, out _, out String methodName);
  34. if (Char.IsLower(methodName[0]))
  35. methodName = Char.ToUpperInvariant(methodName[0]) + methodName.Substring(1);
  36. return methodName;
  37. }
  38. }
  39. }
  40. }