示例#1
0
void PSPSaveDialog::DisplaySaveList(bool canMove)
{
	lock_guard guard(paramLock);
	static int upFramesHeld = 0;
	static int downFramesHeld = 0;

	for (int displayCount = 0; displayCount < param.GetFilenameCount(); displayCount++)
	{
		int textureColor = 0xFFFFFFFF;
		auto fileInfo = param.GetFileInfo(displayCount);

		if (fileInfo.size == 0 && fileInfo.texture != NULL)
			textureColor = 0xFF777777;

		// Calc save image position on screen
		float w, h , x, b;
		float y = 97;
		if (displayCount != currentSelectedSave) {
			w = 81;
			h = 45;
			x = 58.5f;
		} else {
			w = 144;
			h = 80;
			x = 27;
			b = 1.2;
			PPGeDrawRect(x-b, y-b, x+w+b, y, CalcFadedColor(0xD0FFFFFF)); // top border
			PPGeDrawRect(x-b, y, x, y+h, CalcFadedColor(0xD0FFFFFF)); // left border
			PPGeDrawRect(x-b, y+h, x+w+b, y+h+b, CalcFadedColor(0xD0FFFFFF)); //bottom border
			PPGeDrawRect(x+w, y, x+w+b, y+h, CalcFadedColor(0xD0FFFFFF)); //right border
		}
		if (displayCount < currentSelectedSave)
			y -= 13 + 45 * (currentSelectedSave - displayCount);
		else if (displayCount > currentSelectedSave)
			y += 48 + 45 * (displayCount - currentSelectedSave);

		// Skip if it's well outside the screen.
		if (y > 472.0f || y < -200.0f)
			continue;

		int tw = 256;
		int th = 256;
		if (fileInfo.texture != NULL) {
			fileInfo.texture->SetTexture();
			tw = fileInfo.texture->Width();
			th = fileInfo.texture->Height();
			PPGeDrawImage(x, y, w, h, 0, 0, 1, 1, tw, th, textureColor);
		}
		PPGeSetDefaultTexture();
	}

	if (canMove) {
		if ( (IsButtonPressed(CTRL_UP) || IsButtonHeld(CTRL_UP, upFramesHeld)) && currentSelectedSave > 0)
			currentSelectedSave--;

		else if ( (IsButtonPressed(CTRL_DOWN) || IsButtonHeld(CTRL_DOWN, downFramesHeld)) && currentSelectedSave < (param.GetFilenameCount() - 1))
			currentSelectedSave++;
	}
}
TBool CCommandParser::IsButtonJustPressed(TRemoteInfo& aInfo, TUint16 aButton)
    {
    TBool ret(EFalse);
    if( IsButtonPressed(aInfo,aButton) && !IsButtonHeld(aInfo,aButton))
        ret = ETrue;
    return ret;    
    }
void CCommandParser::HandleButtonReport(TUint16 aButton)
    {
    TUint16 all(0);
    TRemoteInfo info;    
    info = iObserver.RemoteInfo();
    
    all = aButton & TControllerDataTypes::EWiiMoteButtonAll;
    info.iButtonsHeld = (all & info.iButtons);
    info.iButtonsReleased = ((info.iButtons | info.iButtonsHeld) & ~all);
    info.iButtons = all;            

    iObserver.UpdateRemoteInfo(info);
    
    // button held will be button with repeat flag
    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonOne))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonOne),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonTwo))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonTwo),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonDown))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonDown),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonUp))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonUp),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonLeft))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonLeft),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonRight))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonRight),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonB))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonB),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonA))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonA),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonPlus))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonPlus),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonMinus))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonMinus),TControllerDataTypes::EButtonClickRepeat);

    if(IsButtonHeld(info,TControllerDataTypes::EWiiMoteButtonHome))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonHome),TControllerDataTypes::EButtonClickRepeat);
    
    // just pressed
    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonOne))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonOne),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonTwo))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonTwo),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonDown))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonDown),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonUp))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonUp),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonLeft))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonLeft),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonRight))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonRight),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonB))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonB),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonA))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonA),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonPlus))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonPlus),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonMinus))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonMinus),TControllerDataTypes::EButtonClickJustPressed);

    if(IsButtonJustPressed(info,TControllerDataTypes::EWiiMoteButtonHome))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonHome),TControllerDataTypes::EButtonClickJustPressed);
    
    // check released buttons    
    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonOne))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonOne),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonTwo))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonTwo),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonDown))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonDown),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonUp))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonUp),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonLeft))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonLeft),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonRight))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonRight),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonB))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonB),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonA))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonA),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonPlus))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonPlus),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonMinus))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonMinus),TControllerDataTypes::EButtonClickReleased);

    if(IsButtonReleased(info,TControllerDataTypes::EWiiMoteButtonHome))
    	iObserver.SendButtonClick( FindButton(TControllerDataTypes::EWiiMoteButtonHome),TControllerDataTypes::EButtonClickReleased);
    }