sdl renderer working as before

This commit is contained in:
Lukas Nöllemeyer 2024-08-19 16:33:59 +02:00
parent ef3f64bfa2
commit 6cfa795463
5 changed files with 10 additions and 12 deletions

View file

@ -55,11 +55,11 @@ def main_draw() -> None:
g.background.clear()
g.foreground.clear()
g.screens[-1].on_draw(g.background)
# g.context.present(g.console)
# g.context.present(g.background)
g.sdl_renderer.copy(g.console_render.render(g.background))
# g.sdl_renderer.copy(g.console_render.render(g.foreground))
g.sdl_renderer.copy(g.console_render.render(g.foreground))
g.foreground.blit(g.background, fg_alpha=1.0, bg_alpha=0.0)
g.sdl_renderer.copy(g.console_render.render(g.background))
g.sdl_renderer.present()
@ -81,6 +81,12 @@ def _apply_screen_result(result: ScreenResult) -> None:
case _:
raise TypeError(result)
def convert_event(event: tcod.event.Event):
match event:
case tcod.event.MouseState(position=pos):
width, height = g.tileset.tile_width, g.tileset.tile_height
event.position = (pos[0]//width, pos[1]//height)
return event
def main_loop() -> None:
"""Run the active screen forever."""
@ -90,7 +96,7 @@ def main_loop() -> None:
match event:
case Quit():
raise SystemExit()
tile_event = g.context.convert_event(event)
tile_event = convert_event(event)
if g.screens:
_apply_screen_result(g.screens[-1].on_event(tile_event))

View file

@ -76,8 +76,6 @@ class MainScreen(Screen):
match event:
case tcod.event.KeyDown(sym=sym) if sym in ACTION_KEYS:
_handle_action(player)
case tcod.event.Quit():
raise SystemExit()
case tcod.event.KeyDown(sym=sym) if sym in DIRECTION_KEYS:
dir = DIRECTION_KEYS[sym]
return _handle_movement(player, map, dir)

View file

@ -60,8 +60,6 @@ class ListMenu(Screen):
def on_event(self, event: tcod.event.Event) -> ScreenResult:
"""Handle events for menus."""
match event:
case tcod.event.Quit():
raise SystemExit()
case tcod.event.KeyDown(sym=sym) if sym in DIRECTION_KEYS:
dx, dy = DIRECTION_KEYS[sym]
if dx != 0 or dy == 0: