diff options
Diffstat (limited to 'game/scheduler/ObjectsScheduler.cpp')
-rw-r--r-- | game/scheduler/ObjectsScheduler.cpp | 63 |
1 files changed, 59 insertions, 4 deletions
diff --git a/game/scheduler/ObjectsScheduler.cpp b/game/scheduler/ObjectsScheduler.cpp index 60e3f47..7f58c79 100644 --- a/game/scheduler/ObjectsScheduler.cpp +++ b/game/scheduler/ObjectsScheduler.cpp @@ -4,6 +4,7 @@ #include "../Config.h" #include "../Random.h" +#include "../enemy/EnemyScript.h" #include "../missile/SpawnEvent.h" #include "api/Rigidbody.h" #include "api/Transform.h" @@ -11,18 +12,58 @@ #include "prefab/ZapperPoolSubScene.h" using namespace crepe; + void ObjectsScheduler::preset_0() { + for (int i = 0; i < this->amount_of_boss_fights; i++) { + this->trigger_event<MissileSpawnEvent>(MissileSpawnEvent {}); + } + if (this->amount_of_boss_fights >= 1) { + this->trigger_event<BattleStartEvent>(BattleStartEvent { + .num_enemies = Random::i(this->amount_of_boss_fights, 0), + .battle = false, + }); + } +} + +void ObjectsScheduler::preset_1() { trigger_event<MissileSpawnEvent>(MissileSpawnEvent {}); - trigger_event<MissileSpawnEvent>(MissileSpawnEvent {}); + if (this->amount_of_boss_fights >= 3) { + this->trigger_event<BattleStartEvent>(BattleStartEvent { + .num_enemies = Random::i(1, 0), + .battle = false, + }); + } +} + +void ObjectsScheduler::preset_2() { + trigger_event<CreateZapperEvent>(CreateZapperEvent {}); + if (this->amount_of_boss_fights >= 2) { + this->trigger_event<BattleStartEvent>(BattleStartEvent { + .num_enemies = Random::i(2, 1), + .battle = false, + }); + } } -void ObjectsScheduler::preset_1() { trigger_event<MissileSpawnEvent>(MissileSpawnEvent {}); } -void ObjectsScheduler::preset_2() { trigger_event<CreateZapperEvent>(CreateZapperEvent {}); } + void ObjectsScheduler::preset_3() { trigger_event<CreateZapperEvent>(CreateZapperEvent {}); } + void ObjectsScheduler::preset_4() {} + void ObjectsScheduler::boss_fight_1() { this->get_components_by_name<Rigidbody>("camera").front().get().data.linear_velocity.x = 0; this->get_components_by_name<Rigidbody>("player").front().get().data.linear_velocity.x = 0; - this->trigger_event<BattleStartEvent>(BattleStartEvent {.num_enemies = 2}); + + this->amount_of_boss_fights++; + this->trigger_event<BattleStartEvent>(BattleStartEvent { + .num_enemies = amount_of_boss_fights, + .battle = true, + }); + + RefVector<Rigidbody> rb_back_forest + = this->get_components_by_tag<Rigidbody>("forest_background"); + for (Rigidbody & rb : rb_back_forest) { + rb.data.linear_velocity.x = 0; + } } bool ObjectsScheduler::boss_fight_1_event() { @@ -30,6 +71,20 @@ bool ObjectsScheduler::boss_fight_1_event() { = PLAYER_SPEED * 0.02; this->get_components_by_name<Rigidbody>("player").front().get().data.linear_velocity.x = PLAYER_SPEED * 0.02; + + bool first = true; + RefVector<Rigidbody> rb_back_forest + = this->get_components_by_tag<Rigidbody>("forest_background"); + for (Rigidbody & rb : rb_back_forest) { + if (first == true) { + rb.data.linear_velocity.x = 30; + first = false; + } else { + rb.data.linear_velocity.x = 40; + first = true; + } + } + return false; } |