From 7ef74a601b7fee4586d0d82a1fe10d6fcefed275 Mon Sep 17 00:00:00 2001 From: Yonokid <37304577+Yonokid@users.noreply.github.com> Date: Wed, 31 Dec 2025 14:45:08 -0500 Subject: [PATCH] dancers can be removed --- libs/background.py | 7 +++++++ libs/bg_objects/dancer.py | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/libs/background.py b/libs/background.py index b3fbe60..2f98104 100644 --- a/libs/background.py +++ b/libs/background.py @@ -130,10 +130,17 @@ class Background: current_milestone = min(self.max_dancers - 1, int(gauge_1p.gauge_length / (clear_threshold / self.max_dancers))) else: current_milestone = self.max_dancers + if current_milestone > self.last_milestone and current_milestone <= self.max_dancers: self.dancer.add_dancer() self.last_milestone = current_milestone logger.info(f"Dancer milestone reached: {current_milestone}/{self.max_dancers}") + elif current_milestone < self.last_milestone: + dancers_to_remove = self.last_milestone - current_milestone + for _ in range(dancers_to_remove): + self.dancer.remove_dancer() + self.last_milestone = current_milestone + logger.info(f"Dancer milestones lost: {current_milestone}/{self.max_dancers} (removed {dancers_to_remove})") if self.bg_fever is not None and gauge_1p is not None: if not self.is_clear and gauge_1p.is_clear: self.bg_fever.start() diff --git a/libs/bg_objects/dancer.py b/libs/bg_objects/dancer.py index 5e802a2..4756f22 100644 --- a/libs/bg_objects/dancer.py +++ b/libs/bg_objects/dancer.py @@ -162,6 +162,12 @@ class BaseDancerGroup(): dancer.start() self.active_count += 1 + def remove_dancer(self): + if self.active_count > 1: + self.active_count -= 1 + position = self.spawn_positions[self.active_count] + self.active_dancers[position] = None + def update(self, current_time_ms: float, bpm: float): for dancer in self.dancers: dancer.update(current_time_ms, bpm)