mission_script_lua_event_api.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include <string_view>
  2. #include "mission_script_lua_event_internal.h"
  3. #include "mission_script_lua_internal.h"
  4. namespace sunrise::server::activity::mission::lua_vm::detail {
  5. /** Resolves a typed event directly from its native enum. */
  6. [[nodiscard]] std::string_view event_kind_name(host::EventKind kind) noexcept {
  7. switch (kind) {
  8. case host::EventKind::fireteamState:
  9. return "fireteamState";
  10. case host::EventKind::senseUpdate:
  11. return "sensorSenseUpdated";
  12. case host::EventKind::clientStateChanged:
  13. return "clientStateChanged";
  14. case host::EventKind::regionChanged:
  15. return "regionChanged";
  16. case host::EventKind::incidentReceived:
  17. return "incidentReceived";
  18. case host::EventKind::timerElapsed:
  19. return "timerElapsed";
  20. case host::EventKind::effectResult:
  21. return "effectResult";
  22. case host::EventKind::phaseEntered:
  23. return "phaseEntered";
  24. case host::EventKind::triggerEntered:
  25. return "triggerEntered";
  26. case host::EventKind::triggerExited:
  27. return "triggerExited";
  28. case host::EventKind::triggerState:
  29. return "triggerState";
  30. case host::EventKind::squadState:
  31. return "squadState";
  32. case host::EventKind::squadProvoked:
  33. return "squadProvoked";
  34. case host::EventKind::entitySpawned:
  35. return "entitySpawned";
  36. case host::EventKind::entityDied:
  37. return "entityDied";
  38. case host::EventKind::sceneFinished:
  39. return "sceneFinished";
  40. case host::EventKind::sceneOutput:
  41. return "sceneOutput";
  42. case host::EventKind::objectiveProgress:
  43. return "objectiveProgress";
  44. case host::EventKind::entitySlotsRequested:
  45. return "entitySlotsRequested";
  46. case host::EventKind::sessionJoined:
  47. return "sessionJoined";
  48. case host::EventKind::sessionLeft:
  49. return "sessionLeft";
  50. case host::EventKind::playerTrigger:
  51. return "playerTrigger";
  52. case host::EventKind::cinematicStarted:
  53. return "cinematicStarted";
  54. case host::EventKind::cinematicSkipRequested:
  55. return "cinematicSkipRequested";
  56. case host::EventKind::cinematicTerminated:
  57. return "cinematicTerminated";
  58. case host::EventKind::actorPathState:
  59. return "actorPathState";
  60. case host::EventKind::objectInteracted:
  61. return "objectInteracted";
  62. case host::EventKind::damageState:
  63. return "damageState";
  64. case host::EventKind::deviceState:
  65. return "deviceState";
  66. case host::EventKind::objectState:
  67. return "objectState";
  68. case host::EventKind::ghostLinkState:
  69. return "ghostLinkState";
  70. case host::EventKind::clientMessageReceived:
  71. return "clientMessageReceived";
  72. case host::EventKind::authStateCommitted:
  73. return "authStateCommitted";
  74. case host::EventKind::authStateTransportStaged:
  75. return "authStateTransportStaged";
  76. case host::EventKind::authStateCanceled:
  77. return "authStateCanceled";
  78. case host::EventKind::incidentQueued:
  79. return "incidentQueued";
  80. case host::EventKind::incidentTransportStaged:
  81. return "incidentTransportStaged";
  82. case host::EventKind::incidentCanceled:
  83. return "incidentCanceled";
  84. case host::EventKind::incidentRefused:
  85. return "incidentRefused";
  86. case host::EventKind::scriptableOverrideCommitted:
  87. return "scriptableOverrideCommitted";
  88. case host::EventKind::scriptableOverrideTransportStaged:
  89. return "scriptableOverrideTransportStaged";
  90. case host::EventKind::scriptableOverrideCanceled:
  91. return "scriptableOverrideCanceled";
  92. case host::EventKind::operatorRefused:
  93. return "operatorRefused";
  94. }
  95. return "unknown";
  96. }
  97. /**
  98. * Reads one event argument of any view.
  99. * @param index Stack index of the argument.
  100. * @return The event. The argument must be an event view.
  101. */
  102. [[nodiscard]] const host::Event& check_event(lua_State* state, int index) {
  103. const void* const handle = luaL_testudata(state, index, kEventMetatable);
  104. if (handle == nullptr) {
  105. raise_lua_error(state, "mission event expected");
  106. }
  107. return static_cast<const EventHandle*>(handle)->value;
  108. }
  109. } // namespace sunrise::server::activity::mission::lua_vm::detail