Merge branch 'boss-fight' of https://git.tipragot.fr/raphael/gtn into boss-fight

This commit is contained in:
Raphaël 2023-11-05 19:04:32 +01:00
commit f4f3ca8489
4 changed files with 50 additions and 19 deletions

Binary file not shown.

View file

@ -48,7 +48,7 @@ def __on_click_butons(world: World, _entity: Entity, name: str):
case "tricheur": case "tricheur":
world[CurrentScene] = base_game.CHEATER world[CurrentScene] = base_game.CHEATER
case "histoire": case "histoire":
world[CurrentScene] = directory_search.SCENE world[CurrentScene] = boss_fight.SCENE
case _: case _:
pass pass

View file

@ -13,10 +13,11 @@ from engine.math import Vec2
from plugins import assets, smooth from plugins import assets, smooth
from plugins import render from plugins import render
from plugins.animation import Animation from plugins.animation import Animation
from plugins.inputs import Held from plugins.inputs import Held, MousePosition
from plugins.render import Sprite from plugins.render import Sprite
from plugins.assets import Assets from plugins.assets import Assets
from plugins.coroutine import condition, wait, Coroutine from plugins.coroutine import condition, wait, Coroutine
from plugins.sound import Sound
from plugins.timing import Delta, TimedEvent from plugins.timing import Delta, TimedEvent
@ -189,9 +190,29 @@ def __move(world: World):
""" """
TODO TODO
""" """
if IsRunning not in world:
return
held = world[Held] held = world[Held]
s_pos = world[ShieldPos] s_pos = world[ShieldPos]
for entity in world.query(Sprite, Velocity): 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: for key in held:
if key in ("up", "z"): if key in ("up", "z"):
if ( if (
@ -241,6 +262,8 @@ def __check_hurt(world: World):
""" """
TODO TODO
""" """
if IsRunning not in world:
return
for entity in world.query(Hurt, Sprite): for entity in world.query(Hurt, Sprite):
position = entity.get(Sprite).position position = entity.get(Sprite).position
width, height = entity.get(Sprite).texture.get_size() width, height = entity.get(Sprite).texture.get_size()
@ -303,15 +326,21 @@ def __defeat(world: World):
""" """
TODO TODO
""" """
if world[Life] <= 0: if world[Life] <= 0 and IsRunning in world:
world.remove(IsRunning) world.remove(IsRunning)
world[CurrentScene] = __new_game_scene() for entity in world.query(Player):
print("ANIMATIONS")
entity.set(
class AWave: Animation(
""" "explosion",
TODO 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): def __wave(world: World):
@ -323,28 +352,26 @@ def __wave(world: World):
case "rainning": case "rainning":
entity = world.new_entity() entity = world.new_entity()
entities.append(entity) entities.append(entity)
entity.set(AWave(), Coroutine(__rainning_projectiles(world))) entity.set(Coroutine(__rainning_projectiles(world)))
case "zones": case "zones":
entity = world.new_entity() entity = world.new_entity()
entities.append(entity) entities.append(entity)
entity.set(AWave(), Coroutine(__create_zone_attack(world))) entity.set(Coroutine(__create_zone_attack(world)))
case "spikes": case "spikes":
entity = world.new_entity() entity = world.new_entity()
entities.append(entity) entities.append(entity)
entity.set(AWave(), Coroutine(__create_spike(world))) entity.set(Coroutine(__create_spike(world)))
case "horizontal_left": case "horizontal_left":
entity = world.new_entity() entity = world.new_entity()
entities.append(entity) entities.append(entity)
entity.set(AWave(), Coroutine(__horizontal_projectile(world, True))) entity.set(Coroutine(__horizontal_projectile(world, True)))
case "horizontal_right": case "horizontal_right":
entity = world.new_entity() entity = world.new_entity()
entities.append(entity) entities.append(entity)
entity.set( entity.set(Coroutine(__horizontal_projectile(world, False)))
AWave(), Coroutine(__horizontal_projectile(world, False))
)
case _: case _:
pass pass
yield wait(0.5) yield wait(0.5)
@ -602,7 +629,7 @@ def __horizontal_projectile(world: World, left: bool, number: int = 10):
entity.set( entity.set(
HorizontalProjectiles(), HorizontalProjectiles(),
Sprite( 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)), Vec2(10 if left else render.WIDTH - 10, random.randint(500, 889)),
4, 4,
), ),

View file

@ -16,6 +16,7 @@ from plugins.assets import Assets
from plugins.render import Sprite from plugins.render import Sprite
from plugins.sound import Sound from plugins.sound import Sound
from plugins.text import Text from plugins.text import Text
from scenes.story import boss_fight
LINES = 3 LINES = 3
@ -185,7 +186,10 @@ def __game_loop(world: World):
yield wait(5.0 - (i * 0.4)) yield wait(5.0 - (i * 0.4))
__spawn_search_directory(world) __spawn_search_directory(world)
yield wait(5.0) 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): def __spawn_search_alerts(world: World, nb_alerts: int):