Skip to content

Commit

Permalink
Merge pull request #180 from JaskRendix/py39
Browse files Browse the repository at this point in the history
py39 + typing (List > list, etc.) + some typehints
  • Loading branch information
bitcraft authored Jan 17, 2024
2 parents 145a52e + c1e0075 commit da50ec0
Show file tree
Hide file tree
Showing 16 changed files with 121 additions and 128 deletions.
5 changes: 1 addition & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@ jobs:
runs-on: [ubuntu-latest]
strategy:
matrix:
python-version:
- 3.7
- 3.8
- 3.9
python-version: ['3.9', '3.10', '3.11', '3.12']
dependencies:
- pygame pyglet
- pygame
Expand Down
20 changes: 10 additions & 10 deletions apps/benchmark.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""
This is tested on pygame 1.9 and python 2.7 and 3.3+.
Leif Theden "bitcraft", 2012-2022
Leif Theden "bitcraft", 2012-2024
Rendering demo for the TMXLoader.
Expand Down Expand Up @@ -41,7 +41,7 @@ class TiledRenderer(object):
Super simple way to render a tiled map
"""

def __init__(self, filename):
def __init__(self, filename) -> None:
tm = load_pygame(filename)

# self.size will be the pixel size of the map
Expand All @@ -55,7 +55,7 @@ def __init__(self, filename):
print(i)
continue

def render_map(self, surface):
def render_map(self, surface) -> None:
"""Render our map to a pygame surface
Feel free to use this as a starting point for your pygame app.
Expand Down Expand Up @@ -84,7 +84,7 @@ def render_map(self, surface):
elif isinstance(layer, TiledImageLayer):
self.render_image_layer(surface, layer)

def render_tile_layer(self, surface, layer):
def render_tile_layer(self, surface, layer) -> None:
"""Render all TiledTiles in this layer"""
# deref these heavily used references for speed
tw = self.tmx_data.tilewidth
Expand All @@ -95,7 +95,7 @@ def render_tile_layer(self, surface, layer):
for x, y, image in layer.tiles():
surface_blit(image, (x * tw, y * th))

def render_object_layer(self, surface, layer):
def render_object_layer(self, surface, layer) -> None:
"""Render all TiledObjects contained in this layer"""
# deref these heavily used references for speed
draw_rect = pygame.draw.rect
Expand Down Expand Up @@ -125,26 +125,26 @@ def render_object_layer(self, surface, layer):
else:
draw_rect(surface, rect_color, (obj.x, obj.y, obj.width, obj.height), 3)

def render_image_layer(self, surface, layer):
def render_image_layer(self, surface, layer) -> None:
if layer.image:
surface.blit(layer.image, (0, 0))


class SimpleTest(object):
"""Basic app to display a rendered Tiled map"""

def __init__(self, filename):
def __init__(self, filename) -> None:
self.renderer = None
self.running = False
self.dirty = False
self.exit_status = 0
self.load_map(filename)

def load_map(self, filename):
def load_map(self, filename) -> None:
"""Create a renderer, load data, and print some debug info"""
self.renderer = TiledRenderer(filename)

def draw(self, surface):
def draw(self, surface) -> None:
"""Draw our map to some surface (probably the display)"""
# first we make a temporary surface that will accommodate the entire
# size of the map.
Expand All @@ -164,7 +164,7 @@ def draw(self, surface):
i = f.render("press any key for next map or ESC to quit", 1, (180, 180, 0))
surface.blit(i, (0, 0))

def handle_input(self):
def handle_input(self) -> None:
try:
event = pygame.event.wait()

Expand Down
20 changes: 10 additions & 10 deletions apps/pygame_demo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""
This is tested on pygame 1.9 and python 2.7 and 3.3+.
Leif Theden "bitcraft", 2012-2023
Leif Theden "bitcraft", 2012-2024
Rendering demo for the TMXLoader.
Expand Down Expand Up @@ -39,15 +39,15 @@ class TiledRenderer(object):
Super simple way to render a tiled map
"""

def __init__(self, filename):
def __init__(self, filename) -> None:
tm = load_pygame(filename)

# self.size will be the pixel size of the map
# this value is used later to render the entire map to a pygame surface
self.pixel_size = tm.width * tm.tilewidth, tm.height * tm.tileheight
self.tmx_data = tm

def render_map(self, surface):
def render_map(self, surface) -> None:
"""Render our map to a pygame surface
Feel free to use this as a starting point for your pygame app.
Expand Down Expand Up @@ -76,7 +76,7 @@ def render_map(self, surface):
elif isinstance(layer, TiledImageLayer):
self.render_image_layer(surface, layer)

def render_tile_layer(self, surface, layer):
def render_tile_layer(self, surface, layer) -> None:
"""Render all TiledTiles in this layer"""
# deref these heavily used references for speed
tw = self.tmx_data.tilewidth
Expand All @@ -96,7 +96,7 @@ def render_tile_layer(self, surface, layer):
sy = x * th2 + y * th2
surface_blit(image, (sx + ox, sy))

def render_object_layer(self, surface, layer):
def render_object_layer(self, surface, layer) -> None:
"""Render all TiledObjects contained in this layer"""
# deref these heavily used references for speed
draw_lines = pygame.draw.lines
Expand All @@ -122,22 +122,22 @@ def render_object_layer(self, surface, layer):
surface, rect_color, obj.closed, obj.apply_transformations(), 3
)

def render_image_layer(self, surface, layer):
def render_image_layer(self, surface, layer) -> None:
if layer.image:
surface.blit(layer.image, (0, 0))


class SimpleTest(object):
"""Basic app to display a rendered Tiled map"""

def __init__(self, filename):
def __init__(self, filename) -> None:
self.renderer = None
self.running = False
self.dirty = False
self.exit_status = 0
self.load_map(filename)

def load_map(self, filename):
def load_map(self, filename) -> None:
"""Create a renderer, load data, and print some debug info"""
self.renderer = TiledRenderer(filename)

Expand All @@ -155,7 +155,7 @@ def load_map(self, filename):
for k, v in self.renderer.tmx_data.get_tile_colliders():
logger.info("%s\t%s", k, list(v))

def draw(self, surface):
def draw(self, surface) -> None:
"""Draw our map to some surface (probably the display)"""
# first we make a temporary surface that will accommodate the entire
# size of the map.
Expand All @@ -175,7 +175,7 @@ def draw(self, surface):
i = f.render("press any key for next map or ESC to quit", 1, (180, 180, 0))
surface.blit(i, (0, 0))

def handle_input(self):
def handle_input(self) -> None:
try:
event = pygame.event.wait()

Expand Down
16 changes: 8 additions & 8 deletions apps/pygame_sdl2_demo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""
This is tested on pygame 2.0.1 and python 3.9.6.
Leif Theden "bitcraft", 2012-2022
Leif Theden "bitcraft", 2012-2024
Rendering demo for the TMXLoader.
Expand Down Expand Up @@ -32,12 +32,12 @@ class TiledRenderer(object):
"""

def __init__(self, ctx: GameContext, filename):
def __init__(self, ctx: GameContext, filename) -> None:
self.ctx = ctx
self.tmx_data = tm = load_pygame_sdl2(ctx.renderer, filename)
self.pixel_size = tm.width * tm.tilewidth, tm.height * tm.tileheight

def render_map(self):
def render_map(self) -> None:
"""
Render our map to a pygame surface
Expand All @@ -53,7 +53,7 @@ def render_map(self):
if isinstance(layer, TiledTileLayer):
self.render_tile_layer(layer)

def render_tile_layer(self, layer):
def render_tile_layer(self, layer) -> None:
"""
Render all TiledTiles in this layer
Expand Down Expand Up @@ -81,14 +81,14 @@ class SimpleTest:
"""

def __init__(self, ctx: GameContext, filename):
def __init__(self, ctx: GameContext, filename) -> None:
self.ctx = ctx
self.map_renderer = None
self.running = False
self.exit_status = 0
self.load_map(filename)

def load_map(self, filename):
def load_map(self, filename) -> None:
"""
Create a renderer, load data, and print some debug info
Expand All @@ -109,15 +109,15 @@ def load_map(self, filename):
for k, v in self.map_renderer.tmx_data.get_tile_colliders():
logger.info("%s\t%s", k, list(v))

def draw(self):
def draw(self) -> None:
"""
Draw our map to some surface (probably the display)
"""
self.map_renderer.render_map()
self.ctx.renderer.present()

def handle_input(self):
def handle_input(self) -> None:
try:
event = pygame.event.wait()

Expand Down
22 changes: 11 additions & 11 deletions apps/pyglet_demo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""
This is tested on pyglet 1.2 and python 2.7.
Leif Theden "bitcraft", 2012-2022
Leif Theden "bitcraft", 2012-2024
Rendering demo for the TMXLoader.
Expand Down Expand Up @@ -30,7 +30,7 @@ class TiledRenderer(object):
no shape drawing yet
"""

