From 1c8e8521403cd2b122ce56309b0b7a56afae9f47 Mon Sep 17 00:00:00 2001 From: GreenXenith <24834740+GreenXenith@users.noreply.github.com> Date: Mon, 27 Apr 2020 23:54:14 -0700 Subject: [PATCH] Add loot placer, tweak player rendering, add tile on_step --- assets/loot_gold.png | Bin 3496 -> 3726 bytes assets/loot_pile.png | Bin 3375 -> 4321 bytes palette.png | Bin 3997 -> 1394 bytes src/game.py | 3 ++- src/loot.py | 20 +++++++++++++++----- src/map.py | 13 ++++++++----- src/register.py | 19 ++++++++++++++++++- src/tiles.py | 13 ++++++++++--- 8 files changed, 53 insertions(+), 15 deletions(-) diff --git a/assets/loot_gold.png b/assets/loot_gold.png index 0a63be4f3d92f5270bd60708eb94bf1d54c2837a..9dfb3846e2552ee89346b790062e297341c7afb8 100644 GIT binary patch literal 3726 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 B#^V40 diff --git a/assets/loot_pile.png b/assets/loot_pile.png index dfef21204a564da63fd0f3cd69315112a24f4e36..445cede0a6cb3a547dd939792dbbdcebd89528c4 100644 GIT binary patch delta 4307 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 BSlj>r delta 3373 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 b*QVwV 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 D3#+^O diff --git a/src/game.py b/src/game.py index b02eb15..673255f 100644 --- a/src/game.py +++ b/src/game.py @@ -93,13 +93,14 @@ while 1: # Only render tile if on-screen if pos[0] + scaledsize[0] >= 0 and pos[0] <= winsize[0] and \ pos[1] + scaledsize[1] >= 0 and pos[1] <= winsize[1]: + tile.on_step(dtime, map, player) screen.blit(pygame.transform.scale(texture, [math.floor(scaledsize[0]), math.ceil(scaledsize[1])]), pos) # DEBUG # text = arial.render(str(int(x)) + ", " + str(int(y)), False, (255, 255, 255)) # screen.blit(text, [x * 64 - (player.pos.x * round(SCALE * METER)) + camera[0], y * 64 - (player.pos.y * round(SCALE * METER)) + camera[1]]) - if not player_rendered and z == 1 and y == round(player.pos.y + player.sprite.get_rect()[3] / METER): + if not player_rendered and z == 1 and y == math.ceil(player.pos.y + 1 + player.sprite.get_rect()[3] / METER): # Draw player screen.blit(pygame.transform.scale(player.sprite.texture.frame, [round(SCALE * player.sprite.texture.width), round(SCALE * player.sprite.texture.height)]), camera) player_rendered = True diff --git a/src/loot.py b/src/loot.py index 023fd31..d080f38 100644 --- a/src/loot.py +++ b/src/loot.py @@ -2,17 +2,27 @@ import random import time import math -MSIZE = 80 - def rand(*args): random.seed(time.clock()) return random.randint(*args) class Placer(): loot = [ - ["loot_gold", 30], - ["loot_pile", 5] + ["loot:coins", 5], + ["loot:pile", 30], ] def populate(self, map): - map["tiles"].append() + if not map.generator: + return + + for room in map.generator.rooms: + if rand(0, 2) != 0: # 1 in 3 chance of no loot + for y in range(1, room.height - 2): + for x in range(1, room.width - 1): + placed = False + for loot in self.loot: + if not placed and rand(1, loot[1]) == 1: # 1 in n chance of placing + map.set_tile(room.x + x, room.y + y, 1, loot[0]) + placed = True + diff --git a/src/map.py b/src/map.py index 8b15d1d..b717c88 100644 --- a/src/map.py +++ b/src/map.py @@ -1,6 +1,6 @@ import pygame import json, math -from . import assets, dungeon, loot +from . import assets, dungeon, loot, tiles from .tiles import Tile from .vector import Vector @@ -17,10 +17,11 @@ class Map: def generate(self): self.generator = dungeon.Generator(80) self.generator.generate(self) - # self.placer = loot.Placer() - # self.map = self.placer.populate(self.map) + self.placer = loot.Placer() + self.placer.populate(self) def collides(self, pos, rect): + # Player position handling really needs to be reworked ... METER = self.METER cx = pos.x + (rect[0] / METER) cy = pos.y + (rect[1] / METER) @@ -47,8 +48,10 @@ class Map: for _ in range(len(self.map[z][y]), x + 1): self.map[z][y].append(None) - if name != "": - self.map[z][y][x] = Tile(name) + if not name: + self.map[z][y][x] = None + elif tiles.registered_tiles[name]: + self.map[z][y][x] = Tile(name, (x, y, z)) def get_tile(self, x, y, z): try: diff --git a/src/register.py b/src/register.py index ed544b3..09340a8 100644 --- a/src/register.py +++ b/src/register.py @@ -1,6 +1,7 @@ from . import tiles +from .vector import Vector -tiles.register_tile("map:cobble", { +tiles.register_tile("map:floor", { "textures": ["floor.png"], }) @@ -31,10 +32,26 @@ tiles.register_tile("map:wall_corner_outer", { ], }) +def pick_up(self, dtime, map, player): + METER = map.METER + rect = player.sprite.get_rect() + cx = player.pos.x + (rect[0] / METER) + cy = player.pos.y + (rect[1] / METER) + + cw = cx + (rect[2] / METER) + ch = cy + (rect[3] / METER) + + if cw >= self.pos[0] and cx <= (self.pos[0] + 1) and ch >= self.pos[1] and cy <= (self.pos[1] + 1): + map.set_tile(*self.pos, None) + tiles.register_tile("loot:coins", { "textures": ["loot_gold.png"], + "solid": False, + "on_step": pick_up }) tiles.register_tile("loot:pile", { "textures": ["loot_pile.png"], + "solid": False, + "on_step": pick_up }) diff --git a/src/tiles.py b/src/tiles.py index bb44ca2..b00f75f 100644 --- a/src/tiles.py +++ b/src/tiles.py @@ -28,10 +28,13 @@ class Tile: solid = True rotation = 0 - def __init__(self, name): + def __init__(self, name, pos): self.name = name + self.pos = pos for key in registered_tiles[name]: - self.__dict__[key] = registered_tiles[name][key] + value = registered_tiles[name][key] + if not callable(value): + setattr(self, key, value) def get(self, key): try: @@ -41,9 +44,13 @@ class Tile: def set_rotation(self, rot): self.rotation = rot - + def get_rotation(self): return self.rotation def is_solid(self): return self.get("solid") == True + + def on_step(self, dtime, map, player): + if "on_step" in registered_tiles[self.name]: + registered_tiles[self.name]["on_step"](self, dtime, map, player)