From e7c39d3e8b4da17210bce5e6af06a51b483c427e Mon Sep 17 00:00:00 2001 From: frank <420@shampoo.ooo> Date: Tue, 15 Mar 2022 21:52:02 -0400 Subject: [PATCH] implemented death animations, added ordinal rank, added swords to ending --- NS.py | 74 ++++++++++++++++++----- lib/pgfw | 2 +- resource/littleSlimeGoop/0_back.png | Bin 2404 -> 0 bytes resource/littleSlimeGoop/1_downRight.png | Bin 3322 -> 0 bytes resource/littleSlimeGoop/2_right.png | Bin 2745 -> 0 bytes resource/littleSlimeGoop/3_downLeft.png | Bin 3355 -> 0 bytes resource/littleSlimeGoop/4_front.png | Bin 3194 -> 0 bytes resource/littleSlimeGoop/5_left.png | Bin 2733 -> 0 bytes resource/scores | 15 +++++ 9 files changed, 75 insertions(+), 16 deletions(-) delete mode 100644 resource/littleSlimeGoop/0_back.png delete mode 100644 resource/littleSlimeGoop/1_downRight.png delete mode 100644 resource/littleSlimeGoop/2_right.png delete mode 100644 resource/littleSlimeGoop/3_downLeft.png delete mode 100644 resource/littleSlimeGoop/4_front.png delete mode 100644 resource/littleSlimeGoop/5_left.png diff --git a/NS.py b/NS.py index fa0cfd6..656af27 100644 --- a/NS.py +++ b/NS.py @@ -34,6 +34,7 @@ from lib.pgfw.pgfw.Game import Game from lib.pgfw.pgfw.GameChild import GameChild from lib.pgfw.pgfw.Sprite import Sprite, RainbowSprite from lib.pgfw.pgfw.Animation import Animation +from lib.pgfw.pgfw.Vector import Vector from lib.pgfw.pgfw.extension import ( get_step, get_step_relative, get_delta, reflect_angle, get_distance, render_box, get_hsla_color, get_hue_shifted_surface, get_color_swapped_surface, load_frames, fill_colorkey, get_segments, get_boxed_surface @@ -237,12 +238,12 @@ class NS(Game, Animation): self.tony = Tony(self) self.logo = Logo(self) self.title = Title(self) - self.ending = Ending(self) self.wipe = Wipe(self) self.dialogue = Dialogue(self) self.chemtrails = Chemtrails(self) self.boss = Boss(self) self.level_select = LevelSelect(self) + self.ending = Ending(self) self.last_press = get_ticks() self.register(self.blink_score, interval=500) self.register(self.close_pop_up) @@ -326,11 +327,11 @@ class NS(Game, Animation): self.title.reset() if not leave_wipe_running: self.wipe.reset() - self.ending.reset() self.boss.reset() self.chemtrails.reset() self.platform.reset() self.dialogue.reset() + self.ending.reset() self.no_reset_elapsed = 0 self.title.activate() @@ -1773,9 +1774,10 @@ class Chemtrails(Sprite): self.set_frameset(NS.N) self.orient() - def update(self): + def update(self, offset: Vector=(0, 0)): if self.active: self.orient() + self.location.move(offset) Sprite.update(self) if not self.get_game().title.active and not self.get_game().level_select.active: boss = self.get_game().boss @@ -1961,6 +1963,9 @@ class Boss(Animation): self.boss_sprites[-1].load_from_path(path.joinpath(f"{prefix}Boil"), True) self.boss_sprites[-1].add_frameset(name="hurt", switch=True) self.boss_sprites[-1].load_from_path(path.joinpath(f"{prefix}Hit"), True) + if path.joinpath(f"{prefix}Death").exists(): + self.boss_sprites[-1].add_frameset(name="death", switch=True) + self.boss_sprites[-1].load_from_path(path.joinpath(f"{prefix}Death"), True) self.boss_sprites[-1].add_frameset(name="entrance", switch=True) self.boss_sprites[-1].load_from_path(path.joinpath(f"{prefix}Intro"), True) self.boss_sprites[-1].location.topleft = 207, 10 @@ -2333,7 +2338,10 @@ class Boss(Animation): self.queue = [] self.brandish_complete = True if win: - self.level_sprite().set_frameset("hurt") + if "death" in [str(frameset) for frameset in self.level_sprite().framesets]: + self.level_sprite().set_frameset("death") + else: + self.level_sprite().set_frameset("hurt") if self.get_configuration("system", "enable-level-select"): self.get_game().add_time_to_scores(self.time_elapsed, self.level_index) elif self.level_index == 2: @@ -2889,23 +2897,24 @@ class Ending(Animation): def __init__(self, parent): Animation.__init__(self, parent) - self.slime_bag = Sprite(self) - self.slime_bag.load_from_path(self.get_resource("Introduction_slime_bag.png"), True) - self.slime_bag.location.center = self.get_display_surface().get_rect().centerx, 300 + self.slime_bag = Chemtrails(self) self.tony_avatar = load(self.get_resource("Introduction_tony_avatar.png")).convert() self.time_font = Font(self.get_resource("rounded-mplus-1m-bold.ttf"), 64) - self.rank_font = Font(self.get_resource("rounded-mplus-1m-bold.ttf"), 18) + self.rank_font = Font(self.get_resource("rounded-mplus-1m-bold.ttf"), 26) self.register(self.start, self.start_wipe) + self.register(self.append_sword, interval=1500) + self.swords = [] def reset(self): self.deactivate() - self.slime_bag.unhide() self.halt() self.text_index = 0 self.angle = choice((pi / 4, 3 * pi / 4, 5 * pi / 4, 7 * pi / 4)) + self.slime_bag.reset() def deactivate(self): self.active = False + self.slime_bag.deactivate() def activate(self, level_index): self.defeated_level_index = level_index @@ -2913,11 +2922,22 @@ class Ending(Animation): self.play(self.start, delay=3000, play_once=True) foreground = get_boxed_surface( self.time_font.render(str(self.get_game().most_recent_score), False, (180, 150, 20), (255, 255, 255)).convert_alpha(), - background=(255, 255, 255), padding=(30, 0)) - rank = self.rank_font.render(f"rank {self.rank()}", False, (180, 150, 20), (255, 255, 255)) - rank = pygame.transform.rotate(rank, 270) + background=(255, 255, 255), padding=(38, 0)) + if self.rank() % 100 // 10 != 1: + if self.rank() % 10 == 1: + ordinal = "ST" + elif self.rank() % 10 == 2: + ordinal = "ND" + elif self.rank() % 10 == 3: + ordinal = "RD" + else: + ordinal = "TH" + else: + ordinal = "TH" + rank = self.rank_font.render(f"{self.rank()}{ordinal}", False, (180, 150, 20), (255, 255, 255)) + rank = pygame.transform.rotate(rank, 90) rank_rect = rank.get_rect() - rank_rect.midright = foreground.get_rect().midright + rank_rect.midleft = foreground.get_rect().midleft foreground.blit(rank, rank_rect) dsr = self.get_display_surface().get_rect() self.text = RainbowSprite(self, foreground, 180, 200) @@ -2930,6 +2950,8 @@ class Ending(Animation): dialogue.show_text("") self.play(self.start_wipe, delay=20000, play_once=True) self.get_audio().play_bgm("end") + self.slime_bag.activate() + self.play(self.append_sword) def rank(self): """ @@ -2965,7 +2987,25 @@ class Ending(Animation): def start_wipe(self): self.get_game().wipe.start(self.end_game) - + + def append_sword(self): + """ + Add a sword to the list based on what button is pressed. Remove swords that are out of view. + """ + if self.get_game().platform.get_edge_pressed() is not None: + sprite = Sprite(self) + # Add frames from Boss->Sword storage + for frame in self.get_game().boss.sword.swords[0][self.get_game().platform.get_edge_pressed()]: + sprite.add_frame(frame) + sprite.location.center = self.slime_bag.location.center + self.swords.append(sprite) + outgoing = [] + for sword in self.swords: + if sword.location.bottom < 0: + outgoing.append(sword) + for sword in outgoing: + self.swords.remove(sword) + def update(self): if self.active: Animation.update(self) @@ -2973,7 +3013,11 @@ class Ending(Animation): wipe = self.get_game().wipe self.get_game().logo.update() self.get_game().tony.update() - self.slime_bag.update() + # Draw swords shot at Tony + for sword in self.swords: + sword.move(0, -5) + sword.update() + self.slime_bag.update(offset=(0, -30)) dsr = self.get_display_surface().get_rect() # Bounce the time sprite around the screen if self.text.location.right > dsr.right or self.text.location.left < dsr.left: diff --git a/lib/pgfw b/lib/pgfw index 7329aa7..72866bd 160000 --- a/lib/pgfw +++ b/lib/pgfw @@ -1 +1 @@ -Subproject commit 7329aa76937b5fd225bb561459a2f5c70a57819d +Subproject commit 72866bd11c07ae50ef4fbaae683200e6bb9007b5 diff --git a/resource/littleSlimeGoop/0_back.png b/resource/littleSlimeGoop/0_back.png deleted file mode 100644 index 10f7d8a6dc2a9feb3428d29303c3c220622535f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2404 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 Ef@L5lX#fBK diff --git a/resource/littleSlimeGoop/2_right.png b/resource/littleSlimeGoop/2_right.png deleted file mode 100644 index 186e83fc318a18170d8d90f47c47975084a385fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2745 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 diff --git a/resource/littleSlimeGoop/5_left.png b/resource/littleSlimeGoop/5_left.png deleted file mode 100644 index 787533be4fd1ad5c0739a663e6f49eed1bcfe53a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2733 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