def __init__(self, filename):
def __init__(self, filename) -> None:
tm = load_pyglet(filename)
self.size = tm.width * tm.tilewidth, tm.height * tm.tileheight
self.tmx_data = tm
Expand All @@ -39,13 +39,13 @@ def __init__(self, filename):
self.generate_sprites()
self.clock_display = pyglet.clock.ClockDisplay()

def draw_rect(self, color, rect, width):
def draw_rect(self, color, rect, width) -> None:
pass

def draw_lines(self, color, closed, points, width):
def draw_lines(self, color, closed, points, width) -> None:
pass

def generate_sprites(self):
def generate_sprites(self) -> None:
tw = self.tmx_data.tilewidth
th = self.tmx_data.tileheight
mw = self.tmx_data.width
Expand Down Expand Up @@ -98,21 +98,21 @@ def generate_sprites(self):
sprite = pyglet.sprite.Sprite(layer.image, batch=batch, x=x, y=y)
self.sprites.append(sprite)

def draw(self):
def draw(self) -> None:
for b in self.batches:
b.draw()
self.clock_display.draw()


class SimpleTest(object):
def __init__(self, filename):
def __init__(self, filename) -> None:
self.renderer = None
self.running = False
self.dirty = False
self.exit_status = 0
self.load_map(filename)

def load_map(self, filename):
def load_map(self, filename) -> None:
self.renderer = TiledRenderer(filename)

logger.info("Objects in map:")
Expand All @@ -125,7 +125,7 @@ def load_map(self, filename):
for k, v in self.renderer.tmx_data.tile_properties.items():
logger.info("%s\t%s", k, v)

def draw(self):
def draw(self) -> None:
self.renderer.draw()


Expand All @@ -142,15 +142,15 @@ def all_filenames():


class TestWindow(pyglet.window.Window):
def on_draw(self):
def on_draw(self) -> None:
if not hasattr(self, "filenames"):
self.filenames = all_filenames()
self.next_map()

self.clear()
self.contents.draw()

def next_map(self):
def next_map(self) -> None:
try:
self.contents = SimpleTest(next(self.filenames))
except StopIteration:
Expand Down
12 changes: 6 additions & 6 deletions apps/pysdl2_demo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""
This is tested on pysdl2 1.2 and python 2.7.
Leif Theden "bitcraft", 2012-2022
Leif Theden "bitcraft", 2012-2024
Rendering demo for the TMXLoader.
Expand Down Expand Up @@ -43,13 +43,13 @@ class TiledRenderer(object):
no shape drawing yet
"""

def __init__(self, filename, renderer):
def __init__(self, filename, renderer) -> None:
tm = load_pysdl2(renderer, filename)
self.size = tm.width * tm.tilewidth, tm.height * tm.tileheight
self.tmx_data = tm
self.renderer = renderer

def render_tile_layer(self, layer):
def render_tile_layer(self, layer) -> None:
"""Render the tile layer
DOES NOT CHECK FOR DRAWING TILES OFF THE SCREEN
Expand All @@ -69,7 +69,7 @@ def render_tile_layer(self, layer):
angle = 90 if (flip & 4) else 0
rce(renderer, texture, src, dest, angle, None, flip)

def render_map(self):
def render_map(self) -> None:
"""Render the entire map
Only tile layer drawing is implemented
Expand All @@ -82,7 +82,7 @@ def render_map(self):


class SimpleTest(object):
def __init__(self, filename, window):
def __init__(self, filename, window) -> None:
self.running = False
self.dirty = False
self.exit_status = 0
Expand All @@ -99,7 +99,7 @@ def __init__(self, filename, window):
for k, v in self.map_renderer.tmx_data.tile_properties.items():
logger.info("%s\t%s", k, v)

def draw(self):
def draw(self) -> None:
self.sdl_renderer.clear()
self.map_renderer.render_map()
self.sdl_renderer.present()
Expand Down
Loading

0 comments on commit da50ec0

Please sign in to comment.