After some experimentation, I figured out why things like the area move imagebuttons (and in previous builds, the original interaction imagebuttons) would disappear during dialogues and kinda slapping myself for not catching why earlier. For each explorable area, I have a screen holding its interaction points. However, I was using 'call' instead of 'show' for those screens so the area screen would disappear when a new dialogue/label occurred, then reappear when called again at the end of the label.
Unfortunately, each interaction point need at least two screens to make the cursors work so I can't nest them inside the area screen and hide them that way. However, I did figure out a get around that beats constantly typing out show/hide screens. First, while I still need the cursor screens, I moved the mousearea codes needed to make the cursors pop up under the area code:
Code: Select all
####Houghton Front Screens#####
screen houghton_front:
on "hide" action Hide("displayTextScreen")
if iShards not in inventory:
add "gisellemaskshards-map.png" xpos 100 ypos 496 xanchor 0.5 yanchor 0.5
#Area Move
imagebutton:
xpos 1020
ypos 446
xanchor 0.5
yanchor 0.5
#area (730, 0, 63, 599)
idle "arrowright.png"
hover "arrowright.png"
action Jump("building_side")
#hovered Show("displayTextScreen", displayText = "Side of Building.")
unhovered Hide("displayTextScreen")
####Mask Shards Cursor
mousearea:
area (10, 460, 150, 90)
hovered Show("houghton_cursor_maskshards", transition=dissolve)
unhovered [Hide("houghton_cursor_maskshards", transition=dissolve),Hide("houghton_cursor_hover_maskshards", transition=dissolve)]
Second, I used "renpy.hide_screen" to create a mass hide action for the cursor screens. I added it to the actions that occur when you start a new interaction with the wheel and it creates a loop for hiding/showing the cursor screens. The mouse areas get called with the area screen, the cursors get called by the mouse areas when hovered, the cursors get hidden as an action while the mouseareas hide with the new interaction, and then the mouseareas (and the cursors by extension) show when the area screen is called again.
Code: Select all
init -1 python:
#####Houghton Exterior Front#####
def hide_houghtonexteriorfront_screens():
renpy.hide_screen("houghton_cursor_maskshards")
renpy.hide_screen("houghton_cursor_hover_maskshards")
renpy.hide_screen("houghton_cursor_hover_sign")
renpy.hide_screen("houghton_cursor_storesign")
renpy.hide_screen("houghton_cursor_hover_storesign")
renpy.hide_screen("houghton_cursor_door")
renpy.hide_screen("houghton_cursor_hover_door")
[...]
screen houghton_cursor_maskshards:
if iShards not in inventory:
imagebutton auto "cursor/base_circle_%s.png" action NullAction() hovered [Show("houghton_cursor_hover_maskshards"), Hide("houghton_cursor_maskshards")] xpos 100 ypos 496 at cursor_hide
screen houghton_cursor_hover_maskshards:
frame at cursor_wheel_dissolve:
xpadding 0
ypadding 0
background None
xysize (230,130)
xpos 100 ypos 496
imagebutton idle "cursor/background_mask.png" hover "cursor/background_mask.png" action NullAction() unhovered [Hide('houghton_cursor_hover_maskshards'), Show("houghton_cursor_maskshards")]
grid 2 2 xalign 0.5 yalign 0.5:
imagebutton auto "cursor/topleft_empty_%s.png" action NullAction()
imagebutton auto "cursor/topright_interact_%s.png" action [hide_houghtonexteriorfront_screens, Jump('click_shards')]
imagebutton auto "cursor/bottomleft_empty_%s.png" action NullAction()
imagebutton auto "cursor/bottomright_empty_%s.png" action NullAction()
It's not quite a perfect fix but it's a more manageable get-around, for the moment.