The suggestion is for a new interactive/sensitive keyword to be added to SL. It would accept a python statement that would evaluate at render-time and affect the focus keyword argument to blit (and probably other things for performance).
ScreenDisplayable already has the groundwork in place for this as screens are capable of rendering non-interactively during their HIDE phase for use with transitions. The new keyword would just serve to provide more flexible access to this existing functionality.
The use case that triggered this request (viewtopic.php?t=54084) was being able to show dialogue atop an temporarily inactive screen. This could be facilitated thus:
Code: Select all
screen foodmenu():
# become non-interactive whenever the say screen is active
interactive not renpy.get_screen('say')
vbox:
textbutton 'Chicken' action NullAction()
textbutton 'Fish' action Call('fish')
textbutton 'Bobcat' action NullAction()
label fish:
'Ewww {color=077}fish{/color}? I think not!'
'Check it out, the {b}foodmenu{/b} buttons are non-interactive right now!'
return
- Distinct from SensitiveIf - A screen may have a mix of sensitive and insensitive controls already, they shouldn't visually change based on the new keyword.
- Events such as select and hover should not occur or trigger visual changes
- The non-interactive screen should not obstruct interactivity with other screens/layers
Code: Select all
screen foodmenu():
vbox:
textbutton 'Chicken' action NullAction()
textbutton 'Fish' action Call('fish')
textbutton 'Bobcat' action NullAction()
label fish:
$ renpy.get_screen('foodmenu').phase = renpy.display.screen.HIDE
'Ewww {color=077}fish{/color}? I think not!'
'Check it out, the {b}foodmenu{/b} buttons are non-interactive right now!'
$ renpy.get_screen('foodmenu').phase = renpy.display.screen.UPDATE
return