// // Created by Arthur Jamet on 2021-05-31. // #include "GamepadSystem.hpp" #include "Component/Gamepad/GamepadComponent.hpp" #include "Component/Controllable/ControllableComponent.hpp" #include "Entity/Entity.hpp" #include "Controllers/Gamepad.hpp" using Button = RAY::Controller::GamePad::Button; using Gamepad = RAY::Controller::GamePad; namespace BBM { GamepadSystem::GamepadSystem(WAL::Wal &wal) : System(wal) {} void GamepadSystem::onFixedUpdate(WAL::ViewEntity &entity) { const auto &gamepadComponent = entity.get(); auto &controllable = entity.get(); Gamepad gamepad(gamepadComponent.getID()); const std::map keyPressedMap = { {gamepadComponent.keyJump, controllable.jump}, {gamepadComponent.keyBomb, controllable.bomb}, {gamepadComponent.keyPause, controllable.pause} }; for (auto key : keyPressedMap) key.second = gamepad.isPressed(key.first); controllable.move.x = gamepad.getAxisValue(gamepadComponent.LeftStickX) * -1; controllable.move.y = gamepad.getAxisValue(gamepadComponent.LeftStickY) * -1; controllable.move.x -= static_cast(gamepad.isDown(gamepadComponent.keyRight)); controllable.move.x += static_cast(gamepad.isDown(gamepadComponent.keyLeft)); controllable.move.y += static_cast(gamepad.isDown(gamepadComponent.keyUp)); controllable.move.y -= static_cast(gamepad.isDown(gamepadComponent.keyDown)); } }