2012-11-15 00:39:56 +01:00
|
|
|
#include "stdafx.h"
|
2014-06-02 19:27:24 +02:00
|
|
|
#include "Emu/ConLog.h"
|
|
|
|
|
#include "rpcs3/Ini.h"
|
|
|
|
|
#include "rpcs3.h"
|
2012-11-15 00:39:56 +01:00
|
|
|
#include "Pad.h"
|
|
|
|
|
#include "Null/NullPadHandler.h"
|
|
|
|
|
#include "Windows/WindowsPadHandler.h"
|
2014-05-24 21:05:00 +02:00
|
|
|
#if defined(_WIN32)
|
|
|
|
|
#include "XInput/XInputPadHandler.h"
|
|
|
|
|
#endif
|
2012-11-15 00:39:56 +01:00
|
|
|
|
|
|
|
|
PadManager::PadManager()
|
2013-08-26 16:18:59 +02:00
|
|
|
: m_pad_handler(nullptr)
|
2012-11-15 00:39:56 +01:00
|
|
|
, m_inited(false)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PadManager::~PadManager()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PadManager::Init(const u32 max_connect)
|
|
|
|
|
{
|
2014-04-01 02:02:27 +02:00
|
|
|
if(m_inited)
|
|
|
|
|
return;
|
2012-11-15 00:39:56 +01:00
|
|
|
|
2014-04-01 02:02:27 +02:00
|
|
|
// NOTE: Change these to std::make_unique assignments when C++14 is available.
|
2012-11-15 00:39:56 +01:00
|
|
|
switch(Ini.PadHandlerMode.GetValue())
|
|
|
|
|
{
|
2014-04-01 02:02:27 +02:00
|
|
|
case 1:
|
|
|
|
|
m_pad_handler.reset(new WindowsPadHandler());
|
|
|
|
|
break;
|
2012-11-15 00:39:56 +01:00
|
|
|
|
2014-05-24 21:05:00 +02:00
|
|
|
#if defined(_WIN32)
|
|
|
|
|
case 2:
|
|
|
|
|
m_pad_handler.reset(new XInputPadHandler());
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
2012-11-15 00:39:56 +01:00
|
|
|
default:
|
2014-04-01 02:02:27 +02:00
|
|
|
case 0:
|
|
|
|
|
m_pad_handler.reset(new NullPadHandler());
|
|
|
|
|
break;
|
2012-11-15 00:39:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_pad_handler->Init(max_connect);
|
|
|
|
|
m_inited = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PadManager::Close()
|
|
|
|
|
{
|
|
|
|
|
if(m_pad_handler) m_pad_handler->Close();
|
2013-08-26 16:18:59 +02:00
|
|
|
m_pad_handler = nullptr;
|
2012-11-15 00:39:56 +01:00
|
|
|
|
|
|
|
|
m_inited = false;
|
|
|
|
|
}
|