2015-05-06 02:00:14 -04:00
|
|
|
#include "PH_Android.h"
|
2015-07-06 00:53:45 -04:00
|
|
|
#include "com_virtualapplications_play_InputManagerConstants.h"
|
2015-05-06 02:00:14 -04:00
|
|
|
|
|
|
|
CPH_Android::CPH_Android()
|
|
|
|
{
|
2015-05-16 23:07:24 -04:00
|
|
|
memset(&m_buttonStates, 0, sizeof(m_buttonStates));
|
2015-06-30 05:26:01 -04:00
|
|
|
memset(&m_axisStates, 0, sizeof(m_axisStates));
|
2015-05-06 02:00:14 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
CPH_Android::~CPH_Android()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
CPadHandler::FactoryFunction CPH_Android::GetFactoryFunction()
|
|
|
|
{
|
|
|
|
return [] () { return new CPH_Android(); };
|
|
|
|
}
|
|
|
|
|
|
|
|
void CPH_Android::Update(uint8* ram)
|
|
|
|
{
|
|
|
|
for(auto& listener : m_listeners)
|
|
|
|
{
|
2015-05-16 23:07:24 -04:00
|
|
|
for(unsigned int i = 0; i < PS2::CControllerInfo::MAX_BUTTONS; i++)
|
|
|
|
{
|
|
|
|
auto button = static_cast<PS2::CControllerInfo::BUTTON>(i);
|
2015-06-30 05:26:01 -04:00
|
|
|
if(PS2::CControllerInfo::IsAxis(button))
|
|
|
|
{
|
|
|
|
float buttonValue = ((m_axisStates[i] + 1.0f) / 2.0f) * 255.f;
|
|
|
|
listener->SetAxisState(0, button, static_cast<uint8>(buttonValue), ram);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
listener->SetButtonState(0, button, m_buttonStates[i], ram);
|
|
|
|
}
|
2015-05-16 23:07:24 -04:00
|
|
|
}
|
2015-05-06 02:00:14 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-06-30 05:26:01 -04:00
|
|
|
void CPH_Android::SetButtonState(uint32 buttonId, bool pressed)
|
2015-05-06 02:00:14 -04:00
|
|
|
{
|
2015-05-16 23:07:24 -04:00
|
|
|
switch(buttonId)
|
|
|
|
{
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_START:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::START] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_SELECT:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::SELECT] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_UP:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::DPAD_UP] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_DOWN:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::DPAD_DOWN] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_LEFT:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::DPAD_LEFT] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_RIGHT:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::DPAD_RIGHT] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_TRIANGLE:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::TRIANGLE] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_CIRCLE:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::CIRCLE] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_SQUARE:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::SQUARE] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_CROSS:
|
2015-05-16 23:07:24 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::CROSS] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_L1:
|
2015-07-02 01:48:13 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::L1] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_L2:
|
2015-07-02 01:48:13 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::L2] = pressed;
|
|
|
|
break;
|
2015-09-27 18:24:57 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_L3:
|
|
|
|
m_buttonStates[PS2::CControllerInfo::L3] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_R1:
|
2015-07-02 01:48:13 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::R1] = pressed;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_R2:
|
2015-07-02 01:48:13 -04:00
|
|
|
m_buttonStates[PS2::CControllerInfo::R2] = pressed;
|
|
|
|
break;
|
2015-09-27 18:24:57 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_BUTTON_R3:
|
|
|
|
m_buttonStates[PS2::CControllerInfo::R3] = pressed;
|
|
|
|
break;
|
2015-05-16 23:07:24 -04:00
|
|
|
}
|
2015-05-06 02:00:14 -04:00
|
|
|
}
|
2015-06-30 05:26:01 -04:00
|
|
|
|
|
|
|
void CPH_Android::SetAxisState(uint32 buttonId, float value)
|
|
|
|
{
|
|
|
|
switch(buttonId)
|
|
|
|
{
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_ANALOG_LEFT_X:
|
2015-06-30 05:26:01 -04:00
|
|
|
m_axisStates[PS2::CControllerInfo::ANALOG_LEFT_X] = value;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_ANALOG_LEFT_Y:
|
2015-06-30 05:26:01 -04:00
|
|
|
m_axisStates[PS2::CControllerInfo::ANALOG_LEFT_Y] = value;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_ANALOG_RIGHT_X:
|
2015-06-30 05:26:01 -04:00
|
|
|
m_axisStates[PS2::CControllerInfo::ANALOG_RIGHT_X] = value;
|
|
|
|
break;
|
2015-07-06 00:53:45 -04:00
|
|
|
case com_virtualapplications_play_InputManagerConstants_ANALOG_RIGHT_Y:
|
2015-06-30 05:26:01 -04:00
|
|
|
m_axisStates[PS2::CControllerInfo::ANALOG_RIGHT_Y] = value;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|