SETPC.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. namespace OpenVIII.Fields.Scripts.Instructions
  2. {
  3. internal sealed class SETPC : JsmInstruction
  4. {
  5. #region Fields
  6. private readonly Characters _characterId;
  7. #endregion Fields
  8. #region Constructors
  9. public SETPC(Characters characterId) => _characterId = characterId;
  10. public SETPC(int parameter, IStack<IJsmExpression> stack)
  11. : this(
  12. characterId: (Characters)((Jsm.Expression.PSHN_L)stack.Pop()).Value)
  13. {
  14. }
  15. #endregion Constructors
  16. #region Methods
  17. public override void Format(ScriptWriter sw, IScriptFormatterContext formatterContext, IServices services) => sw.Format(formatterContext, services)
  18. .Method(nameof(FieldObject.BindCharacter))
  19. .Enum(_characterId)
  20. .Comment(nameof(SETPC));
  21. public override IAwaitable TestExecute(IServices services)
  22. {
  23. var currentObject = ServiceId.Field[services].Engine.CurrentObject;
  24. currentObject.BindCharacter(_characterId);
  25. return DummyAwaitable.Instance;
  26. }
  27. public override string ToString() => $"{nameof(SETPC)}({nameof(_characterId)}: {_characterId})";
  28. #endregion Methods
  29. }
  30. }