diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-11 21:32:30 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2025-01-11 21:32:30 +0100 |
commit | a6803980f1e74ecf1abb007b7c77f00d2cd92c43 (patch) | |
tree | 425ca961b27117d6e5d5fa0ae5cfca93351e0b33 /game/StartGameScript.cpp | |
parent | 6bc0025e4c24ed6659d993f3469c10615fb0e273 (diff) | |
parent | 525636bb2158ecea68ebb9d6b8d2dc722524c5e5 (diff) |
merge master into loek/doxygen
Diffstat (limited to 'game/StartGameScript.cpp')
-rw-r--r-- | game/StartGameScript.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/game/StartGameScript.cpp b/game/StartGameScript.cpp new file mode 100644 index 0000000..6d47e65 --- /dev/null +++ b/game/StartGameScript.cpp @@ -0,0 +1,75 @@ +#include "StartGameScript.h" +#include "Config.h" +#include "api/BehaviorScript.h" + +#include <crepe/api/Animator.h> +#include <crepe/api/AudioSource.h> +#include <crepe/api/ParticleEmitter.h> +#include <crepe/api/Sprite.h> + +using namespace crepe; +using namespace std; + +void StartGameScript::fixed_update(crepe::duration_t dt) { + Transform & player_transform = this->get_components_by_name<Transform>("player").front(); + // Create hole in wall and activate panic lamp + if (player_transform.position.x > 75 && !this->created_hole) { + Sprite & lamp_sprite = this->get_components_by_name<Sprite>("start_end").back(); + lamp_sprite.active = true; + Sprite & hole_sprite = this->get_components_by_name<Sprite>("start_hole").front(); + hole_sprite.active = true; + + RefVector<Rigidbody> frags_rg + = this->get_components_by_tag<Rigidbody>("wall_fragment"); + RefVector<Sprite> frags_sprite = this->get_components_by_tag<Sprite>("wall_fragment"); + for (Rigidbody & frag_rg : frags_rg) { + frag_rg.active = true; + } + for (Sprite & frag_sprite : frags_sprite) { + frag_sprite.active = true; + } + + RefVector<ParticleEmitter> smoke_emitters + = this->get_components_by_name<ParticleEmitter>("smoke_particles"); + for (ParticleEmitter & emitter : smoke_emitters) { + emitter.active = true; + } + + AudioSource & boom_audio + = this->get_components_by_name<AudioSource>("boom_audio").front(); + boom_audio.play(); + + BehaviorScript & player_audio_script + = this->get_components_by_name<BehaviorScript>("player_audio").front(); + player_audio_script.active = true; + + this->created_hole = true; + } + + // Take jetpack from jetpack stand + if (player_transform.position.x > 275 && !this->took_jetpack) { + Animator & jetpack_stand_anim + = this->get_components_by_name<Animator>("start_begin").back(); + jetpack_stand_anim.next_anim(); + Sprite & jetpack_sprite = this->get_components_by_name<Sprite>("player").back(); + jetpack_sprite.active = true; + + AudioSource & background_music + = this->get_components_by_name<AudioSource>("background_music").front(); + background_music.play(true); + + this->took_jetpack = true; + } + + // Start camera movement, enable player jumping and disable this script + if (player_transform.position.x > 500) { + Rigidbody & rb = this->get_components_by_name<Rigidbody>("camera").front(); + rb.data.linear_velocity = vec2(PLAYER_SPEED * 0.02, 0); + BehaviorScript & player_script + = this->get_components_by_name<BehaviorScript>("player").front(); + player_script.active = true; + BehaviorScript & this_script + = this->get_components_by_name<BehaviorScript>("start_game_script").front(); + this_script.active = false; + } +} |