WIP Ajout projectil horizonto et du system de vagu
This commit is contained in:
parent
eae3f5392b
commit
6d1abb44a1
|
@ -118,15 +118,27 @@ class Wave:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.wave_list = [
|
self.wave_list = [
|
||||||
["__rainning_projectiles"],
|
["__rainning_projectiles"],
|
||||||
["__rainning_projectiles", "__rainning_projectiles"],
|
["__rainning_projectiles", "__horizontal_projectile"],
|
||||||
["__rainning_projectiles", "__create_zone_attack"],
|
|
||||||
[
|
[
|
||||||
"__rainning_projectiles",
|
"__rainning_projectiles",
|
||||||
"__rainning_projectiles",
|
"__rainning_projectiles",
|
||||||
"__create_zone_attack",
|
"__create_zone_attack",
|
||||||
],
|
],
|
||||||
["__rainning_projectiles", "__create_spike"],
|
[
|
||||||
["__rainning_projectiles", "__rainning_projectiles", "__create_spike"],
|
"__rainning_projectiles",
|
||||||
|
"__rainning_projectiles",
|
||||||
|
"__horizontal_projectile",
|
||||||
|
"__create_zone_attack",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"__rainning_projectiles",
|
||||||
|
"__create_spike",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"__rainning_projectiles",
|
||||||
|
"__rainning_projectiles",
|
||||||
|
"__create_spike",
|
||||||
|
],
|
||||||
[
|
[
|
||||||
"__rainning_projectiles",
|
"__rainning_projectiles",
|
||||||
"__rainning_projectiles",
|
"__rainning_projectiles",
|
||||||
|
@ -137,6 +149,12 @@ class Wave:
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class HorizontalProjectiles:
|
||||||
|
"""
|
||||||
|
Composant qui marque les entitées comme etnat des projectiles horizontaux
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def __initialize_world(world: World):
|
def __initialize_world(world: World):
|
||||||
"""
|
"""
|
||||||
TODO
|
TODO
|
||||||
|
@ -151,6 +169,7 @@ def __initialize_world(world: World):
|
||||||
)
|
)
|
||||||
|
|
||||||
world.new_entity().set(Coroutine(__wave(world)))
|
world.new_entity().set(Coroutine(__wave(world)))
|
||||||
|
world.new_entity().set(Coroutine(__print_time(world)))
|
||||||
|
|
||||||
world.new_entity().set(Sprite(world[Assets].get_texture("background")))
|
world.new_entity().set(Sprite(world[Assets].get_texture("background")))
|
||||||
|
|
||||||
|
@ -231,7 +250,7 @@ def __check_hurt(world: World):
|
||||||
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()
|
||||||
|
|
||||||
for shield in world.query(Velocity, Sprite):
|
for shield in world.query(Player, Sprite):
|
||||||
if world[Hurtable] == Hurtable.TRUE:
|
if world[Hurtable] == Hurtable.TRUE:
|
||||||
shield_position = shield.get(Sprite).position
|
shield_position = shield.get(Sprite).position
|
||||||
shield_width, shield_height = shield.get(Sprite).texture.get_size()
|
shield_width, shield_height = shield.get(Sprite).texture.get_size()
|
||||||
|
@ -258,7 +277,6 @@ def __check_hurt(world: World):
|
||||||
)
|
)
|
||||||
if is_collision:
|
if is_collision:
|
||||||
world.set(Life(world.get(Life) - entity.get(Hurt).damage))
|
world.set(Life(world.get(Life) - entity.get(Hurt).damage))
|
||||||
print(world.get(Life))
|
|
||||||
entity.remove(Hurt)
|
entity.remove(Hurt)
|
||||||
if Spike in entity:
|
if Spike in entity:
|
||||||
match entity.get(Spike):
|
match entity.get(Spike):
|
||||||
|
@ -294,26 +312,88 @@ def __defeat(world: World):
|
||||||
|
|
||||||
|
|
||||||
def __wave(world: World):
|
def __wave(world: World):
|
||||||
|
entity = world.new_entity()
|
||||||
|
entity2 = world.new_entity()
|
||||||
|
entity3 = world.new_entity()
|
||||||
|
entity4 = world.new_entity()
|
||||||
|
entity5 = world.new_entity()
|
||||||
for i, actuel_wave in enumerate(world[Wave].wave_list):
|
for i, actuel_wave in enumerate(world[Wave].wave_list):
|
||||||
print("vague n°" + str(i))
|
print("vague n°" + str(i))
|
||||||
for fonction in actuel_wave:
|
for i, fonction in enumerate(actuel_wave):
|
||||||
match fonction:
|
if i == 0:
|
||||||
case "__rainning_projectiles":
|
match fonction:
|
||||||
print("1")
|
case "__rainning_projectiles":
|
||||||
entity = world.new_entity()
|
entity.set(Coroutine(__rainning_projectiles(world)))
|
||||||
entity.set(Coroutine(__rainning_projectiles(world)))
|
case "__create_zone_attack":
|
||||||
case "__create_zone_attack":
|
for i in range(5):
|
||||||
print("2")
|
entity.set(Coroutine(__create_zone_attack(world)))
|
||||||
entity = world.new_entity()
|
yield wait(5)
|
||||||
entity.set(Coroutine(__create_zone_attack(world)))
|
case "__create_spike":
|
||||||
case "__create_spike":
|
entity.set(Coroutine(__create_spike(world)))
|
||||||
entity = world.new_entity()
|
yield wait(25)
|
||||||
entity.set(Coroutine(__create_spike(world)))
|
entity4.set(Coroutine(__create_spike(world)))
|
||||||
case _:
|
case "__horizontal_projectile":
|
||||||
pass
|
entity.set(Coroutine(__horizontal_projectile(world)))
|
||||||
|
case _:
|
||||||
|
pass
|
||||||
|
elif i == 1:
|
||||||
|
match fonction:
|
||||||
|
case "__rainning_projectiles":
|
||||||
|
entity2.set(Coroutine(__rainning_projectiles(world)))
|
||||||
|
case "__create_zone_attack":
|
||||||
|
for i in range(5):
|
||||||
|
entity2.set(Coroutine(__create_zone_attack(world)))
|
||||||
|
yield wait(5)
|
||||||
|
case "__create_spike":
|
||||||
|
entity2.set(Coroutine(__create_spike(world)))
|
||||||
|
yield wait(25)
|
||||||
|
entity2.set(Coroutine(__create_spike(world)))
|
||||||
|
case "__horizontal_projectile":
|
||||||
|
entity2.set(Coroutine(__horizontal_projectile(world)))
|
||||||
|
case _:
|
||||||
|
pass
|
||||||
|
elif i == 2:
|
||||||
|
match fonction:
|
||||||
|
case "__rainning_projectiles":
|
||||||
|
entity3.set(Coroutine(__rainning_projectiles(world)))
|
||||||
|
case "__create_zone_attack":
|
||||||
|
for i in range(5):
|
||||||
|
entity3.set(Coroutine(__create_zone_attack(world)))
|
||||||
|
yield wait(5)
|
||||||
|
case "__create_spike":
|
||||||
|
entity3.set(Coroutine(__create_spike(world)))
|
||||||
|
yield wait(25)
|
||||||
|
entity3.set(Coroutine(__create_spike(world)))
|
||||||
|
case "__horizontal_projectile":
|
||||||
|
entity3.set(Coroutine(__horizontal_projectile(world)))
|
||||||
|
case _:
|
||||||
|
pass
|
||||||
|
elif i == 3:
|
||||||
|
match fonction:
|
||||||
|
case "__rainning_projectiles":
|
||||||
|
entity4.set(Coroutine(__rainning_projectiles(world)))
|
||||||
|
case "__create_zone_attack":
|
||||||
|
for i in range(5):
|
||||||
|
entity4.set(Coroutine(__create_zone_attack(world)))
|
||||||
|
yield wait(5)
|
||||||
|
case "__create_spike":
|
||||||
|
entity4.set(Coroutine(__create_spike(world)))
|
||||||
|
yield wait(25)
|
||||||
|
entity4.set(Coroutine(__create_spike(world)))
|
||||||
|
case "__horizontal_projectile":
|
||||||
|
entity4.set(Coroutine(__horizontal_projectile(world)))
|
||||||
|
case _:
|
||||||
|
pass
|
||||||
|
|
||||||
yield wait(float(world[Wave].wave_list[-1][0]))
|
yield wait(float(world[Wave].wave_list[-1][0]))
|
||||||
entity.destroy()
|
entity.destroy()
|
||||||
for entities in world.query(RainProjectiles):
|
entity2.destroy()
|
||||||
|
entity3.destroy()
|
||||||
|
entity4.destroy()
|
||||||
|
entity5.destroy()
|
||||||
|
for entities in world.query(
|
||||||
|
RainProjectiles or ZoneAttack or Spike or HorizontalProjectiles
|
||||||
|
):
|
||||||
entities.destroy()
|
entities.destroy()
|
||||||
|
|
||||||
|
|
||||||
|
@ -402,6 +482,8 @@ def __create_zone_attack(world: World):
|
||||||
world[FightBox].p2[1],
|
world[FightBox].p2[1],
|
||||||
)
|
)
|
||||||
locate = locate2
|
locate = locate2
|
||||||
|
for entities in world.query(ZoneAttackProjectiles):
|
||||||
|
entities.destroy()
|
||||||
|
|
||||||
|
|
||||||
def __create_spike(world: World):
|
def __create_spike(world: World):
|
||||||
|
@ -546,9 +628,36 @@ def __rainning_projectiles(world: World):
|
||||||
yield wait(0.2)
|
yield wait(0.2)
|
||||||
entity.set(smooth.Target(Vec2(entity[Sprite].position.x, 1121)))
|
entity.set(smooth.Target(Vec2(entity[Sprite].position.x, 1121)))
|
||||||
|
|
||||||
for entity in world.query(RainProjectiles, Sprite):
|
for entity in world.query(RainProjectiles, Sprite):
|
||||||
if entity[Sprite].position.y > 1080:
|
if entity[Sprite].position.y > 1080:
|
||||||
entity.destroy()
|
entity.destroy()
|
||||||
|
|
||||||
|
|
||||||
|
def __horizontal_projectile(world: World):
|
||||||
|
while IsRunning:
|
||||||
|
animation = Animation(
|
||||||
|
"projectiles_coming",
|
||||||
|
30,
|
||||||
|
)
|
||||||
|
entity = world.new_entity()
|
||||||
|
entity.set(
|
||||||
|
Sprite(
|
||||||
|
world[Assets].get_texture("error"),
|
||||||
|
Vec2(10, random.randint(500, 930)),
|
||||||
|
4,
|
||||||
|
),
|
||||||
|
animation,
|
||||||
|
smooth.Speed(2),
|
||||||
|
Hurt(10),
|
||||||
|
HorizontalProjectiles(),
|
||||||
|
)
|
||||||
|
yield animation.wait()
|
||||||
|
yield wait(1)
|
||||||
|
entity.set(smooth.Target(Vec2(1500, entity[Sprite].position.y)))
|
||||||
|
|
||||||
|
for entity in world.query(RainProjectiles, Sprite):
|
||||||
|
if entity[Sprite].position.x > 1440:
|
||||||
|
entity.destroy()
|
||||||
|
|
||||||
|
|
||||||
def __check_key_pressed(world: World):
|
def __check_key_pressed(world: World):
|
||||||
|
@ -573,6 +682,14 @@ def __update_life_bar(world: World):
|
||||||
entity[Sprite].texture = surface_carre
|
entity[Sprite].texture = surface_carre
|
||||||
|
|
||||||
|
|
||||||
|
def __print_time(world: World):
|
||||||
|
time = 0
|
||||||
|
while IsRunning:
|
||||||
|
yield wait(1)
|
||||||
|
time += 1
|
||||||
|
print(time)
|
||||||
|
|
||||||
|
|
||||||
def __new_game_scene() -> Scene:
|
def __new_game_scene() -> Scene:
|
||||||
"""
|
"""
|
||||||
Créer une nouvelle scène
|
Créer une nouvelle scène
|
||||||
|
|
Loading…
Reference in a new issue