Option to Animate or Loop while Say, Ask, or Menu is on the screen

  1. I am building a text based game that heavily uses Say, Ask, and Menu. I have structured the UI in a way where these are out of the way of the characters and they can continue to move as players read and make choices. I'd love the option to keep these animations going while Say, Ask, or Menu is on the screen.

  2. It would allow more flexibility in how I can present my games, including a higher production value by having animations more present.

  3. Here is an example of the screen layout I have in mind. Being able to have sprites move while players read and make choices would be great.

Image 1-21-22 at 1.04 PM

6 Likes

hi while lookin at dev for music to json, dialogs etc i came across this:
Pulp Dialog System - Playdate Developer Forum
it looks like the opposite of what you have, where player can move with dialog! Check it out. PS check your "im not sure how cool it is" it looks like a J for "it" be well.

1 Like

Im not sure if this would help much. But i wanted some stuff going on in the background animated while I used an inventory map. so I made it all go to a separate room that "pretended" or acted like the text screen. that might help. but seems like a lot of work to do in a text based adventure.

2 Likes

This would be wonderful

If this was added, which I hope it is, I would like it to be optional via config.

config.menupause = 1 // by default menu, ask , say then will pause player and tile animations in the room

3 Likes

Can you elaborate on this? What went to a separate room, and which room did the player stay in, the current room or the new, "fake" room?

I've been trying to implement a "duplicate other room" feature or "draw contents of other room", but I cant get the player's draw function to reference the coordinates in another room, so I'm very curious what you figured out.

please forgive me if this doesn't help or makes no sense, I'm very new to coding. On my player character script I have the code on the bottom added. On the "B" button press it hides my character, goes to another "room" which displays information for the menu. I think this might help, if not, sorries.

on cancel do

goto 6,6 in "Menu"

goto prevx,prevy in prevroom
prevx = event.x
prevy = event.y
prevroom = event.room

end

on draw do
if event.room=="Menu" then
hide
label "Money: {money}" at 6,5
label "Fish: {Fish}" at 6,6
label "Bugs: {Bug}" at 6,7
label "Keys: {Key}" at 6,8

That's a good solution.

It seems like the issue isn't animations perse, but only certain events not being called (like "loop")

I just confirmed that implementing your animation timers in the "draw" event fixes this. Your solution is a better fit for most situations, but you could in theory do anything you need to do within the draw event and it would continue.

After testing, I think this is the answer and non-hacky solution:

Update: I found an event cleaner, less performance-affecting method.
in "draw", put:

if inmenu=1 then
tell event.game to
call "loop"
end
end

Then, whenever inmenu=1, loop will run as normal. You have to manually set inmenu to 1 before an ask event, then back to 0 (for performance reasons) afterwards.
I made a terribly ugly demo showing animation continuing during the ask event by including an "inmenu" variable that shifts animation from the "loop" event to the "draw" event that proved this works. I will post it later when I figure out...how to do that.

1 Like