diff --git a/libs/background.py b/libs/background.py index 6d2fad0..e987fa3 100644 --- a/libs/background.py +++ b/libs/background.py @@ -13,7 +13,8 @@ from libs.texture import TextureWrapper class Background: COLLABS = { - "A3": libs.bg_collabs.a3.A3 + "A3": libs.bg_collabs.a3.Background, + "ANIMAL": libs.bg_collabs.animal.Background } def __init__(self, player_num: int, bpm: float, scene_preset: str = ''): self.tex_wrapper = TextureWrapper() @@ -29,7 +30,7 @@ class Background: self.renda = RendaController(self.tex_wrapper, random.randint(0, 2)) self.chibi = ChibiController(self.tex_wrapper, random.randint(0, 13), bpm) else: - collab_bg = Background.COLLABS[scene_preset](self.tex_wrapper, bpm) + collab_bg = Background.COLLABS[scene_preset](self.tex_wrapper, player_num, bpm) self.max_dancers = collab_bg.max_dancers self.don_bg = collab_bg.don_bg self.bg_normal = collab_bg.bg_normal diff --git a/libs/bg_collabs/__init__.py b/libs/bg_collabs/__init__.py index f20518f..6343a91 100644 --- a/libs/bg_collabs/__init__.py +++ b/libs/bg_collabs/__init__.py @@ -1 +1,2 @@ from . import a3 +from . import animal diff --git a/libs/bg_collabs/a3.py b/libs/bg_collabs/a3.py index 475a23e..e222147 100644 --- a/libs/bg_collabs/a3.py +++ b/libs/bg_collabs/a3.py @@ -8,10 +8,10 @@ from libs.bg_objects.don_bg import DonBGBase from libs.bg_objects.renda import RendaController from libs.texture import TextureWrapper -class A3: - def __init__(self, tex: TextureWrapper, bpm: float): +class Background: + def __init__(self, tex: TextureWrapper, player_num: int, bpm: float): self.tex_wrapper = tex - path = 'background/collab/A3' + path = 'background/collab/a3' self.max_dancers = 4 self.don_bg = DonBG(self.tex_wrapper, 0, 1, path) self.bg_normal = BGNormal(self.tex_wrapper, 0, path) diff --git a/libs/bg_collabs/animal.py b/libs/bg_collabs/animal.py new file mode 100644 index 0000000..dd3fb15 --- /dev/null +++ b/libs/bg_collabs/animal.py @@ -0,0 +1,51 @@ +import random +from libs.bg_objects.bg_fever import BGFeverBase +from libs.bg_objects.bg_normal import BGNormalBase +from libs.bg_objects.chibi import ChibiController +from libs.bg_objects.dancer import BaseDancer, BaseDancerGroup +from libs.bg_objects.fever import Fever3 +from libs.bg_objects.footer import Footer +from libs.bg_objects.renda import RendaController +from libs.texture import TextureWrapper +from libs.bg_objects.don_bg import DonBG4 + + +class Background: + def __init__(self, tex: TextureWrapper, player_num: int, bpm: float): + self.tex_wrapper = tex + path = 'background/collab/animal' + self.max_dancers = 5 + self.don_bg = DonBG4(self.tex_wrapper, 4, player_num, 'background') + self.bg_normal = BGNormal(self.tex_wrapper, 0, path) + self.bg_fever = BGFever(self.tex_wrapper, 0, path) + self.footer = Footer(self.tex_wrapper, 0, path) + self.fever = Fever3(self.tex_wrapper, 0, bpm, path) + self.dancer = DancerGroup(self.tex_wrapper, 0, bpm, self.max_dancers, path) + self.renda = RendaController(self.tex_wrapper, 0, path) + self.chibi = ChibiController(self.tex_wrapper, 0, bpm, path) + +class DancerGroup(BaseDancerGroup): + def __init__(self, tex: TextureWrapper, index: int, bpm: float, max_dancers: int, path: str): + self.name = 'dancer_' + str(index) + self.active_count = 0 + tex.load_zip(path, f'dancer/{self.name}') + self.spawn_positions = [2, 1, 3, 0, 4] + self.active_dancers = [None] * max_dancers + self.dancers = [BaseDancer(self.name, i, bpm, tex) for i in range(max_dancers)] + random.shuffle(self.dancers) + self.add_dancer() + +class BGNormal(BGNormalBase): + def update(self, current_time_ms: float): + pass + + def draw(self, tex: TextureWrapper): + tex.draw_texture(self.name, 'background') + +class BGFever(BGFeverBase): + def start(self): + self.transitioned = True + def update(self, current_time_ms: float): + pass + def draw(self, tex: TextureWrapper): + tex.draw_texture(self.name, 'background') diff --git a/libs/bg_objects/dancer.py b/libs/bg_objects/dancer.py index 249f051..489dac8 100644 --- a/libs/bg_objects/dancer.py +++ b/libs/bg_objects/dancer.py @@ -167,7 +167,7 @@ class BaseDancerGroup(): total_width = 1280 num_dancers = len(self.active_dancers) - first_dancer = self.active_dancers[3] + first_dancer = next((dancer for dancer in self.active_dancers if dancer is not None), None) if first_dancer is None: return dancer_width = tex.textures[self.name][str(first_dancer.index) + '_loop'].width diff --git a/libs/bg_objects/fever.py b/libs/bg_objects/fever.py index a0cda9f..97b43af 100644 --- a/libs/bg_objects/fever.py +++ b/libs/bg_objects/fever.py @@ -10,9 +10,9 @@ class Fever: return selected_obj(tex, index, bpm) class BaseFever: - def __init__(self, tex: TextureWrapper, index: int, bpm: float): + def __init__(self, tex: TextureWrapper, index: int, bpm: float, path: str = 'background'): self.name = 'fever_' + str(index) - tex.load_zip('background/regular', f'fever/{self.name}') + tex.load_zip(path, f'fever/{self.name}') self.bounce_up = Animation.create_move((60000 / bpm) / 2, total_distance=50, ease_out='quadratic') self.bounce_down = Animation.create_move((60000 / bpm) / 2, total_distance=50, ease_in='quadratic', delay=self.bounce_up.duration) diff --git a/libs/bg_objects/footer.py b/libs/bg_objects/footer.py index 22f7355..a6ad090 100644 --- a/libs/bg_objects/footer.py +++ b/libs/bg_objects/footer.py @@ -1,11 +1,11 @@ from libs.texture import TextureWrapper class Footer: - def __init__(self, tex: TextureWrapper, index: int): + def __init__(self, tex: TextureWrapper, index: int, path: str = 'background'): self.index = index if self.index == -1: return - tex.load_zip('background/regular', 'footer') + tex.load_zip(path, 'footer') def draw(self, tex: TextureWrapper): if self.index == -1: return