diff options
Diffstat (limited to 'game/workers/CollisionScript.cpp')
-rw-r--r-- | game/workers/CollisionScript.cpp | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/game/workers/CollisionScript.cpp b/game/workers/CollisionScript.cpp index baa058b..deaf0ee 100644 --- a/game/workers/CollisionScript.cpp +++ b/game/workers/CollisionScript.cpp @@ -1,6 +1,11 @@ #include "CollisionScript.h" #include <crepe/api/Animator.h> +#include <crepe/api/BehaviorScript.h> +#include <crepe/api/Rigidbody.h> +#include <crepe/api/Sprite.h> +#include <crepe/api/Transform.h> +#include <crepe/types.h> using namespace crepe; using namespace std; @@ -13,31 +18,50 @@ void CollisionScript::init() { bool CollisionScript::on_collision(const CollisionEvent & ev) { RefVector<Animator> animators = this->get_components<Animator>(); + RefVector<Sprite> sprites = this->get_components<Sprite>(); + Rigidbody & rb = this->get_component<Rigidbody>(); + Transform & tr = this->get_component<Transform>(); + BehaviorScript & bs_panic = this->get_components<BehaviorScript>().front(); if (ev.info.other.metadata.tag == "zapper") { for (Animator & anim : animators) { - anim.active = true; - anim.set_anim(4); - anim.data.looping = true; + anim.active = false; + anim.set_anim(3); } + for (Sprite & sprite : sprites) { + sprite.data.position_offset.x = 15; + } + rb.data.linear_velocity_coefficient = {0.5, 0.5}; + tr.rotation = 90; + bs_panic.active = false; - return true; + return false; } else if (ev.info.other.metadata.tag == "laser") { for (Animator & anim : animators) { - anim.active = true; - anim.set_anim(4); - anim.data.looping = true; + anim.active = false; + anim.set_anim(3); + } + for (Sprite & sprite : sprites) { + sprite.data.position_offset.x = 15; } + rb.data.linear_velocity_coefficient = {0.5, 0.5}; + tr.rotation = 90; + bs_panic.active = false; - return true; + return false; } else if (ev.info.other.metadata.tag == "missile") { for (Animator & anim : animators) { - anim.active = true; - anim.set_anim(5); - anim.data.looping = true; + anim.active = false; + anim.set_anim(3); + } + for (Sprite & sprite : sprites) { + sprite.data.position_offset.x = 15; } + rb.data.linear_velocity_coefficient = {0.5, 0.5}; + tr.rotation = 90; + bs_panic.active = false; - return true; + return false; } return false; |