It's a very minor issue but may be important for some carts. In the web version of PICO-8 using menuitems in the pause menu causes
_draw to be called.
Version: 0.2.4c4 web applet
How to replicate
Make a cart that has an
_update function defined that will cause a visible change on screen. Define a menuitem with a callback that returns
true so that the menu stays open after the menu item is used. Run the cart, pause it and use the menuitem.
The callback runs and the state of the program is only changed in the way the callback changed it. (This is waht happens in the full desktop app version 0.2.4)
A frame progresses before the callback is resolved. The calling order seems to be:
Example in a real cart:
This also shows how the frame updates before the callback: changing the SNAKE setting doesn't affect the incorrect frame update and only takes effect the next frame.
I don't see any reason for such reaction. This is clearly undesired behavior! The user has paused the cart and takes their time to change the settings. That is the worst time to call
_update! If the callback is supposed to update the program state it can just do so in its body, and if it needs to update the screen it can just call
flip! And if the callback is literally supposed to just call
_draw it can easily do so with code, in a manner controlled by the programmer. Calling the frame callbacks BEFORE the menuitem callback is the worst way to achieve this behavior and I can't see a clean way to circumvent it.
Wow, that was a rant!
[Please log in to post a comment]