feat: implement encounter reset mechanics for rooms and doors
This commit is contained in:
@@ -37,3 +37,7 @@ class Door:
|
||||
if self.current_hp <= 0:
|
||||
self.current_hp = 0
|
||||
self.is_closed = False
|
||||
|
||||
def reset(self):
|
||||
self.current_hp = self.max_hp
|
||||
self.is_closed = False
|
||||
|
||||
+11
@@ -222,10 +222,21 @@ class Game:
|
||||
if room_key == self.current_room_key:
|
||||
return
|
||||
|
||||
if self.current_room_key is not None:
|
||||
self.reset_active_encounter()
|
||||
|
||||
self.item_manager.clear()
|
||||
self.tower.clear(reset_spawned=True)
|
||||
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:
|
||||
"""Spawn room items and process one player purchase request."""
|
||||
|
||||
|
||||
@@ -180,6 +180,14 @@ class MonsterManager:
|
||||
for monster in self.monsters:
|
||||
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(
|
||||
self,
|
||||
dt: float,
|
||||
|
||||
Reference in New Issue
Block a user