diff --git a/g.py b/g.py index 64d1041..4ad6c76 100644 --- a/g.py +++ b/g.py @@ -5,6 +5,9 @@ from __future__ import annotations import tcod.console import tcod.context import tcod.ecs +import tcod.tileset +import tcod.sdl.render +import tcod.render from game.screens import Screen from game.components import Position @@ -20,3 +23,18 @@ screens: list[Screen] = [] console: tcod.console.Console """The current main console.""" + +tileset: tcod.tileset.Tileset +"""The tileset to use""" + +sdl_window: tcod.sdl.video.Window +"""The SDL window""" + +sdl_renderer: tcod.sdl.render.Renderer +"""The SDL renderer""" + +atlas: tcod.render.SDLTilesetAtlas +"""The tileset atlas""" + +console_reder: tcod.render.SDLConsoleRender +"""The console renderer""" diff --git a/game/screens/__init__.py b/game/screens/__init__.py index c4a78b7..ee3b6e8 100644 --- a/game/screens/__init__.py +++ b/game/screens/__init__.py @@ -52,7 +52,9 @@ def main_draw() -> None: return g.console.clear() g.screens[-1].on_draw(g.console) - g.context.present(g.console) + # g.context.present(g.console) + g.sdl_renderer.copy(g.console_reder.render(g.console)) + g.sdl_renderer.present() def _apply_screen_result(result: ScreenResult) -> None: diff --git a/main.py b/main.py index e5bc6d0..3d6f18b 100755 --- a/main.py +++ b/main.py @@ -14,13 +14,23 @@ from game.screens.menu_screens import MainMenu def main() -> None: """Entry point function.""" - tileset = game.tilesetmanager.valid_tileset() + g.tileset = game.tilesetmanager.valid_tileset() #tcod.tileset.procedural_block_elements(tileset=tileset) g.screens = [MainMenu()] - g.console = tcod.console.Console(80, 35) - with tcod.context.new(console=g.console, tileset=tileset) as g.context: + g.sdl_window = tcod.sdl.video.new_window( + g.console.width * g.tileset.tile_width, + g.console.height * g.tileset.tile_height, + flags=tcod.lib.SDL_WINDOW_RESIZABLE, + ) + + g.sdl_renderer = tcod.sdl.render.new_renderer(g.sdl_window, target_textures=True) + g.atlas = tcod.render.SDLTilesetAtlas(g.sdl_renderer, g.tileset) + + g.console_reder = tcod.render.SDLConsoleRender(atlas=g.atlas) + + with tcod.context.new(console=g.console, tileset=g.tileset) as g.context: game.screens.main_loop()