示例#1
0
文件: JGE.cpp 项目: TomK14/w-menu
void JGE::PressKey(const JButton sym)
{
#if defined (WIN32) || defined (LINUX)
    if (sym == JGE_BTN_FULLSCREEN) JGEToggleFullscreen();
#endif
    keyBuffer.push(triplet(LOCAL_KEY_NONE, sym, held(sym)));
}
示例#2
0
文件: JGE.cpp 项目: TomK14/w-menu
void JGE::HoldKey_NoRepeat(const JButton sym)
{
#if defined (WIN32) || defined (LINUX)
    if (JGE_BTN_FULLSCREEN == sym) JGEToggleFullscreen();
#endif
    keyBuffer.push(triplet(LOCAL_KEY_NONE, sym, true));
    if (!held(sym))
        holds[sym] = std::numeric_limits<float>::quiet_NaN();
}
示例#3
0
文件: JGE.cpp 项目: TomK14/w-menu
void JGE::HoldKey(const JButton sym)
{
#if defined (WIN32) || defined (LINUX)
    if (JGE_BTN_FULLSCREEN == sym) JGEToggleFullscreen();
#endif
    if (!held(sym))
    {
        keyBuffer.push(triplet(LOCAL_KEY_NONE, sym, false));
        holds[sym] = REPEAT_DELAY;
    }
    else keyBuffer.push(triplet(LOCAL_KEY_NONE, sym, true));
}
示例#4
0
文件: JGE.cpp 项目: TomK14/w-menu
void JGE::PressKey(const LocalKeySym sym)
{
    const pair<keycodes_it, keycodes_it> rng = keyBinds.equal_range(sym);
    if (rng.first == rng.second)
        keyBuffer.push(triplet(sym, JGE_BTN_NONE, false));
    else for (keycodes_it it = rng.first; it != rng.second; ++it)
    {
#if defined (WIN32) || defined (LINUX)
        if (JGE_BTN_FULLSCREEN == it->second) JGEToggleFullscreen();
#endif
        keyBuffer.push(triplet(*it, held(it->second)));
    }
}
示例#5
0
文件: JGE.cpp 项目: TomK14/w-menu
void JGE::HoldKey_NoRepeat(const LocalKeySym sym)
{
    const pair<keycodes_it, keycodes_it> rng = keyBinds.equal_range(sym);
    if (rng.first == rng.second)
        keyBuffer.push(triplet(sym, JGE_BTN_NONE, false));
    else for (keycodes_it it = rng.first; it != rng.second; ++it)
    {
#if defined (WIN32) || defined (LINUX)
        if (JGE_BTN_FULLSCREEN == it->second)
        {
            JGEToggleFullscreen();
            return;
        }
#endif
        keyBuffer.push(triplet(*it, true));
        if (!held(it->second))
            holds[it->second] = std::numeric_limits<float>::quiet_NaN();
    }
}
示例#6
0
bool GuiTrigger::released(const GuiController *controller) const
{
    if((controller->chan & chan) == 0) {
        return false;
    }

    if(clicked(controller) || held(controller))
        return false;

    bool bResult = false;

    if(!controller->vpad.tpdata.touched && (btns & VPAD_TOUCH) && controller->vpadLast.tpdata.touched && !controller->vpadLast.tpdata.invalid)
    {
        bResult = true;
    }

	if(controller->vpad.btns_r & btns)
	{
	    bResult = true;
	}

	return bResult;
}
示例#7
0
MineField::MineField( QWidget* parent, const char* name )
: QScrollView( parent, name )
{
    viewport()->setBackgroundMode( NoBackground );
    setState( GameOver );

    setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Maximum ) );

    setFocusPolicy( QWidget::NoFocus );

    holdTimer = new QTimer( this );
    connect( holdTimer, SIGNAL( timeout() ), this, SLOT( held() ) );

    flagAction = NoAction;
    ignoreClick = FALSE;
    currRow = currCol = -1;
    minecount=0;
    mineguess=0;
    nonminecount=0;
    cellSize = -1;

    numRows = numCols = 0;
    mines = NULL;
}
示例#8
0
 virtual void operator()(Engine& e, Configuration &c, double temp)  { held(e,c,temp); }
示例#9
0
//  index wraps around
IMidiMsg* KeyMap::get(int index)
{
    int length = held();
    return &(events[index % length]);
}
示例#10
0
void GuiButton::update(GuiController * c)
{
	if(!c || isStateSet(STATE_DISABLED, c->chan))
		return;
	else if(parentElement && parentElement->isStateSet(STATE_DISABLED, c->chan))
		return;

    if(selectable)
    {
		if(!c->vpad.tpdata.invalid && this->isInside(c->vpadTvX, c->vpadTvY))
		{
			if(!isStateSet(STATE_SELECTED, c->chan))
			{
			    setState(STATE_SELECTED, c->chan);

				//if(this->isRumbleActive())
				//	this->rumble(t->chan);

				if(soundOver)
					soundOver->Play();

				if(effectsOver && !effects)
				{
					// initiate effects
					effects = effectsOver;
					effectAmount = effectAmountOver;
					effectTarget = effectTargetOver;
				}

                selected(this, c);
			}
		}
		else
        {
			if(isStateSet(STATE_SELECTED, c->chan))
            {
				this->clearState(STATE_SELECTED);
                deSelected(this, c);
            }

			if(effectTarget == effectTargetOver && effectAmount == effectAmountOver)
			{
				// initiate effects (in reverse)
				effects = effectsOver;
				effectAmount = -effectAmountOver;
				effectTarget = 100;
			}
        }
    }

    for(int i = 0; i < 4; i++)
    {
        if(!trigger[i])
            continue;

        // button triggers
        if(clickable)
        {
            bool isClicked = trigger[i]->clicked(c);

            if(   !clickedTrigger && isClicked
               && (trigger[i]->isClickEverywhere() || (isStateSet(STATE_SELECTED, c->chan) && trigger[i]->isSelectionClickEverywhere()) || this->isInside(c->vpadTvX, c->vpadTvY)))
            {
                if(soundClick)
                    soundClick->Play();

                clickedTrigger = trigger[i];

                if(!isStateSet(STATE_CLICKED, c->chan))
                    setState(STATE_CLICKED, c->chan);

                clicked(this, c, trigger[i]);
            }
            else if(isStateSet(STATE_CLICKED, c->chan) && (clickedTrigger == trigger[i]) && !isStateSet(STATE_HELD, c->chan) && !trigger[i]->held(c) && (!isClicked || trigger[i]->released(c)))
            {
                clickedTrigger = NULL;
                clearState(STATE_CLICKED, c->chan);
                released(this, c, trigger[i]);
            }
        }

        if(holdable)
        {
            bool isHeld = trigger[i]->held(c);

            if(   (!heldTrigger || heldTrigger == trigger[i]) && isHeld
               && (trigger[i]->isHoldEverywhere() || (isStateSet(STATE_SELECTED, c->chan) && trigger[i]->isSelectionClickEverywhere()) || this->isInside(c->vpadTvX, c->vpadTvY)))
            {
                heldTrigger = trigger[i];

                if(!isStateSet(STATE_HELD, c->chan))
                    setState(STATE_HELD, c->chan);

                held(this, c, trigger[i]);
            }
            else if(isStateSet(STATE_HELD, c->chan) && (heldTrigger == trigger[i]) && (!isHeld || trigger[i]->released(c)))
            {
                //! click is removed at this point and converted to held
                if(clickedTrigger == trigger[i])
                {
                    clickedTrigger = NULL;
                    clearState(STATE_CLICKED, c->chan);
                }
                heldTrigger = NULL;
                clearState(STATE_HELD, c->chan);
                released(this, c, trigger[i]);
            }
        }
    }
}