diff --git a/g.py b/g.py index 14e3d78..f6cf6b4 100644 --- a/g.py +++ b/g.py @@ -37,6 +37,9 @@ sdl_window: tcod.sdl.video.Window sdl_renderer: tcod.sdl.render.Renderer """The SDL renderer""" +target_texture: tcod.sdl.render.Texture +"""The final texture that is rendered""" + atlas: tcod.render.SDLTilesetAtlas """The tileset atlas""" diff --git a/game/screens/__init__.py b/game/screens/__init__.py index 4a30da0..155882f 100644 --- a/game/screens/__init__.py +++ b/game/screens/__init__.py @@ -9,6 +9,10 @@ from tcod.console import Console from tcod.event import Event, Quit from tcod.event import wait as wait_for_event import tcod.event +import tcod.render +import tcod.sdl +import tcod.sdl.render +import tcod.sdl.video import g @@ -62,13 +66,16 @@ def main_draw() -> None: # g.sdl_renderer.copy(g.console_render.render(g.background)) # g.foreground.blit(g.background, fg_alpha=1.0, bg_alpha=0.0) bg_tex = g.console_render1.render(g.background) + bg_tex.blend_mode = 1 fg_tex = g.console_render2.render(g.foreground) fg_tex.blend_mode = 1 - with g.sdl_renderer.set_render_target(bg_tex): + with g.sdl_renderer.set_render_target(g.target_texture): + g.sdl_renderer.clear() + g.sdl_renderer.copy(bg_tex) g.sdl_renderer.copy(fg_tex) - g.sdl_renderer.copy(bg_tex) + g.sdl_renderer.copy(g.target_texture) g.sdl_renderer.present() diff --git a/game/screens/game_screens.py b/game/screens/game_screens.py index a729857..fea1bb1 100644 --- a/game/screens/game_screens.py +++ b/game/screens/game_screens.py @@ -62,7 +62,9 @@ def _draw_entity(entity: tcod.ecs.Entity, camera_pos, camera_radius_x, camera_ra map_pos = world_pos_to_map_pos(pos) if g.world[None].components[Map].fov[map_pos.y, map_pos.x]: graphic = entity.components[Graphic] - g.foreground.rgba[["ch", "fg"]][screen_pos.y + camera_radius_y, screen_pos.x + camera_radius_x] = graphic.ch, graphic.fg + r,gg,b,a = graphic.fg + fg = (r,gg,b,255) + g.foreground.rgba[["ch", "fg"]][screen_pos.y + camera_radius_y, screen_pos.x + camera_radius_x] = graphic.ch, fg @attrs.define() diff --git a/main.py b/main.py index dc67cb6..a64bff0 100755 --- a/main.py +++ b/main.py @@ -24,18 +24,14 @@ def main() -> None: g.screens = [MainMenu()] g.background = tcod.console.Console(80, 35) g.foreground = tcod.console.Console(80, 35) - - win = tcod.sdl.video.new_window( - g.background.width * g.tileset.tile_width, - g.background.height * g.tileset.tile_height, - flags=tcod.lib.SDL_WINDOW_RESIZABLE, - ) + w, h = g.background.width * g.tileset.tile_width, g.background.height * g.tileset.tile_height + win = tcod.sdl.video.new_window(w,h, flags=tcod.lib.SDL_WINDOW_RESIZABLE) g.sdl_window = win g.sdl_renderer = tcod.sdl.render.new_renderer(g.sdl_window, target_textures=True) - + g.target_texture = g.sdl_renderer.new_texture(w, h, access=tcod.sdl.render.TextureAccess.TARGET) g.atlas = tcod.render.SDLTilesetAtlas(g.sdl_renderer, g.tileset) g.console_render1 = tcod.render.SDLConsoleRender(atlas=g.atlas)