feat: implement encounter reset mechanics for rooms and doors
This commit is contained in:
+5
-1
@@ -36,4 +36,8 @@ class Door:
|
|||||||
self.current_hp -= amount
|
self.current_hp -= amount
|
||||||
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
@@ -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."""
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user