refactor: replace static door dimensions with dynamic sizing and add rect property
This commit is contained in:
+9
-5
@@ -1,8 +1,6 @@
|
||||
import pygame
|
||||
|
||||
from src.settings import (
|
||||
DOOR_WIDTH,
|
||||
DOOR_HEIGHT,
|
||||
DOOR_BORDER_WIDTH,
|
||||
COLOR_DOOR_BEIGE,
|
||||
COLOR_DOOR_BORDER
|
||||
@@ -11,10 +9,12 @@ from src.settings import (
|
||||
# using class to be able to reuse it
|
||||
# as we will have multiple rooms to go in
|
||||
class Door:
|
||||
def __init__(self, x, y, hp_value):
|
||||
def __init__(self, x, y, width, height, hp_value):
|
||||
# for each door we can set our own x/y position
|
||||
self.x = x
|
||||
self.y = y
|
||||
self.width = width
|
||||
self.height = height
|
||||
|
||||
self.max_hp = hp_value
|
||||
self.current_hp = hp_value
|
||||
@@ -25,10 +25,14 @@ class Door:
|
||||
|
||||
def draw(self, screen):
|
||||
# door
|
||||
pygame.draw.rect(screen, self.door_color, (self.x, self.y, DOOR_WIDTH, DOOR_HEIGHT))
|
||||
pygame.draw.rect(screen, self.door_color, self.rect)
|
||||
|
||||
# doorframe
|
||||
pygame.draw.rect(screen, self.door_border_color, (self.x, self.y, DOOR_WIDTH, DOOR_HEIGHT), DOOR_BORDER_WIDTH)
|
||||
pygame.draw.rect(screen, self.door_border_color, self.rect, DOOR_BORDER_WIDTH)
|
||||
|
||||
@property
|
||||
def rect(self):
|
||||
return pygame.Rect(self.x, self.y, self.width, self.height)
|
||||
|
||||
# when attacked and gets dmg reduces the health (if closed), door "breaks" when health = 0
|
||||
def take_damage(self, amount):
|
||||
|
||||
+6
-6
@@ -25,9 +25,7 @@ from src.settings import (
|
||||
BEER_BOTTLE_ECTS_VALUE,
|
||||
COFFEE_HEAL_VALUE,
|
||||
DEMO_ACTOR_HEIGHT,
|
||||
DOOR_HEIGHT,
|
||||
DOOR_HP,
|
||||
DOOR_WIDTH,
|
||||
FPS,
|
||||
PLAYER_SPEED,
|
||||
)
|
||||
@@ -338,15 +336,17 @@ class Game:
|
||||
door_tiles.append(tile_rect)
|
||||
|
||||
if not door_tiles:
|
||||
return Door(room_rect.centerx - DOOR_WIDTH // 2, room_rect.bottom, DOOR_HP)
|
||||
return Door(room_rect.centerx - tile_size, room_rect.bottom, tile_size * 2, 10, DOOR_HP)
|
||||
|
||||
door_area = door_tiles[0].copy()
|
||||
for tile_rect in door_tiles[1:]:
|
||||
door_area.union_ip(tile_rect)
|
||||
|
||||
return Door(
|
||||
door_area.centerx - DOOR_WIDTH // 2,
|
||||
door_area.centery - DOOR_HEIGHT // 2,
|
||||
door_area.x,
|
||||
door_area.y,
|
||||
door_area.width,
|
||||
door_area.height,
|
||||
DOOR_HP,
|
||||
)
|
||||
|
||||
@@ -363,7 +363,7 @@ class Game:
|
||||
|
||||
blockers = self.get_monster_spawn_blockers()
|
||||
if self.active_door is not None:
|
||||
blockers.append(pygame.Rect(self.active_door.x, self.active_door.y, DOOR_WIDTH, DOOR_HEIGHT))
|
||||
blockers.append(self.active_door.rect)
|
||||
for monster in self.monsters.monsters:
|
||||
blockers.append(monster.rect)
|
||||
blockers.extend(item.rect for item in self.item_manager.items)
|
||||
|
||||
Reference in New Issue
Block a user