Screens API
Screens API Reference
This page documents the built-in screen classes under src/code/screens/.
Module Location
from screens.TitleScreen import TitleScreenfrom screens.SettingsScreen import SettingsScreen, SETTINGSfrom screens.WorldSelectScreen import WorldSelectScreenfrom screens.LevelSelectScreen import LevelSelectScreenfrom screens.CharacterScreen import CharacterScreenfrom screens.GameScreen import GameScreenfrom screens.FinishScreen import FinishScreenOverview
Each screen:
- Inherits from
Screen - Starts its own loop in
__init__ - Transitions by setting
self.running = Falseand instantiating the next screen
TitleScreen
Purpose: Main menu for Worlds, Characters, Settings, and Exit.
TitleScreen(screen, "Title Screen")Key Methods:
onBtnOpenWorldsScreen()onBtnOpenCharacterScreen()onBtnOpenSettingsScreen()
SettingsScreen
Purpose: Toggle debug mode and save settings.
SettingsScreen(screen, "Settings")Key Behavior:
- Uses global
SETTINGSfromdata.storage - Saves changes via
save_settings(SETTINGS)
CharacterScreen
Purpose: Select a playable character from CHARACTER_REGISTRY.
CharacterScreen(screen, "Characters")Key Behavior:
- Shows animated previews
- Saves selection to
SETTINGS["character"]
WorldSelectScreen
Purpose: List available worlds from data/worlds/.
WorldSelectScreen(screen, "Worlds")Key Behavior:
- Loads worlds via
load_worlds() - Sets
SETTINGS["selected_world"]
LevelSelectScreen
Purpose: List levels for the selected world (paginated).
LevelSelectScreen(screen, "Levels", world_id)Parameters:
| Name | Type | Description |
|---|---|---|
world_id | str | ID of the world to browse |
Key Behavior:
- Saves selected level in
SETTINGS - Launches
GameScreenwithlevel_path
GameScreen
Purpose: Main gameplay loop.
GameScreen(screen, "Game", level_path=None)Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
level_path | str | None | Optional path to a level JSON |
Key Behavior:
- Builds platforms from level data
- Handles checkpoints, pages, and completion
- Uses
Spielerfor physics andCharacterfor rendering - Default page size is 60x34 cells at 32px grid unless overridden by level JSON
- Uses neighboring-page collision proxies near boundaries to prevent wall phasing
- Caches adjacent collision data per page to reduce per-frame overhead
FinishScreen
Purpose: Shows completion state and returns to level list.
FinishScreen(screen, "Finished")Key Behavior:
- Returns to
LevelSelectScreenforSETTINGS["selected_world"]
Usage Example
from screens.TitleScreen import TitleScreen
# In main.pyTitleScreen(screen, "Title Screen")