Are there established best practices for designing and coding complex interactive UIs such as you might find on strategy games?
I'm particularly concerned with situations where:
- There are many interactable elements (e.g., buttons) in different areas of the screen, which might pop up menus and sub-menus that should retain focus (or at least prevent interactions with underlying UI elements) until they're dismissed
- You might be in different interaction modes (e.g., placing an improvement, viewing statistics, etc.) that might show or hide certain interactable elements
My primary concern is with maintainability. I don't want jumbles of conditional code for checking global UI state scattered around the codebase where I'm handling user input in different nodes. I'd also like to be able to extend/modify the UI as simply as possible.