diff options
Diffstat (limited to 'game/preview/PrevPlayerScript.cpp')
-rw-r--r-- | game/preview/PrevPlayerScript.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/game/preview/PrevPlayerScript.cpp b/game/preview/PrevPlayerScript.cpp new file mode 100644 index 0000000..2657b8d --- /dev/null +++ b/game/preview/PrevPlayerScript.cpp @@ -0,0 +1,132 @@ +#include "PrevPlayerScript.h" + +#include "../missile/SpawnEvent.h" +#include "api/Transform.h" +#include <crepe/api/AudioSource.h> +#include <crepe/api/Camera.h> +#include <crepe/manager/SaveManager.h> +#include <iostream> +#include <ostream> + +using namespace crepe; + +bool PrevPlayerScript::key_pressed(const KeyPressEvent & ev) { + switch (ev.key) { + case Keycode::A: + this->get_component<Rigidbody>().data.linear_velocity.x = -move_speed; + this->body->data.flip = {true, false}; + this->head->data.flip = {true, false}; + break; + case Keycode::D: + this->get_component<Rigidbody>().data.linear_velocity.x = move_speed; + this->body->data.flip = {false, false}; + this->head->data.flip = {false, false}; + break; + + case Keycode::SPACE: + this->get_component<Rigidbody>().data.linear_velocity.y = -move_speed; + break; + case Keycode::D0: + this->body_anim->set_anim(0); + this->head_anim->set_anim(0); + break; + case Keycode::D1: + this->body_anim->set_anim(1); + this->head_anim->set_anim(1); + break; + case Keycode::D2: + this->body_anim->set_anim(2); + this->head_anim->set_anim(2); + break; + case Keycode::D3: + this->body_anim->set_anim(3); + this->head_anim->set_anim(3); + break; + case Keycode::D4: + this->body_anim->set_anim(4); + this->head_anim->set_anim(4); + break; + case Keycode::D5: + this->body_anim->set_anim(5); + this->head_anim->set_anim(5); + break; + case Keycode::D6: + this->body_anim->set_anim(6); + this->head_anim->set_anim(6); + break; + case Keycode::D7: + this->body_anim->set_anim(7); + this->head_anim->set_anim(7); + break; + case Keycode::LEFT: + this->head->data.angle_offset -= 1; + break; + case Keycode::RIGHT: + this->head->data.angle_offset += 1; + break; + case Keycode::UP: + this->head->data.scale_offset += 0.1; + break; + case Keycode::DOWN: + this->head->data.scale_offset -= 0.1; + break; + case Keycode::P: + this->get_component<AudioSource>().play(); + break; + case Keycode::Q: + this->get_components_by_name<Camera>("camera").front().get().data.zoom -= 0.01; + break; + case Keycode::E: + this->get_components_by_name<Camera>("camera").front().get().data.zoom += 0.01; + break; + case Keycode::J: + this->get_components_by_name<Transform>("camera").front().get().position.x + -= move_speed; + break; + case Keycode::K: + this->get_components_by_name<Transform>("camera").front().get().position.y + -= move_speed; + break; + case Keycode::L: + this->get_components_by_name<Transform>("camera").front().get().position.x + += move_speed; + break; + case Keycode::I: + this->get_components_by_name<Transform>("camera").front().get().position.y + += move_speed; + break; + case Keycode::M: + trigger_event<MissileSpawnEvent>(MissileSpawnEvent {}); + break; + //todo + case Keycode::PAGE_UP: + case Keycode::PAGE_DOWN: + case Keycode::HOME: + break; + default: + break; + } + return false; +} + +void PrevPlayerScript::init() { + auto animations = this->get_components<Animator>(); + body_anim = animations[0]; + head_anim = animations[1]; + + auto sprites = this->get_components<Sprite>(); + body = sprites[0]; + head = sprites[1]; + + subscribe<KeyPressEvent>([this](const KeyPressEvent & ev) -> bool { + return this->key_pressed(ev); + }); +}; + +void PrevPlayerScript::fixed_update(crepe::duration_t dt) { + auto & savemgr = this->get_save_manager(); + const auto & pos = this->get_component<Transform>().position; + + savemgr.set("player_x", pos.x); + savemgr.set("player_y", pos.y); +}; |