summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h')
-rw-r--r--Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h31
1 files changed, 22 insertions, 9 deletions
diff --git a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h
index 2a8430913e..7c5a236d75 100644
--- a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h
+++ b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h
@@ -54,6 +54,8 @@ public:
class Device
{
public:
+ class Input;
+ class Output;
//
// Control
@@ -65,7 +67,9 @@ public:
public:
virtual std::string GetName() const = 0;
virtual ~Control() {}
- bool operator==(const std::string& name) const;
+
+ virtual Input* ToInput() { return NULL; }
+ virtual Output* ToOutput() { return NULL; }
};
//
@@ -78,6 +82,10 @@ public:
public:
// things like absolute axes/ absolute mouse position will override this
virtual bool IsDetectable() { return true; }
+
+ virtual ControlState GetState() const = 0;
+
+ Input* ToInput() { return this; }
};
//
@@ -89,6 +97,10 @@ public:
{
public:
virtual ~Output() {}
+
+ virtual void SetState(ControlState state) = 0;
+
+ Output* ToOutput() { return this; }
};
virtual ~Device();
@@ -96,10 +108,6 @@ public:
virtual std::string GetName() const = 0;
virtual int GetId() const = 0;
virtual std::string GetSource() const = 0;
-
- virtual ControlState GetInputState( const Input* const input ) const = 0;
- virtual void SetOutputState( const Output* const output, const ControlState state ) = 0;
-
virtual bool UpdateInput() = 0;
virtual bool UpdateOutput() = 0;
@@ -108,6 +116,9 @@ public:
const std::vector<Input*>& Inputs() const { return m_inputs; }
const std::vector<Output*>& Outputs() const { return m_outputs; }
+ Input* FindInput(const std::string& name) const;
+ Output* FindOutput(const std::string& name) const;
+
protected:
void AddInput(Input* const i);
void AddOutput(Output* const o);
@@ -115,7 +126,6 @@ public:
private:
std::vector<Input*> m_inputs;
std::vector<Output*> m_outputs;
-
};
//
@@ -171,9 +181,8 @@ public:
struct DeviceControl
{
- DeviceControl() : device(NULL), control(NULL), mode(0) {}
+ DeviceControl() : control(NULL), mode(0) {}
- Device* device;
Device::Control* control;
int mode;
};
@@ -211,7 +220,6 @@ public:
void SetHwnd(void* const hwnd);
void Initialize();
- // TODO: remove this hack param
void Shutdown();
bool IsInit() const { return m_is_init; }
@@ -219,6 +227,9 @@ public:
bool UpdateInput(const bool force = false);
bool UpdateOutput(const bool force = false);
+ Device::Input* FindInput(const std::string& name, const Device* def_dev) const;
+ Device::Output* FindOutput(const std::string& name, const Device* def_dev) const;
+
const std::vector<Device*>& Devices() const { return m_devices; }
Device* FindDevice(const DeviceQualifier& devq) const;
@@ -230,6 +241,8 @@ private:
void* m_hwnd;
};
+typedef std::vector<ControllerInterface::Device*> DeviceList;
+
extern ControllerInterface g_controller_interface;
#endif