mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Add a Androind ControllerInterface class for allowing input in a non-hacky way. Add a default GCPad.ini file so it actually works.
This commit is contained in:
@ -0,0 +1,67 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Android.h"
|
||||
|
||||
namespace ciface
|
||||
{
|
||||
|
||||
namespace Android
|
||||
{
|
||||
|
||||
void Init( std::vector<ControllerInterface::Device*>& devices )
|
||||
{
|
||||
devices.push_back(new Touchscreen());
|
||||
}
|
||||
|
||||
// Touchscreens and stuff
|
||||
std::string Touchscreen::GetName() const
|
||||
{
|
||||
return "Touchscreen";
|
||||
}
|
||||
|
||||
std::string Touchscreen::GetSource() const
|
||||
{
|
||||
return "Android";
|
||||
}
|
||||
|
||||
int Touchscreen::GetId() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Touchscreen::Touchscreen()
|
||||
{
|
||||
AddInput(new Button(ButtonManager::BUTTON_A));
|
||||
AddInput(new Button(ButtonManager::BUTTON_B));
|
||||
AddInput(new Button(ButtonManager::BUTTON_START));
|
||||
}
|
||||
// Buttons and stuff
|
||||
|
||||
std::string Touchscreen::Button::GetName() const
|
||||
{
|
||||
std::ostringstream ss;
|
||||
ss << "Button " << (int)m_index;
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
ControlState Touchscreen::Button::GetState() const
|
||||
{
|
||||
return ButtonManager::GetButtonPressed(m_index);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
// Copyright (C) 2003 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
#ifndef _CIFACE_ANDROID_H_
|
||||
#define _CIFACE_ANDROID_H_
|
||||
|
||||
#include "../ControllerInterface.h"
|
||||
#include "Android/ButtonManager.h"
|
||||
|
||||
namespace ciface
|
||||
{
|
||||
namespace Android
|
||||
{
|
||||
|
||||
void Init( std::vector<ControllerInterface::Device*>& devices );
|
||||
class Touchscreen : public ControllerInterface::Device
|
||||
{
|
||||
private:
|
||||
class Button : public Input
|
||||
{
|
||||
public:
|
||||
std::string GetName() const;
|
||||
Button(ButtonManager::ButtonType index) : m_index(index) {}
|
||||
ControlState GetState() const;
|
||||
private:
|
||||
const ButtonManager::ButtonType m_index;
|
||||
};
|
||||
|
||||
public:
|
||||
bool UpdateInput() { return true; }
|
||||
bool UpdateOutput() { return true; }
|
||||
|
||||
Touchscreen();
|
||||
~Touchscreen() {}
|
||||
|
||||
std::string GetName() const;
|
||||
int GetId() const;
|
||||
std::string GetSource() const;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
@ -15,6 +15,9 @@
|
||||
#ifdef CIFACE_USE_SDL
|
||||
#include "SDL/SDL.h"
|
||||
#endif
|
||||
#ifdef CIFACE_USE_ANDROID
|
||||
#include "Android/Android.h"
|
||||
#endif
|
||||
|
||||
#include "Thread.h"
|
||||
|
||||
@ -50,6 +53,9 @@ void ControllerInterface::Initialize()
|
||||
#ifdef CIFACE_USE_SDL
|
||||
ciface::SDL::Init(m_devices);
|
||||
#endif
|
||||
#ifdef CIFACE_USE_ANDROID
|
||||
ciface::Android::Init(m_devices);
|
||||
#endif
|
||||
|
||||
m_is_init = true;
|
||||
}
|
||||
@ -100,6 +106,9 @@ void ControllerInterface::Shutdown()
|
||||
// TODO: there seems to be some sort of memory leak with SDL, quit isn't freeing everything up
|
||||
SDL_Quit();
|
||||
#endif
|
||||
#ifdef CIFACE_USE_ANDROID
|
||||
// nothing needed
|
||||
#endif
|
||||
|
||||
m_is_init = false;
|
||||
}
|
||||
|
@ -29,7 +29,10 @@
|
||||
#if defined(__APPLE__)
|
||||
#define CIFACE_USE_OSX
|
||||
#endif
|
||||
|
||||
#ifdef ANDROID
|
||||
#define CIFACE_USE_ANDROID
|
||||
#endif
|
||||
|
||||
// idk in case i wanted to change it to double or somethin, idk what's best
|
||||
typedef float ControlState;
|
||||
|
||||
|
Reference in New Issue
Block a user