mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-10-17 11:59:28 +00:00
Preparations to get rid of DSQ::inputMode -- Pass device to action() methods.
This commit is contained in:
parent
e8a4b58e80
commit
9d80077754
28 changed files with 80 additions and 91 deletions
|
@ -19,6 +19,15 @@ See the GNU General Public License for more details.
|
|||
#include "Core.h"
|
||||
|
||||
|
||||
InputDevice getDeviceForActionbutton(int k)
|
||||
{
|
||||
if(k <= KEY_MAXARRAY)
|
||||
return INPUT_KEYBOARD;
|
||||
if(k < MOUSE_BUTTON_EXTRA_END)
|
||||
return INPUT_MOUSE;
|
||||
return INPUT_JOYSTICK;
|
||||
}
|
||||
|
||||
ActionMapper::ActionMapper()
|
||||
{
|
||||
cleared = false;
|
||||
|
@ -167,9 +176,7 @@ void ActionMapper::onUpdate (float dt)
|
|||
|
||||
for (ActionDataSet::iterator i = actionData.begin(); i != actionData.end(); ++i)
|
||||
{
|
||||
ButtonList::iterator j;
|
||||
j = i->buttonList.begin();
|
||||
for (; j != i->buttonList.end(); j++)
|
||||
for (ButtonList::iterator j = i->buttonList.begin(); j != i->buttonList.end(); j++)
|
||||
{
|
||||
const int k = (*j);
|
||||
const ActionData *ad = &(*i);
|
||||
|
@ -189,7 +196,7 @@ void ActionMapper::onUpdate (float dt)
|
|||
}
|
||||
else
|
||||
{
|
||||
action(ad->id, keyState, ad->source);
|
||||
action(ad->id, keyState, ad->source, getDeviceForActionbutton(k));
|
||||
}
|
||||
if (core->loopDone) goto out;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
#include "Base.h"
|
||||
|
||||
enum InputDevice
|
||||
{
|
||||
INPUT_NODEVICE = 0,
|
||||
INPUT_MOUSE,
|
||||
INPUT_JOYSTICK,
|
||||
INPUT_KEYBOARD
|
||||
};
|
||||
|
||||
InputDevice getDeviceForActionbutton(int k);
|
||||
|
||||
class Event;
|
||||
class ActionMapper;
|
||||
|
||||
|
@ -57,7 +67,7 @@ public:
|
|||
void addAction(int actionID, int k, int source);
|
||||
|
||||
bool isActing(int actionID, int source);
|
||||
virtual void action(int actionID, int state, int source) = 0;
|
||||
virtual void action(int actionID, int state, int source, InputDevice device) = 0;
|
||||
|
||||
|
||||
void clearActions();
|
||||
|
|
|
@ -153,15 +153,9 @@ void ActionSet::importAction(ActionMapper *mapper, const std::string &name, int
|
|||
const ActionInput *actionInput = &inputSet[i];
|
||||
if (actionInput->name == name)
|
||||
{
|
||||
for (int i = 0; i < INP_MSESIZE; i++)
|
||||
if (actionInput->mse[i])
|
||||
mapper->addAction(actionID, actionInput->mse[i], sourceID);
|
||||
for (int i = 0; i < INP_KEYSIZE; i++)
|
||||
if (actionInput->key[i])
|
||||
mapper->addAction(actionID, actionInput->key[i], sourceID);
|
||||
for (int i = 0; i < INP_JOYSIZE; i++)
|
||||
if (actionInput->joy[i])
|
||||
mapper->addAction(actionID, actionInput->joy[i], sourceID);
|
||||
for (int i = 0; i < INP_COMBINED_SIZE; i++)
|
||||
if (actionInput->all[i])
|
||||
mapper->addAction(actionID, actionInput->all[i], sourceID);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -177,16 +171,9 @@ void ActionSet::importAction(ActionMapper *mapper, const std::string &name, Even
|
|||
const ActionInput *actionInput = &inputSet[i];
|
||||
if (actionInput->name == name)
|
||||
{
|
||||
for (int i = 0; i < INP_MSESIZE; i++)
|
||||
if (actionInput->mse[i])
|
||||
mapper->addAction(event, actionInput->mse[i], state);
|
||||
for (int i = 0; i < INP_KEYSIZE; i++)
|
||||
if (actionInput->key[i])
|
||||
mapper->addAction(event, actionInput->key[i], state);
|
||||
for (int i = 0; i < INP_JOYSIZE; i++)
|
||||
if (actionInput->joy[i])
|
||||
mapper->addAction(event, actionInput->joy[i], state);
|
||||
|
||||
for (int i = 0; i < INP_COMBINED_SIZE; i++)
|
||||
if (actionInput->all[i])
|
||||
mapper->addAction(event, actionInput->all[i], state);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "Core.h"
|
||||
#include "ActionSet.h"
|
||||
|
||||
|
||||
ActionButtonStatus::ActionButtonStatus()
|
||||
: joystickID(-1)
|
||||
{
|
||||
|
|
|
@ -28,7 +28,6 @@ enum ActionButtonType
|
|||
ACTION_BUTTON_ENUM_SIZE = JOY_AXIS_END_NEG
|
||||
};
|
||||
|
||||
|
||||
class ActionButtonStatus
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -261,7 +261,7 @@ public:
|
|||
void setMouseConstraint(bool on);
|
||||
void setMouseConstraintCircle(const Vector& pos, float mouseCircle);
|
||||
|
||||
virtual void action(int id, int state, int source){}
|
||||
virtual void action(int id, int state, int source, InputDevice device){}
|
||||
|
||||
bool exists(const std::string &file);
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ void EventPtr::call()
|
|||
}
|
||||
if (actionMapperCallback)
|
||||
{
|
||||
actionMapperCallback->action(actionValue, stateToCall, -1);
|
||||
actionMapperCallback->action(actionValue, stateToCall, -1, INPUT_NODEVICE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ public:
|
|||
void removeRenderObject(RenderObject *renderObject);
|
||||
std::string name;
|
||||
|
||||
virtual void action(int actionID, int state, int source) {}
|
||||
virtual void action(int actionID, int state, int source, InputDevice device) {}
|
||||
|
||||
protected:
|
||||
void registerState(StateObject *sb, const std::string &name);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue