本文整理汇总了C++中JoyDPad类的典型用法代码示例。如果您正苦于以下问题:C++ JoyDPad类的具体用法?C++ JoyDPad怎么用?C++ JoyDPad使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了JoyDPad类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: propogateSetDPadNameChange
void SetJoystick::propogateSetDPadNameChange()
{
JoyDPad *dpad = static_cast<JoyDPad*>(sender());
disconnect(dpad, SIGNAL(dpadNameChanged()), this, SLOT(propogateSetDPadButtonNameChange()));
emit setDPadNameChange(dpad->getIndex());
connect(dpad, SIGNAL(dpadNameChanged()), this, SLOT(propogateSetDPadButtonNameChange()));
}
示例2: iterAxes
/**
* @brief Perform a release of all elements of a set. Stick and vdpad
* releases will be handled by the associated button or axis.
*/
void SetJoystick::release()
{
QHashIterator<int, JoyAxis*> iterAxes(axes);
while (iterAxes.hasNext())
{
JoyAxis *axis = iterAxes.next().value();
axis->clearPendingEvent();
axis->joyEvent(axis->getCurrentThrottledDeadValue(), true);
}
QHashIterator<int, JoyDPad*> iterDPads(hats);
while (iterDPads.hasNext())
{
JoyDPad *dpad = iterDPads.next().value();
dpad->clearPendingEvent();
dpad->joyEvent(0, true);
}
QHashIterator<int, JoyButton*> iterButtons(buttons);
while (iterButtons.hasNext())
{
JoyButton *button = iterButtons.next().value();
button->clearPendingEvent();
button->joyEvent(false, true);
}
}
示例3: getActiveSetJoystick
void InputDevice::updateSetDPadNames(int dpadIndex)
{
JoyDPad *dpad = getActiveSetJoystick()->getJoyDPad(dpadIndex);
if (dpad)
{
setDPadName(dpadIndex, dpad->getDpadName());
}
}
示例4: stickIter
void SetJoystick::copyAssignments(SetJoystick *destSet)
{
for (int i=0; i < device->getNumberAxes(); i++)
{
JoyAxis *sourceAxis = axes.value(i);
JoyAxis *destAxis = destSet->axes.value(i);
if (sourceAxis && destAxis)
{
sourceAxis->copyAssignments(destAxis);
}
}
QHashIterator<int, JoyControlStick*> stickIter(sticks);
while (stickIter.hasNext())
{
stickIter.next();
int index = stickIter.key();
JoyControlStick *sourceStick = stickIter.value();
JoyControlStick *destStick = destSet->sticks.value(index);
if (sourceStick && destStick)
{
sourceStick->copyAssignments(destStick);
}
}
for (int i=0; i < device->getNumberHats(); i++)
{
JoyDPad *sourceDPad = hats.value(i);
JoyDPad *destDPad = destSet->hats.value(i);
if (sourceDPad && destDPad)
{
sourceDPad->copyAssignments(destDPad);
}
}
QHashIterator<int, VDPad*> vdpadIter(vdpads);
while (vdpadIter.hasNext())
{
vdpadIter.next();
int index = vdpadIter.key();
VDPad *sourceVDpad = vdpadIter.value();
VDPad *destVDPad = destSet->vdpads.value(index);
if (sourceVDpad && destVDPad)
{
sourceVDpad->copyAssignments(destVDPad);
}
}
for (int i=0; i < device->getNumberButtons(); i++)
{
JoyButton *sourceButton = buttons.value(i);
JoyButton *destButton = destSet->buttons.value(i);
if (sourceButton && destButton)
{
sourceButton->copyAssignments(destButton);
}
}
}
示例5: propogateSetDPadButtonRelease
void SetJoystick::propogateSetDPadButtonRelease(int button)
{
JoyDPadButton *dpadButton = static_cast<JoyDPadButton*>(sender());
JoyDPad *dpad = dpadButton->getDPad();
if (!dpadButton->getIgnoreEventState())
{
emit setDPadButtonRelease(index, dpad->getIndex(), button);
}
}
示例6: iter
bool SetJoystick::isSetEmpty()
{
bool result = true;
QHashIterator<int, JoyButton*> iter(buttons);
while (iter.hasNext() && result)
{
JoyButton *button = iter.next().value();
if (!button->isDefault())
{
result = false;
}
}
QHashIterator<int, JoyAxis*> iter2(axes);
while (iter2.hasNext() && result)
{
JoyAxis *axis = iter2.next().value();
if (!axis->isDefault())
{
result = false;
}
}
QHashIterator<int, JoyDPad*> iter3(hats);
while (iter3.hasNext() && result)
{
JoyDPad *dpad = iter3.next().value();
if (!dpad->isDefault())
{
result = false;
}
}
QHashIterator<int, JoyControlStick*> iter4(sticks);
while (iter4.hasNext() && result)
{
JoyControlStick *stick = iter4.next().value();
if (!stick->isDefault())
{
result = false;
}
}
QHashIterator<int, VDPad*> iter5(vdpads);
while (iter5.hasNext() && result)
{
VDPad *vdpad = iter5.next().value();
if (!vdpad->isDefault())
{
result = false;
}
}
return result;
}
示例7: getJoyStick
void SetJoystick::writeConfig(QXmlStreamWriter *xml)
{
if (!isSetEmpty())
{
xml->writeStartElement("set");
xml->writeAttribute("index", QString::number(index+1));
if (!name.isEmpty())
{
xml->writeTextElement("name", name);
}
for (int i=0; i < getNumberSticks(); i++)
{
JoyControlStick *stick = getJoyStick(i);
stick->writeConfig(xml);
}
for (int i=0; i < getNumberVDPads(); i++)
{
VDPad *vdpad = getVDPad(i);
if (vdpad)
{
vdpad->writeConfig(xml);
}
}
for (int i=0; i < getNumberAxes(); i++)
{
JoyAxis *axis = getJoyAxis(i);
if (!axis->isPartControlStick() && axis->hasControlOfButtons())
{
axis->writeConfig(xml);
}
}
for (int i=0; i < getNumberHats(); i++)
{
JoyDPad *dpad = getJoyDPad(i);
dpad->writeConfig(xml);
}
for (int i=0; i < getNumberButtons(); i++)
{
JoyButton *button = getJoyButton(i);
if (button && !button->isPartVDPad())
{
button->writeConfig(xml);
}
}
xml->writeEndElement();
}
}
示例8: iter
void InputDevice::setDPadName(int dpadIndex, QString tempName)
{
QHashIterator<int, SetJoystick*> iter(joystick_sets);
while (iter.hasNext())
{
SetJoystick *tempSet = iter.next().value();
disconnect(tempSet, SIGNAL(setDPadNameChange(int)), this, SLOT(updateSetDPadNames(int)));
JoyDPad *dpad = tempSet->getJoyDPad(dpadIndex);
if (dpad)
{
dpad->setDPadName(tempName);
}
connect(tempSet, SIGNAL(setDPadNameChange(int)), this, SLOT(updateSetDPadNames(int)));
}
}
示例9: while
void InputDaemon::secondInputPass(QQueue<SDL_Event> *sdlEventQueue)
{
QHash<SDL_JoystickID, InputDevice*> activeDevices;
while (!sdlEventQueue->isEmpty())
{
SDL_Event event = sdlEventQueue->dequeue();
switch (event.type)
{
//qDebug() << QTime::currentTime() << " :";
case SDL_JOYBUTTONDOWN:
case SDL_JOYBUTTONUP:
{
#ifdef USE_SDL_2
InputDevice *joy = trackjoysticks.value(event.jbutton.which);
#else
InputDevice *joy = joysticks->value(event.jbutton.which);
#endif
if (joy)
{
SetJoystick* set = joy->getActiveSetJoystick();
JoyButton *button = set->getJoyButton(event.jbutton.button);
if (button)
{
//button->joyEvent(event.type == SDL_JOYBUTTONDOWN ? true : false);
button->queuePendingEvent(event.type == SDL_JOYBUTTONDOWN ? true : false);
if (!activeDevices.contains(event.jbutton.which))
{
activeDevices.insert(event.jbutton.which, joy);
}
}
}
#ifdef USE_SDL_2
else if (trackcontrollers.contains(event.jbutton.which))
{
GameController *gamepad = trackcontrollers.value(event.jbutton.which);
gamepad->rawButtonEvent(event.jbutton.button, event.type == SDL_JOYBUTTONDOWN ? true : false);
}
#endif
break;
}
case SDL_JOYAXISMOTION:
{
#ifdef USE_SDL_2
InputDevice *joy = trackjoysticks.value(event.jaxis.which);
#else
InputDevice *joy = joysticks->value(event.jaxis.which);
#endif
if (joy)
{
SetJoystick* set = joy->getActiveSetJoystick();
JoyAxis *axis = set->getJoyAxis(event.jaxis.axis);
if (axis)
{
//axis->joyEvent(event.jaxis.value);
axis->queuePendingEvent(event.jaxis.value);
if (!activeDevices.contains(event.jaxis.which))
{
activeDevices.insert(event.jaxis.which, joy);
}
}
joy->rawAxisEvent(event.jaxis.which, event.jaxis.value);
}
#ifdef USE_SDL_2
else if (trackcontrollers.contains(event.jaxis.which))
{
GameController *gamepad = trackcontrollers.value(event.jaxis.which);
gamepad->rawAxisEvent(event.jaxis.axis, event.jaxis.value);
}
#endif
break;
}
case SDL_JOYHATMOTION:
{
#ifdef USE_SDL_2
InputDevice *joy = trackjoysticks.value(event.jhat.which);
#else
InputDevice *joy = joysticks->value(event.jhat.which);
#endif
if (joy)
{
SetJoystick* set = joy->getActiveSetJoystick();
JoyDPad *dpad = set->getJoyDPad(event.jhat.hat);
if (dpad)
{
//dpad->joyEvent(event.jhat.value);
dpad->joyEvent(event.jhat.value);
if (!activeDevices.contains(event.jhat.which))
{
activeDevices.insert(event.jhat.which, joy);
//.........这里部分代码省略.........
示例10: while
void SetJoystick::readConfig(QXmlStreamReader *xml)
{
if (xml->isStartElement() && xml->name() == "set")
{
//reset();
xml->readNextStartElement();
while (!xml->atEnd() && (!xml->isEndElement() && xml->name() != "set"))
{
if (xml->name() == "button" && xml->isStartElement())
{
int index = xml->attributes().value("index").toString().toInt();
JoyButton *button = getJoyButton(index-1);
if (button)
{
button->readConfig(xml);
}
else
{
xml->skipCurrentElement();
}
}
else if (xml->name() == "axis" && xml->isStartElement())
{
int index = xml->attributes().value("index").toString().toInt();
JoyAxis *axis = getJoyAxis(index-1);
if (axis)
{
axis->readConfig(xml);
}
else
{
xml->skipCurrentElement();
}
}
else if (xml->name() == "dpad" && xml->isStartElement())
{
int index = xml->attributes().value("index").toString().toInt();
JoyDPad *dpad = getJoyDPad(index-1);
if (dpad)
{
dpad->readConfig(xml);
}
else
{
xml->skipCurrentElement();
}
}
else if (xml->name() == "stick" && xml->isStartElement())
{
int stickIndex = xml->attributes().value("index").toString().toInt();
if (stickIndex > 0)
{
stickIndex -= 1;
JoyControlStick *stick = getJoyStick(stickIndex);
if (stick)
{
stick->readConfig(xml);
}
else
{
xml->skipCurrentElement();
}
}
else
{
xml->skipCurrentElement();
}
}
else if (xml->name() == "vdpad" && xml->isStartElement())
{
int index = xml->attributes().value("index").toString().toInt();
VDPad *vdpad = getVDPad(index-1);
if (vdpad)
{
vdpad->readConfig(xml);
}
else
{
xml->skipCurrentElement();
}
}
else
{
// If none of the above, skip the element
xml->skipCurrentElement();
}
xml->readNextStartElement();
}
}
}
示例11: if
void InputDevice::setActiveSetNumber(int index)
{
if ((index >= 0 && index < NUMBER_JOYSETS) && (index != active_set))
{
QList<bool> buttonstates;
QList<int> axesstates;
QList<int> dpadstates;
// Grab current states for all elements in old set
SetJoystick *current_set = joystick_sets.value(active_set);
SetJoystick *old_set = current_set;
for (int i = 0; i < current_set->getNumberButtons(); i++)
{
JoyButton *button = current_set->getJoyButton(i);
buttonstates.append(button->getButtonState());
}
for (int i = 0; i < current_set->getNumberAxes(); i++)
{
JoyAxis *axis = current_set->getJoyAxis(i);
axesstates.append(axis->getCurrentRawValue());
}
for (int i = 0; i < current_set->getNumberHats(); i++)
{
JoyDPad *dpad = current_set->getJoyDPad(i);
dpadstates.append(dpad->getCurrentDirection());
}
// Release all current pressed elements and change set number
joystick_sets.value(active_set)->release();
active_set = index;
// Activate all buttons in the switched set
current_set = joystick_sets.value(active_set);
for (int i = 0; i < current_set->getNumberButtons(); i++)
{
bool value = buttonstates.at(i);
bool tempignore = true;
JoyButton *button = current_set->getJoyButton(i);
JoyButton *oldButton = old_set->getJoyButton(i);
if (button->getChangeSetCondition() == JoyButton::SetChangeWhileHeld)
{
if (value)
{
if (oldButton->getChangeSetCondition() == JoyButton::SetChangeWhileHeld && oldButton->getWhileHeldStatus())
{
// Button from old set involved in a while held set
// change. Carry over to new set button to ensure
// set changes are done in the proper order.
button->setWhileHeldStatus(true);
}
else if (!button->getWhileHeldStatus())
{
// Ensure that set change events are performed if needed.
tempignore = false;
}
}
else
{
// Ensure that set change events are performed if needed.
button->setWhileHeldStatus(false);
//tempignore = false;
}
}
button->joyEvent(value, tempignore);
}
// Activate all axis buttons in the switched set
for (int i = 0; i < current_set->getNumberAxes(); i++)
{
int value = axesstates.at(i);
bool tempignore = true;
JoyAxis *axis = current_set->getJoyAxis(i);
JoyAxisButton *oldButton = old_set->getJoyAxis(i)->getAxisButtonByValue(value);
JoyAxisButton *button = axis->getAxisButtonByValue(value);
if (button && oldButton)
{
if (button->getChangeSetCondition() == JoyButton::SetChangeWhileHeld)
{
if (oldButton->getChangeSetCondition() == JoyButton::SetChangeWhileHeld && oldButton->getWhileHeldStatus())
{
// Button from old set involved in a while held set
// change. Carry over to new set button to ensure
// set changes are done in the proper order.
button->setWhileHeldStatus(true);
}
else if (!button->getWhileHeldStatus())
{
// Ensure that set change events are performed if needed.
tempignore = false;
}
}
}
else if (!button)
{
// Ensure that set change events are performed if needed.
axis->getPAxisButton()->setWhileHeldStatus(false);
//.........这里部分代码省略.........
示例12: getSDLName
void InputDevice::writeConfig(QXmlStreamWriter *xml)
{
xml->writeStartElement(getXmlName());
xml->writeAttribute("configversion", QString::number(PadderCommon::LATESTCONFIGFILEVERSION));
xml->writeAttribute("appversion", PadderCommon::programVersion);
xml->writeComment("The SDL name for a joystick is included for informational purposes only.");
xml->writeTextElement("sdlname", getSDLName());
for (int i=0; i < getNumberSticks(); i++)
{
JoyControlStick *stick = getActiveSetJoystick()->getJoyStick(i);
xml->writeStartElement("stickAxisAssociation");
xml->writeAttribute("index", QString::number(stick->getRealJoyIndex()));
xml->writeAttribute("xAxis", QString::number(stick->getAxisX()->getRealJoyIndex()));
xml->writeAttribute("yAxis", QString::number(stick->getAxisY()->getRealJoyIndex()));
xml->writeEndElement();
}
for (int i=0; i < getNumberVDPads(); i++)
{
VDPad *vdpad = getActiveSetJoystick()->getVDPad(i);
xml->writeStartElement("vdpadButtonAssociations");
xml->writeAttribute("index", QString::number(vdpad->getRealJoyNumber()));
JoyButton *button = vdpad->getVButton(JoyDPadButton::DpadUp);
if (button)
{
xml->writeStartElement("vdpadButtonAssociation");
if (typeid(*button) == typeid(JoyAxisButton))
{
JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button);
xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex()));
xml->writeAttribute("button", QString::number(button->getJoyNumber()));
}
else
{
xml->writeAttribute("axis", QString::number(0));
xml->writeAttribute("button", QString::number(button->getRealJoyNumber()));
}
xml->writeAttribute("direction", QString::number(JoyDPadButton::DpadUp));
xml->writeEndElement();
}
button = vdpad->getVButton(JoyDPadButton::DpadDown);
if (button)
{
xml->writeStartElement("vdpadButtonAssociation");
if (typeid(*button) == typeid(JoyAxisButton))
{
JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button);
xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex()));
xml->writeAttribute("button", QString::number(button->getJoyNumber()));
}
else
{
xml->writeAttribute("axis", QString::number(0));
xml->writeAttribute("button", QString::number(button->getRealJoyNumber()));
}
xml->writeAttribute("direction", QString::number(JoyDPadButton::DpadDown));
xml->writeEndElement();
}
button = vdpad->getVButton(JoyDPadButton::DpadLeft);
if (button)
{
xml->writeStartElement("vdpadButtonAssociation");
if (typeid(*button) == typeid(JoyAxisButton))
{
JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button);
xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex()));
xml->writeAttribute("button", QString::number(button->getJoyNumber()));
}
else
{
xml->writeAttribute("axis", QString::number(0));
xml->writeAttribute("button", QString::number(button->getRealJoyNumber()));
}
xml->writeAttribute("direction", QString::number(JoyDPadButton::DpadLeft));
xml->writeEndElement();
}
button = vdpad->getVButton(JoyDPadButton::DpadRight);
if (button)
{
xml->writeStartElement("vdpadButtonAssociation");
if (typeid(*button) == typeid(JoyAxisButton))
{
JoyAxisButton *axisbutton = static_cast<JoyAxisButton*>(button);
xml->writeAttribute("axis", QString::number(axisbutton->getAxis()->getRealJoyIndex()));
xml->writeAttribute("button", QString::number(button->getJoyNumber()));
}
else
//.........这里部分代码省略.........
示例13: QObject
//.........这里部分代码省略.........
break;
}
case SDL_JOYAXISMOTION:
{
#ifdef USE_SDL_2
InputDevice *joy = trackjoysticks.value(event.jaxis.which);
#else
InputDevice *joy = joysticks->value(event.jaxis.which);
#endif
if (joy)
{
SetJoystick* set = joy->getActiveSetJoystick();
JoyAxis *axis = set->getJoyAxis(event.jaxis.axis);
if (axis)
{
axis->joyEvent(event.jaxis.value);
}
}
break;
}
case SDL_JOYHATMOTION:
{
#ifdef USE_SDL_2
InputDevice *joy = trackjoysticks.value(event.jhat.which);
#else
InputDevice *joy = joysticks->value(event.jhat.which);
#endif
if (joy)
{
SetJoystick* set = joy->getActiveSetJoystick();
JoyDPad *dpad = set->getJoyDPad(event.jhat.hat);
if (dpad)
{
dpad->joyEvent(event.jhat.value);
}
}
break;
}
#ifdef USE_SDL_2
case SDL_CONTROLLERAXISMOTION:
{
InputDevice *joy = trackcontrollers.value(event.caxis.which);
if (joy)
{
SetJoystick* set = joy->getActiveSetJoystick();
JoyAxis *axis = set->getJoyAxis(event.caxis.axis);
if (axis)
{
axis->joyEvent(event.caxis.value);
}
}
break;
}
case SDL_CONTROLLERBUTTONDOWN:
case SDL_CONTROLLERBUTTONUP:
{
InputDevice *joy = trackcontrollers.value(event.cbutton.which);
if (joy)
{
SetJoystick* set = joy->getActiveSetJoystick();