mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-10-23 23:55:42 +00:00
45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "frontend-common/controller_interface.h"
|
||
|
#include <QtCore/QObject>
|
||
|
|
||
|
// NOTE: Those Monitor classes must be copyable to meet the requirements of std::function, but at the same time we want
|
||
|
// copies to be opaque to the caling code and share context. Therefore, all mutable context of the monitor (if required)
|
||
|
// must be enclosed in a std::shared_ptr. m_parent/m_axis_type don't mutate so they don't need to be stored as such.
|
||
|
|
||
|
class InputButtonBindingMonitor
|
||
|
{
|
||
|
public:
|
||
|
explicit InputButtonBindingMonitor(QObject* parent) : m_parent(parent) {}
|
||
|
|
||
|
ControllerInterface::Hook::CallbackResult operator()(const ControllerInterface::Hook& ei) const;
|
||
|
|
||
|
private:
|
||
|
QObject* m_parent;
|
||
|
};
|
||
|
|
||
|
class InputAxisBindingMonitor
|
||
|
{
|
||
|
public:
|
||
|
explicit InputAxisBindingMonitor(QObject* parent, Controller::AxisType axis_type)
|
||
|
: m_parent(parent), m_axis_type(axis_type)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
ControllerInterface::Hook::CallbackResult operator()(const ControllerInterface::Hook& ei) const;
|
||
|
|
||
|
private:
|
||
|
QObject* m_parent;
|
||
|
Controller::AxisType m_axis_type;
|
||
|
};
|
||
|
|
||
|
class InputRumbleBindingMonitor
|
||
|
{
|
||
|
public:
|
||
|
explicit InputRumbleBindingMonitor(QObject* parent) : m_parent(parent) {}
|
||
|
|
||
|
ControllerInterface::Hook::CallbackResult operator()(const ControllerInterface::Hook& ei) const;
|
||
|
|
||
|
private:
|
||
|
QObject* m_parent;
|
||
|
};
|