Our game uses Monarch to occasionally show news messages in a popup whenever Monarch is idle (nothing on the stack, and not busy)
Separately, the player is able to take part in a seasonal event, which involves unloading the game world collection proxy (which contains the Monarch screens collection) and reloading it with different data.
If these situations coincide, Monarch starts to load the message popup as it’s being unloaded, and no progress is made. This has the consequence of blocking further UI interaction, as active_transition_count = 1, so Monarch.is_busy() returns true.
It’s not surprising that this doesn’t work and a refactor may be necessary but is there any way to cancel queued screen loads?
Logs below, notably preload() preloading done
is not printed.
log
queue() empty
queue() adding function: 0x012e963fe0
queue() next action function: 0x012e963fe0
show_in() hash: [cms_message_popup] false
notify_transition_listeners() hash: [monarch_screen_transition_in_started]
change_context() hash: [cms_message_popup]
load() hash: [cms_message_popup]
preload() preloading screen hash: [cms_message_popup]
preload() proxy
unregister() hash: [share_popup]
unregister() hash: [new_pet_popup]
unregister() hash: [quests_panel_popup]
unregister() hash: [how_to_play_panel]
unregister() hash: [confirmation_popup]
unregister() hash: [cms_message_popup]