feat: implement encounter reset mechanics for rooms and doors

This commit is contained in:
Niklas Haiden
2026-05-08 19:32:07 +02:00
parent d6bdf22a10
commit 4faad9dd4b
3 changed files with 24 additions and 1 deletions
+4
View File
@@ -37,3 +37,7 @@ class Door:
if self.current_hp <= 0: if self.current_hp <= 0:
self.current_hp = 0 self.current_hp = 0
self.is_closed = False self.is_closed = False
def reset(self):
self.current_hp = self.max_hp
self.is_closed = False
+11
View File
@@ -222,10 +222,21 @@ class Game:
if room_key == self.current_room_key: if room_key == self.current_room_key:
return return
if self.current_room_key is not None:
self.reset_active_encounter()
self.item_manager.clear() self.item_manager.clear()
self.tower.clear(reset_spawned=True) self.tower.clear(reset_spawned=True)
self.current_room_key = room_key self.current_room_key = room_key
def reset_active_encounter(self) -> None:
"""Reset the room attack once the player exits through the door."""
if self.active_door is not None:
self.active_door.reset()
self.active_door = None
self.monsters.reset_encounter()
def update_items(self, player_rect: pygame.Rect, room_rect: Optional[pygame.Rect]) -> None: def update_items(self, player_rect: pygame.Rect, room_rect: Optional[pygame.Rect]) -> None:
"""Spawn room items and process one player purchase request.""" """Spawn room items and process one player purchase request."""
+8
View File
@@ -180,6 +180,14 @@ class MonsterManager:
for monster in self.monsters: for monster in self.monsters:
monster.wake_up() monster.wake_up()
def reset_encounter(self) -> None:
"""Stop the room attack and put all active monsters back into normal state."""
self.active_target_tile = None
self.active_door = None
for monster in self.monsters:
monster.sleep()
def update( def update(
self, self,
dt: float, dt: float,