From ed917e30449f45bcdb8506143ff98338526b18ff Mon Sep 17 00:00:00 2001 From: Tipragot Date: Sun, 5 Nov 2023 18:36:28 +0100 Subject: [PATCH] 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):