Play-/Source/ui_unix/PH_HidUnix.cpp

66 lines
1.7 KiB
C++
Raw Normal View History

2016-07-26 00:52:31 +01:00
#include "PH_HidUnix.h"
#include <stdexcept>
#include "AppConfig.h"
2016-07-26 00:52:31 +01:00
CPH_HidUnix::CPH_HidUnix()
: m_inputManager(CAppConfig::GetInstance())
2016-07-26 00:52:31 +01:00
{
}
CPH_HidUnix::~CPH_HidUnix()
{
}
void CPH_HidUnix::Update(uint8* ram)
{
for(auto listenerIterator(std::begin(m_listeners));
listenerIterator != std::end(m_listeners); listenerIterator++)
{
auto* listener(*listenerIterator);
for(unsigned int i = 0; i < PS2::CControllerInfo::MAX_BUTTONS; i++)
{
auto button = static_cast<PS2::CControllerInfo::BUTTON>(i);
const auto& binding = m_inputManager.GetBinding(button);
2016-07-26 00:52:31 +01:00
if(!binding) continue;
uint32 value = binding->GetValue();
auto currentButtonId = static_cast<PS2::CControllerInfo::BUTTON>(i);
if(PS2::CControllerInfo::IsAxis(currentButtonId))
{
listener->SetAxisState(0, currentButtonId, value & 0xFF, ram);
}
else
{
listener->SetButtonState(0, currentButtonId, value != 0, ram);
}
}
}
}
CPadHandler::FactoryFunction CPH_HidUnix::GetFactoryFunction()
{
//Needs to be created in the same thread as UI
return std::bind(&CPH_HidUnix::PadHandlerFactory, new CPH_HidUnix());
}
CPadHandler* CPH_HidUnix::PadHandlerFactory(CPH_HidUnix* handler)
{
return handler;
}
2016-09-06 00:23:31 +01:00
void CPH_HidUnix::InputValueCallbackPressed(uint32 valueRef, int type)
2016-07-26 00:52:31 +01:00
{
InputValueCallback(0, valueRef, 1, type);
2016-07-26 00:52:31 +01:00
}
2016-09-06 00:23:31 +01:00
void CPH_HidUnix::InputValueCallbackReleased(uint32 valueRef, int type)
2016-07-26 00:52:31 +01:00
{
InputValueCallback(0, valueRef, 0, type);
2016-07-26 00:52:31 +01:00
}
void CPH_HidUnix::InputValueCallback(int device, uint32 value, uint32 action, int type)
2016-07-26 00:52:31 +01:00
{
m_inputManager.OnInputEventReceived(device, value, action);
2016-07-26 00:52:31 +01:00
}