From 97975da88cb25952af0c5ec75c130c66595d1807 Mon Sep 17 00:00:00 2001 From: Aki Date: Mon, 18 Apr 2022 12:39:58 +0200 Subject: Added controller for player character --- KeyboardController.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 KeyboardController.cpp (limited to 'KeyboardController.cpp') diff --git a/KeyboardController.cpp b/KeyboardController.cpp new file mode 100644 index 0000000..2273008 --- /dev/null +++ b/KeyboardController.cpp @@ -0,0 +1,46 @@ +#include "KeyboardController.h" + +#include + +#include + + +static constexpr float DIAGONAL {std::sin(M_PI / 4.0f)}; + + +static int check_axis(int negative_key, int positive_key, int last); + + + +KeyboardController::KeyboardController() : + x_axis {0}, + y_axis {0} +{ +} + + +Vector2 +KeyboardController::direction() +{ + x_axis = check_axis(KEY_LEFT, KEY_RIGHT, x_axis); + y_axis = check_axis(KEY_UP, KEY_DOWN, y_axis); + if (x_axis != 0 && y_axis != 0) + return {x_axis * DIAGONAL, y_axis * DIAGONAL}; + return {x_axis, y_axis}; +} + + +int +check_axis(const int negative_key, const int positive_key, const int last) +{ + int next = last; + if (last == 1 && IsKeyReleased(positive_key)) + next = 0; + else if (last == -1 && IsKeyReleased(negative_key)) + next = 0; + if (IsKeyPressed(positive_key)) + next = 1; + else if (IsKeyPressed(negative_key)) + next = -1; + return next; +} -- cgit v1.1