mission_ember.lua 1.2 KB

1234567891011121314151617181920212223242526
  1. -- Development controller for the opening landing. The remaining mission is not wired yet.
  2. local missions = require("missions")
  3. local mission = require(assert(missions.MISSION_EMBER, "mission_ember SDK module is absent"))
  4. local landing = require("mission_ember.landing")(mission)
  5. local opening = require("mission_ember.opening")(mission, landing)
  6. return {
  7. initial_state = opening.initial_state,
  8. on_event_cinematic_terminated = opening.terminated,
  9. on_event_client_state_changed = function(context, state, event)
  10. opening.client_state(context, state, event)
  11. local region = event.held_region_index or event.current_region_index
  12. -- A settle-only delta omits region fields; it does not mean that the player left.
  13. if region ~= nil then context:set_variable("ember.region", region) end
  14. region = state:variable("ember.region")
  15. if region == landing.region and opening.playable(state) then
  16. landing.enter(context, state)
  17. landing.client_state(context, state, event)
  18. end
  19. end,
  20. on_event_squad_state = function(context, state, event)
  21. if state:variable("ember.region") == landing.region then
  22. landing.on_squad_state(context, state, event)
  23. end
  24. end,
  25. }