#include "KeyboardController.h" #include #include static const float DIAGONAL {static_cast(sin(static_cast(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 {static_cast(x_axis), static_cast(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)) { if (IsKeyDown(negative_key)) next = -1; else next = 0; } else if (last == -1 && IsKeyReleased(negative_key)) { if (IsKeyDown(positive_key)) next = 1; else next = 0; } if (IsKeyPressed(positive_key)) next = 1; else if (IsKeyPressed(negative_key)) next = -1; return next; }