From ede6112af4ece937de8a0daee801216c771dba2b Mon Sep 17 00:00:00 2001 From: = Date: Sun, 14 Mar 2021 16:59:37 +0100 Subject: [PATCH] use texture atlas instead of separate sprites --- survival/game_map.py | 8 +++----- survival/textureatlas.py | 4 ++-- survival/tile.py | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/survival/game_map.py b/survival/game_map.py index a0c68c0..d63f7d6 100644 --- a/survival/game_map.py +++ b/survival/game_map.py @@ -6,6 +6,7 @@ from pygame.rect import Rect from survival.player import Player from survival.quad_tree import QuadTree from survival.stone import Stone +from survival.textureatlas import TextureAtlas from survival.tile import Tile @@ -18,17 +19,14 @@ class GameMap: self.player = Player() self.game_objects.append(self.player) self.tiles = [[Tile() for x in range(width)] for y in range(height)] - self.textures = [pygame.image.load(os.path.join('..', 'assets', 'map1.png')), - pygame.image.load(os.path.join('..', 'assets', 'map2.png')), - pygame.image.load(os.path.join('..', 'assets', 'map3.png')), - pygame.image.load(os.path.join('..', 'assets', 'map4.png'))] + self.atlas = TextureAtlas(os.path.join('..', 'assets', 'atlas.png')) self.game_objects.append(Stone([100, 200])) self.quad_tree = QuadTree(0, Rect(0, 0, width * 32, height * 32)) def draw(self, window): for y in range(self.height): for x in range(self.width): - window.blit(self.textures[self.tiles[y][x].background_id], (x * 32, y * 32)) + window.blit(self.atlas.image_at(self.tiles[y][x].origin, (32, 32)), (x*32, y*32)) for game_object in self.game_objects: game_object.draw(window) diff --git a/survival/textureatlas.py b/survival/textureatlas.py index 4628c60..dea9461 100644 --- a/survival/textureatlas.py +++ b/survival/textureatlas.py @@ -5,8 +5,8 @@ class TextureAtlas(object): def __init__(self, filename): self.atlas = pygame.image.load(filename).convert() - def image_at(self, rectangle, color_key=None): - rect = pygame.Rect(rectangle) + def image_at(self, origin, target, color_key=None): + rect = pygame.Rect(origin, target) image = pygame.Surface(rect.size).convert() image.blit(self.atlas, (0, 0), rect) if color_key is not None: diff --git a/survival/tile.py b/survival/tile.py index bff4aab..ac813d3 100644 --- a/survival/tile.py +++ b/survival/tile.py @@ -4,4 +4,4 @@ from random import randrange class Tile: def __init__(self): - self.background_id = randrange(4) + self.origin = (0, 0)