summaryrefslogtreecommitdiff
path: root/src/input_common/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/helpers')
-rw-r--r--src/input_common/helpers/stick_from_buttons.cpp75
-rw-r--r--src/input_common/helpers/touch_from_buttons.cpp11
-rw-r--r--src/input_common/helpers/udp_protocol.h21
3 files changed, 64 insertions, 43 deletions
diff --git a/src/input_common/helpers/stick_from_buttons.cpp b/src/input_common/helpers/stick_from_buttons.cpp
index 77fcd655e..e23394f5f 100644
--- a/src/input_common/helpers/stick_from_buttons.cpp
+++ b/src/input_common/helpers/stick_from_buttons.cpp
@@ -19,23 +19,36 @@ public:
: up(std::move(up_)), down(std::move(down_)), left(std::move(left_)),
right(std::move(right_)), modifier(std::move(modifier_)), modifier_scale(modifier_scale_),
modifier_angle(modifier_angle_) {
- Common::Input::InputCallback button_up_callback{
- [this](Common::Input::CallbackStatus callback_) { UpdateUpButtonStatus(callback_); }};
- Common::Input::InputCallback button_down_callback{
- [this](Common::Input::CallbackStatus callback_) { UpdateDownButtonStatus(callback_); }};
- Common::Input::InputCallback button_left_callback{
- [this](Common::Input::CallbackStatus callback_) { UpdateLeftButtonStatus(callback_); }};
- Common::Input::InputCallback button_right_callback{
- [this](Common::Input::CallbackStatus callback_) {
- UpdateRightButtonStatus(callback_);
- }};
- Common::Input::InputCallback button_modifier_callback{
- [this](Common::Input::CallbackStatus callback_) { UpdateModButtonStatus(callback_); }};
- up->SetCallback(button_up_callback);
- down->SetCallback(button_down_callback);
- left->SetCallback(button_left_callback);
- right->SetCallback(button_right_callback);
- modifier->SetCallback(button_modifier_callback);
+ up->SetCallback({
+ .on_change =
+ [this](const Common::Input::CallbackStatus& callback_) {
+ UpdateUpButtonStatus(callback_);
+ },
+ });
+ down->SetCallback({
+ .on_change =
+ [this](const Common::Input::CallbackStatus& callback_) {
+ UpdateDownButtonStatus(callback_);
+ },
+ });
+ left->SetCallback({
+ .on_change =
+ [this](const Common::Input::CallbackStatus& callback_) {
+ UpdateLeftButtonStatus(callback_);
+ },
+ });
+ right->SetCallback({
+ .on_change =
+ [this](const Common::Input::CallbackStatus& callback_) {
+ UpdateRightButtonStatus(callback_);
+ },
+ });
+ modifier->SetCallback({
+ .on_change =
+ [this](const Common::Input::CallbackStatus& callback_) {
+ UpdateModButtonStatus(callback_);
+ },
+ });
last_x_axis_value = 0.0f;
last_y_axis_value = 0.0f;
}
@@ -133,27 +146,27 @@ public:
}
}
- void UpdateUpButtonStatus(Common::Input::CallbackStatus button_callback) {
+ void UpdateUpButtonStatus(const Common::Input::CallbackStatus& button_callback) {
up_status = button_callback.button_status.value;
UpdateStatus();
}
- void UpdateDownButtonStatus(Common::Input::CallbackStatus button_callback) {
+ void UpdateDownButtonStatus(const Common::Input::CallbackStatus& button_callback) {
down_status = button_callback.button_status.value;
UpdateStatus();
}
- void UpdateLeftButtonStatus(Common::Input::CallbackStatus button_callback) {
+ void UpdateLeftButtonStatus(const Common::Input::CallbackStatus& button_callback) {
left_status = button_callback.button_status.value;
UpdateStatus();
}
- void UpdateRightButtonStatus(Common::Input::CallbackStatus button_callback) {
+ void UpdateRightButtonStatus(const Common::Input::CallbackStatus& button_callback) {
right_status = button_callback.button_status.value;
UpdateStatus();
}
- void UpdateModButtonStatus(Common::Input::CallbackStatus button_callback) {
+ void UpdateModButtonStatus(const Common::Input::CallbackStatus& button_callback) {
modifier_status = button_callback.button_status.value;
UpdateStatus();
}
@@ -265,18 +278,18 @@ private:
Button left;
Button right;
Button modifier;
- float modifier_scale;
- float modifier_angle;
+ float modifier_scale{};
+ float modifier_angle{};
float angle{};
float goal_angle{};
float amplitude{};
- bool up_status;
- bool down_status;
- bool left_status;
- bool right_status;
- bool modifier_status;
- float last_x_axis_value;
- float last_y_axis_value;
+ bool up_status{};
+ bool down_status{};
+ bool left_status{};
+ bool right_status{};
+ bool modifier_status{};
+ float last_x_axis_value{};
+ float last_y_axis_value{};
const Common::Input::AnalogProperties properties{0.0f, 1.0f, 0.5f, 0.0f, false};
std::chrono::time_point<std::chrono::steady_clock> last_update;
};
diff --git a/src/input_common/helpers/touch_from_buttons.cpp b/src/input_common/helpers/touch_from_buttons.cpp
index 35d60bc90..ece1e3b32 100644
--- a/src/input_common/helpers/touch_from_buttons.cpp
+++ b/src/input_common/helpers/touch_from_buttons.cpp
@@ -14,10 +14,13 @@ public:
using Button = std::unique_ptr<Common::Input::InputDevice>;
TouchFromButtonDevice(Button button_, int touch_id_, float x_, float y_)
: button(std::move(button_)), touch_id(touch_id_), x(x_), y(y_) {
- Common::Input::InputCallback button_up_callback{
- [this](Common::Input::CallbackStatus callback_) { UpdateButtonStatus(callback_); }};
last_button_value = false;
- button->SetCallback(button_up_callback);
+ button->SetCallback({
+ .on_change =
+ [this](const Common::Input::CallbackStatus& callback_) {
+ UpdateButtonStatus(callback_);
+ },
+ });
button->ForceUpdate();
}
@@ -47,7 +50,7 @@ public:
return status;
}
- void UpdateButtonStatus(Common::Input::CallbackStatus button_callback) {
+ void UpdateButtonStatus(const Common::Input::CallbackStatus& button_callback) {
const Common::Input::CallbackStatus status{
.type = Common::Input::InputType::Touch,
.touch_status = GetStatus(button_callback.button_status.value),
diff --git a/src/input_common/helpers/udp_protocol.h b/src/input_common/helpers/udp_protocol.h
index bcba12c58..2d5d54ddb 100644
--- a/src/input_common/helpers/udp_protocol.h
+++ b/src/input_common/helpers/udp_protocol.h
@@ -54,6 +54,18 @@ struct Message {
template <typename T>
constexpr Type GetMessageType();
+template <typename T>
+Message<T> CreateMessage(const u32 magic, const T data, const u32 sender_id) {
+ boost::crc_32_type crc;
+ Header header{
+ magic, PROTOCOL_VERSION, sizeof(T) + sizeof(Type), 0, sender_id, GetMessageType<T>(),
+ };
+ Message<T> message{header, data};
+ crc.process_bytes(&message, sizeof(Message<T>));
+ message.header.crc = crc.checksum();
+ return message;
+}
+
namespace Request {
enum RegisterFlags : u8 {
@@ -101,14 +113,7 @@ static_assert(std::is_trivially_copyable_v<PadData>,
*/
template <typename T>
Message<T> Create(const T data, const u32 client_id = 0) {
- boost::crc_32_type crc;
- Header header{
- CLIENT_MAGIC, PROTOCOL_VERSION, sizeof(T) + sizeof(Type), 0, client_id, GetMessageType<T>(),
- };
- Message<T> message{header, data};
- crc.process_bytes(&message, sizeof(Message<T>));
- message.header.crc = crc.checksum();
- return message;
+ return CreateMessage(CLIENT_MAGIC, data, client_id);
}
} // namespace Request