diff options
author | german77 <juangerman-13@hotmail.com> | 2022-12-16 23:16:54 +0100 |
---|---|---|
committer | Narr the Reg <juangerman-13@hotmail.com> | 2022-12-17 01:26:11 +0100 |
commit | 243404bf34b1470369e1d0f5f2dd18ac02435273 (patch) | |
tree | 90a6f4fa1da5620b07ce3c2183cbc69edd029727 /src/input_common/drivers/virtual_gamepad.h | |
parent | Merge pull request #6354 from ogniK5377/device-name (diff) | |
download | yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.gz yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.bz2 yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.lz yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.xz yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.zst yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.zip |
Diffstat (limited to 'src/input_common/drivers/virtual_gamepad.h')
-rw-r--r-- | src/input_common/drivers/virtual_gamepad.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/input_common/drivers/virtual_gamepad.h b/src/input_common/drivers/virtual_gamepad.h new file mode 100644 index 000000000..3df91cc6f --- /dev/null +++ b/src/input_common/drivers/virtual_gamepad.h @@ -0,0 +1,73 @@ +// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "input_common/input_engine.h" + +namespace InputCommon { + +/** + * A virtual controller that is always assigned to the game input + */ +class VirtualGamepad final : public InputEngine { +public: + enum class VirtualButton { + ButtonA, + ButtonB, + ButtonX, + ButtonY, + StickL, + StickR, + TriggerL, + TriggerR, + TriggerZL, + TriggerZR, + ButtonPlus, + ButtonMinus, + ButtonLeft, + ButtonUp, + ButtonRight, + ButtonDown, + ButtonSL, + ButtonSR, + ButtonHome, + ButtonCapture, + }; + + enum class VirtualStick { + Left = 0, + Right = 1, + }; + + explicit VirtualGamepad(std::string input_engine_); + + /** + * Sets the status of all buttons bound with the key to pressed + * @param player_index the player number that will take this action + * @param button_id the id of the button + * @param value indicates if the button is pressed or not + */ + void SetButtonState(std::size_t player_index, int button_id, bool value); + void SetButtonState(std::size_t player_index, VirtualButton button_id, bool value); + + /** + * Sets the status of all buttons bound with the key to released + * @param player_index the player number that will take this action + * @param axis_id the id of the axis to move + * @param x_value the position of the stick in the x axis + * @param y_value the position of the stick in the y axis + */ + void SetStickPosition(std::size_t player_index, int axis_id, float x_value, float y_value); + void SetStickPosition(std::size_t player_index, VirtualStick axis_id, float x_value, + float y_value); + + /// Restores all inputs into the neutral position + void ResetControllers(); + +private: + /// Returns the correct identifier corresponding to the player index + PadIdentifier GetIdentifier(std::size_t player_index) const; +}; + +} // namespace InputCommon |