From ed917e30449f45bcdb8506143ff98338526b18ff Mon Sep 17 00:00:00 2001 From: Tipragot Date: Sun, 5 Nov 2023 18:36:28 +0100 Subject: [PATCH 1/2] Add mouse controls --- src/scenes/menu.py | 2 +- src/scenes/story/boss_fight.py | 40 +++++++++++++++++----------- src/scenes/story/directory_search.py | 6 ++++- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/scenes/menu.py b/src/scenes/menu.py index aa550c4..071b087 100644 --- a/src/scenes/menu.py +++ b/src/scenes/menu.py @@ -48,7 +48,7 @@ def __on_click_butons(world: World, _entity: Entity, name: str): case "tricheur": world[CurrentScene] = base_game.CHEATER case "histoire": - world[CurrentScene] = directory_search.SCENE + world[CurrentScene] = boss_fight.SCENE case _: pass diff --git a/src/scenes/story/boss_fight.py b/src/scenes/story/boss_fight.py index bb7aab0..4cbdbe0 100644 --- a/src/scenes/story/boss_fight.py +++ b/src/scenes/story/boss_fight.py @@ -13,7 +13,7 @@ from engine.math import Vec2 from plugins import assets, smooth from plugins import render from plugins.animation import Animation -from plugins.inputs import Held +from plugins.inputs import Held, MousePosition from plugins.render import Sprite from plugins.assets import Assets from plugins.coroutine import condition, wait, Coroutine @@ -192,6 +192,24 @@ def __move(world: World): held = world[Held] s_pos = world[ShieldPos] for entity in world.query(Sprite, Velocity): + if "button_1" in held: + world[ShieldPos] += ( + (world[MousePosition] - world[ShieldPos]).normalized + * entity[Velocity] + * world[Delta] + ) + box = world[FightBox] + if world[ShieldPos].x < box.p1[0] + 37: + world[ShieldPos].x = box.p1[0] + 37 + if world[ShieldPos].x > box.p2[0] - 37: + world[ShieldPos].x = box.p2[0] - 37 + if world[ShieldPos].y < box.p1[1] + 45.5: + world[ShieldPos].y = box.p1[1] + 45.5 + if world[ShieldPos].y > box.p2[1] - 45.5: + world[ShieldPos].y = box.p2[1] - 45.5 + entity[smooth.Target] = world[ShieldPos] + continue + for key in held: if key in ("up", "z"): if ( @@ -308,12 +326,6 @@ def __defeat(world: World): world[CurrentScene] = __new_game_scene() -class AWave: - """ - TODO - """ - - def __wave(world: World): entities: list[Entity] = [] for i, actuel_wave in enumerate(world[Wave].wave_list): @@ -323,28 +335,26 @@ def __wave(world: World): case "rainning": entity = world.new_entity() entities.append(entity) - entity.set(AWave(), Coroutine(__rainning_projectiles(world))) + entity.set(Coroutine(__rainning_projectiles(world))) case "zones": entity = world.new_entity() entities.append(entity) - entity.set(AWave(), Coroutine(__create_zone_attack(world))) + entity.set(Coroutine(__create_zone_attack(world))) case "spikes": entity = world.new_entity() entities.append(entity) - entity.set(AWave(), Coroutine(__create_spike(world))) + entity.set(Coroutine(__create_spike(world))) case "horizontal_left": entity = world.new_entity() entities.append(entity) - entity.set(AWave(), Coroutine(__horizontal_projectile(world, True))) + entity.set(Coroutine(__horizontal_projectile(world, True))) case "horizontal_right": entity = world.new_entity() entities.append(entity) - entity.set( - AWave(), Coroutine(__horizontal_projectile(world, False)) - ) + entity.set(Coroutine(__horizontal_projectile(world, False))) case _: pass yield wait(0.5) @@ -602,7 +612,7 @@ def __horizontal_projectile(world: World, left: bool, number: int = 10): entity.set( HorizontalProjectiles(), Sprite( - world[Assets].get_texture("error"), + world[Assets].get_texture("projectiles_coming/0000"), Vec2(10 if left else render.WIDTH - 10, random.randint(500, 889)), 4, ), diff --git a/src/scenes/story/directory_search.py b/src/scenes/story/directory_search.py index 83e4fda..2fc4539 100644 --- a/src/scenes/story/directory_search.py +++ b/src/scenes/story/directory_search.py @@ -16,6 +16,7 @@ from plugins.assets import Assets from plugins.render import Sprite from plugins.sound import Sound from plugins.text import Text +from scenes.story import boss_fight LINES = 3 @@ -185,7 +186,10 @@ def __game_loop(world: World): yield wait(5.0 - (i * 0.4)) __spawn_search_directory(world) yield wait(5.0) - print("BRABO BG !") + + # On passe a la scène de jeu (TEMP) + yield wait(5.0) + world[CurrentScene] = boss_fight.SCENE def __spawn_search_alerts(world: World, nb_alerts: int): From 2c7bcc41cc402d78c0cf58633dcfea55e78d4055 Mon Sep 17 00:00:00 2001 From: Tipragot Date: Sun, 5 Nov 2023 18:52:56 +0100 Subject: [PATCH 2/2] Ajout de la mort :( --- assets/story/boss_fight/death.mp3 | Bin 0 -> 64085 bytes src/scenes/story/boss_fight.py | 21 +++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 assets/story/boss_fight/death.mp3 diff --git a/assets/story/boss_fight/death.mp3 b/assets/story/boss_fight/death.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..22092c6ef057dedc97c15774be887557c1b3e863 GIT binary patch literal 64085 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 literal 0 HcmV?d00001 diff --git a/src/scenes/story/boss_fight.py b/src/scenes/story/boss_fight.py index 4cbdbe0..25ddfec 100644 --- a/src/scenes/story/boss_fight.py +++ b/src/scenes/story/boss_fight.py @@ -17,6 +17,7 @@ from plugins.inputs import Held, MousePosition from plugins.render import Sprite from plugins.assets import Assets from plugins.coroutine import condition, wait, Coroutine +from plugins.sound import Sound from plugins.timing import Delta, TimedEvent @@ -189,6 +190,8 @@ def __move(world: World): """ TODO """ + if IsRunning not in world: + return held = world[Held] s_pos = world[ShieldPos] for entity in world.query(Sprite, Velocity): @@ -259,6 +262,8 @@ def __check_hurt(world: World): """ TODO """ + if IsRunning not in world: + return for entity in world.query(Hurt, Sprite): position = entity.get(Sprite).position width, height = entity.get(Sprite).texture.get_size() @@ -321,9 +326,21 @@ def __defeat(world: World): """ TODO """ - if world[Life] <= 0: + if world[Life] <= 0 and IsRunning in world: world.remove(IsRunning) - world[CurrentScene] = __new_game_scene() + for entity in world.query(Player): + print("ANIMATIONS") + entity.set( + Animation( + "explosion", + 24, + ), + Sound(world[Assets].get_sound("death")), + ) + entity.remove(smooth.Target) + for entity in world.query(without=(Player,)): + entity.destroy() + world.new_entity().set(Sprite(world[Assets].get_texture("background"))) def __wave(world: World):