Skip to content

Commit

Permalink
Replace custom scaling logic with SDL_RenderSetLogicalSize (#199)
Browse files Browse the repository at this point in the history
  • Loading branch information
JonathanMurray committed Apr 17, 2021
1 parent c04aa69 commit 745d981
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
11 changes: 6 additions & 5 deletions pyboy/plugins/debug.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@ def __init__(self, pyboy, mb, pyboy_argv, *, scale, title, width, height, pos_x,
self.buf, self.buf0, self.buf_p = make_buffer(width, height)

self._sdlrenderer = sdl2.SDL_CreateRenderer(self._window, -1, sdl2.SDL_RENDERER_ACCELERATED)
sdl2.SDL_RenderSetLogicalSize(self._sdlrenderer, width, height)
self._sdltexturebuffer = sdl2.SDL_CreateTexture(
self._sdlrenderer, sdl2.SDL_PIXELFORMAT_RGBA8888, sdl2.SDL_TEXTUREACCESS_STATIC, width, height
)
Expand All @@ -362,8 +363,8 @@ def handle_events(self, events):
for event in events:
if event == WindowEvent._INTERNAL_MOUSE:
if event.window_id == self.window_id:
self.hover_x = event.mouse_x // self.scale
self.hover_y = event.mouse_y // self.scale
self.hover_x = event.mouse_x
self.hover_y = event.mouse_y
else:
self.hover_x = -1
self.hover_y = -1
Expand Down Expand Up @@ -455,7 +456,7 @@ def handle_events(self, events):
for event in events:
if event == WindowEvent._INTERNAL_MOUSE and event.window_id == self.window_id:
if event.mouse_button == 0:
tile_x, tile_y = event.mouse_x // self.scale // 8, event.mouse_y // self.scale // 8
tile_x, tile_y = event.mouse_x // 8, event.mouse_y // 8
tile_identifier = self.tilemap.tile_identifier(tile_x, tile_y)
logger.info(f"Tile clicked on {tile_x}, {tile_y}")
marked_tiles.add(
Expand Down Expand Up @@ -557,7 +558,7 @@ def handle_events(self, events):
for event in events:
if event == WindowEvent._INTERNAL_MOUSE and event.window_id == self.window_id:
if event.mouse_button == 0:
tile_x, tile_y = event.mouse_x // self.scale // 8, event.mouse_y // self.scale // 8
tile_x, tile_y = event.mouse_x // 8, event.mouse_y // 8
tile_identifier = tile_y * (self.width // 8) + tile_x
marked_tiles.add(
MarkedTile(tile_identifier=tile_identifier, mark_id="TILE", mark_color=MARK[mark_counter])
Expand Down Expand Up @@ -609,7 +610,7 @@ def handle_events(self, events):
for event in events:
if event == WindowEvent._INTERNAL_MOUSE and event.window_id == self.window_id:
if event.mouse_button == 0:
tile_x, tile_y = event.mouse_x // self.scale // 8, event.mouse_y // self.scale // sprite_height
tile_x, tile_y = event.mouse_x // 8, event.mouse_y // sprite_height
sprite_identifier = tile_y * (self.width // 8) + tile_x
if sprite_identifier > constants.SPRITES:
# Out of bounds
Expand Down
2 changes: 1 addition & 1 deletion pyboy/plugins/window_sdl2.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ def __init__(self, pyboy, mb, pyboy_argv):
)

self._sdlrenderer = sdl2.SDL_CreateRenderer(self._window, -1, sdl2.SDL_RENDERER_ACCELERATED)

sdl2.SDL_RenderSetLogicalSize(self._sdlrenderer, COLS, ROWS)
self._sdltexturebuffer = sdl2.SDL_CreateTexture(
self._sdlrenderer, sdl2.SDL_PIXELFORMAT_RGBA8888, sdl2.SDL_TEXTUREACCESS_STATIC, COLS, ROWS
)
Expand Down

0 comments on commit 745d981

Please sign in to comment.