Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NVL flexibility #4857

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft

NVL flexibility #4857

wants to merge 2 commits into from

Conversation

shawna-p
Copy link
Contributor

This is the start of a PR intended to add functionality to NVL which is already included for ADV mode - namely, the ability to specify a particular screen for NVL choice menus and characters. The idea behind this is so people can style NVL in multiple ways across their game.

Included in the PR at the moment:

  • The ability to use the config.menu_arguments_callback to specify the nvl argument to menus.
  • The ability for NVLCharacter definitions to use their own NVL screen when speaking. This will also show all previous NVL dialogue on whatever screen the speaker uses, but I consider this behaviour fine. The intention is so people can use NVL to style both regular NVL dialogue and also things like messenger/phone dialogue, where they will be responsible for clearing the screen.
    • That said, I wouldn't be opposed to an approach where different NVL screens had separate dialogue lists, but this is likely out of the scope of this PR

Things I would like assistance with before this PR is merged:

  • The empty_window/nvl_show_core should be refactored to show the screen associated with the last NVL dialogue speaker. I achieved a close-to-desired result with the following code:
    (In push_nvl_list)
kwargs["properties"]["screen"] = self.screen

(In nvl_show_core)

if store.nvl_list:
    last_screen = store.nvl_list[-1][2]["properties"].get("screen", "nvl")
else:
    last_screen = "nvl"
if renpy.has_screen(last_screen):
    return __nvl_show_screen(last_screen, items=[ ])

I wasn't sure if this was the right approach however, so I've omitted it from the PR. I'd still like the ability to specify an NVL screen even without this functionality, so long as dialogue window management can prevent other NVL screens from flashing (which it currently cannot; the original NVL will always flash either at the start of a window show statement or between choice menus unless window show is active).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant