示例#1
0
GameLauncherMenu::GameLauncherMenu(int gameIdx)
    : GuiFrame(0,0)
    , gameIdx(gameIdx)
    , bgImage(500, 500, (GX2Color){0, 0, 0, 255})
    , bgBlur(1280, 720, (GX2Color){0, 0, 0, 255})
    , noCover(Resources::GetFile("noCover.png"), Resources::GetFileSize("noCover.png"))
    , buttonClickSound(Resources::GetSound("settings_click_2.mp3"))
    , quitImageData(Resources::GetImageData("quitButton.png"))
    , quitImage(quitImageData)
    , quitSelectedImageData(Resources::GetImageData("quitButtonSelected.png"))
    , quitSelectedImage(quitSelectedImageData)
    , quitButton(quitImage.getWidth(), quitImage.getHeight())
    , okImageData(Resources::GetImageData("emptyRoundButton.png"))
    , okImage(okImageData)
    , okSelectedImageData(Resources::GetImageData("emptyRoundButtonSelected.png"))
    , okSelectedImage(okSelectedImageData)
    , okButton(okImage.getWidth(), okImage.getHeight())
    , okText("O.K.", 46, glm::vec4(0.1f, 0.1f, 0.1f, 1.0f))
    , titleImageData(Resources::GetImageData("settingsTitle.png"))
    , titleImage(titleImageData)
    , extraSaveText(tr("Extra Save:"), 40, glm::vec4(0.8f, 0.8f, 0.8f, 1.0f))
    , dlcEnableText(tr("Enable DLC Support:"), 40, glm::vec4(0.8f, 0.8f, 0.8f, 1.0f))
    , frameImageData(Resources::GetImageData("gameSettingsFrame.png"))
    , frameImage(frameImageData)
    , touchTrigger(GuiTrigger::CHANNEL_1, GuiTrigger::VPAD_TOUCH)
    , wpadTouchTrigger(GuiTrigger::CHANNEL_2 | GuiTrigger::CHANNEL_3 | GuiTrigger::CHANNEL_4 | GuiTrigger::CHANNEL_5, GuiTrigger::BUTTON_A)
    , buttonATrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_A, true)
    , buttonBTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_B, true)
    , buttonLTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_L, true)
    , buttonRTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_R, true)
    , buttonLeftTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_LEFT | GuiTrigger::STICK_L_LEFT, true)
    , buttonRightTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_RIGHT | GuiTrigger::STICK_L_RIGHT, true)
    , buttonUpTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_UP | GuiTrigger::STICK_L_UP, true)
    , buttonDownTrigger(GuiTrigger::CHANNEL_ALL, GuiTrigger::BUTTON_DOWN | GuiTrigger::STICK_L_DOWN, true)
    , leftArrowImageData(Resources::GetImageData("leftArrow.png"))
    , rightArrowImageData(Resources::GetImageData("rightArrow.png"))
    , leftArrowImage(leftArrowImageData)
    , rightArrowImage(rightArrowImageData)
    , leftArrowButton(leftArrowImage.getWidth(), leftArrowImage.getHeight())
    , rightArrowButton(rightArrowImage.getWidth(), rightArrowImage.getHeight())
    , DPADButtons(0,0)
    , extraSaveBox(false)
    , dlcEnableBox(false)
    , progresswindow("")
    , pathSelectBox(tr("Update Folder"),NULL)
    , saveModeSelectBox(tr("Save Mode"),NULL)
    , launchModeSelectBox(tr("Launch Mode"),NULL)
    , bgUsedImageDataAsync(NULL)
    , bgNewImageDataAsync(NULL)
    , bgFadingImageDataAsync(NULL)
{
    bFocusChanged = true;
    gamelauncherelementfocus = GamelaunchermenuFocus::OK;

    //Settings up the values for the selectboxes that don't change
    savemode_size = sizeof(ValueGameSaveModes) / sizeof(ValueGameSaveModes[0]);

    saveModeNames[tr("<Settings Default>")] = strfmt("%d", GAME_SAVES_DEFAULT);
    for(int i = 0; i < savemode_size; i++){
        saveModeNames[ValueGameSaveModes[i].name] = strfmt("%d",ValueGameSaveModes[i].value);
    }
    launchmode_size = sizeof(ValueLaunchMode) / sizeof(ValueLaunchMode[0]);
    launchModeNames[tr("<Settings Default>")] = strfmt("%d", LOADIINE_MODE_DEFAULT);
    for(int i = 0; i < launchmode_size; i++){
        launchModeNames[ValueLaunchMode[i].name] = strfmt("%d",ValueLaunchMode[i].value);
    }

    progresswindow.setVisible(false);

    Application::instance()->getMainWindow()->gameLauncherMenuNextClicked.connect(this,&GameLauncherMenu::OnGotHeaderFromMain);

    CVideo * video = Application::instance()->getVideo();
    width = video->getTvWidth()*windowScale;
    height = video->getTvHeight()*windowScale;
    gameLauncherMenuFrame = GuiFrame(width, height);

    bgImage.setSize(width,height);
    frameImage.setScale(windowScale);

    bgBlur.setAlpha(0.85f);
    append(&bgBlur);
    append(&bgImage);
    append(&frameImage);

    titleImage.setScale(windowScale);
    titleText.setColor(glm::vec4(1.0f, 1.0f, 1.0f, 1.0f));
    titleText.setFontSize(46);
    titleText.setPosition(0, 10);
    titleText.setBlurGlowColor(5.0f, glm::vec4(0.0, 0.0, 0.0f, 1.0f));
    append(&titleImage);
    append(&titleText);

    titleText.setParent(&titleImage);
    titleImage.setAlignment(ALIGN_MIDDLE | ALIGN_TOP);
    quitButton.setImage(&quitImage);
	quitButton.setIconOver(&quitSelectedImage);
    quitButton.setAlignment(ALIGN_BOTTOM | ALIGN_LEFT);
    quitButton.clicked.connect(this, &GameLauncherMenu::OnQuitButtonClick);
    quitButton.setTrigger(&touchTrigger);
    quitButton.setTrigger(&wpadTouchTrigger);
    quitButton.setEffectGrow();
    quitButton.setSoundClick(buttonClickSound);
    quitButton.setScale(windowScale*0.8);
    quitButton.setPosition((1.0/30.0)*width,(1.0/30.0)*width);
    gameLauncherMenuFrame.append(&quitButton);

    okText.setPosition(10, -10);
    okButton.setLabel(&okText);
    okButton.setImage(&okImage);
	okButton.setIconOver(&okSelectedImage);
    okButton.setAlignment(ALIGN_BOTTOM | ALIGN_RIGHT);
    okButton.clicked.connect(this, &GameLauncherMenu::OnOKButtonClick);
    okButton.setTrigger(&touchTrigger);
    okButton.setTrigger(&wpadTouchTrigger);
    okButton.setSoundClick(buttonClickSound);
    okButton.setEffectGrow();
    okButton.setScale(windowScale*0.8);
    okButton.setPosition(-(1.0/30.0)*width,(1.0/30.0)*width);
    gameLauncherMenuFrame.append(&okButton);

    leftArrowButton.setImage(&leftArrowImage);
    leftArrowButton.setEffectGrow();
    leftArrowButton.setPosition(-120, 0);
    leftArrowButton.setAlignment(ALIGN_LEFT | ALIGN_MIDDLE);
    leftArrowButton.setTrigger(&touchTrigger);
    leftArrowButton.setTrigger(&wpadTouchTrigger);

    leftArrowButton.setSoundClick(buttonClickSound);
    leftArrowButton.clicked.connect(this, &GameLauncherMenu::OnLeftArrowClick);
    gameLauncherMenuFrame.append(&leftArrowButton);

    rightArrowButton.setImage(&rightArrowImage);
    rightArrowButton.setEffectGrow();
    rightArrowButton.setPosition(120, 0);
    rightArrowButton.setAlignment(ALIGN_RIGHT | ALIGN_MIDDLE);
    rightArrowButton.setTrigger(&touchTrigger);
    rightArrowButton.setTrigger(&wpadTouchTrigger);
    rightArrowButton.setSoundClick(buttonClickSound);
    rightArrowButton.clicked.connect(this, &GameLauncherMenu::OnRightArrowClick);
    gameLauncherMenuFrame.append(&rightArrowButton);

    DPADButtons.setTrigger(&buttonDownTrigger);
    DPADButtons.setTrigger(&buttonATrigger);
    DPADButtons.setTrigger(&buttonBTrigger);
    DPADButtons.setTrigger(&buttonLTrigger);
    DPADButtons.setTrigger(&buttonRTrigger);
    DPADButtons.setTrigger(&buttonLeftTrigger);
    DPADButtons.setTrigger(&buttonRightTrigger);
    DPADButtons.setTrigger(&buttonUpTrigger);

    DPADButtons.clicked.connect(this, &GameLauncherMenu::OnDPADClick);
    gameLauncherMenuFrame.append(&DPADButtons);

    f32 buttonscale = 3.8f/3.0f;

    extraSaveBox.setTrigger(&touchTrigger);
    extraSaveBox.setTrigger(&wpadTouchTrigger);
    extraSaveBox.setSoundClick(buttonClickSound);
    extraSaveBox.valueChanged.connect(this, &GameLauncherMenu::OnExtraSaveValueChanged);

    gameLauncherMenuFrame.append(&extraSaveBox);

    dlcEnableBox.setTrigger(&touchTrigger);
    dlcEnableBox.setTrigger(&wpadTouchTrigger);
    dlcEnableBox.setSoundClick(buttonClickSound);
    dlcEnableBox.valueChanged.connect(this, &GameLauncherMenu::OnDLCEnableValueChanged);

    gameLauncherMenuFrame.append(&dlcEnableBox);

    f32 xpos = 0.11f;
    f32 yOffset = -(0.3 * height);

    dlcEnableBox.setScale(buttonscale*windowScale);
    saveModeSelectBox.setScale(buttonscale*windowScale);
    launchModeSelectBox.setScale(buttonscale*windowScale);
    extraSaveBox.setScale(buttonscale*windowScale);
    extraSaveText.setScale(buttonscale*windowScale);
    dlcEnableText.setScale(buttonscale*windowScale);
    pathSelectBox.setScale(buttonscale* windowScale);

    dlcEnableBox.setPosition(xpos*width + (saveModeSelectBox.getTopValueWidth()*saveModeSelectBox.getScale() /2.0) - (dlcEnableBox.getWidth()*dlcEnableBox.getScale()/2.0), yOffset);
    dlcEnableText.setPosition(xpos*width - (saveModeSelectBox.getTopValueWidth()*saveModeSelectBox.getScale() /2.0)+ (dlcEnableText.getTextWidth()/2.0), yOffset);
    yOffset += saveModeSelectBox.getTopValueHeight() * saveModeSelectBox.getScale();

    saveModeSelectBox.setPosition(xpos*width, yOffset);
    yOffset += saveModeSelectBox.getTopValueHeight() * saveModeSelectBox.getScale();

    launchModeSelectBox.setPosition(xpos*width, yOffset);
    yOffset += saveModeSelectBox.getTopValueHeight() * saveModeSelectBox.getScale() * 1.2f;

    extraSaveBox.setPosition(xpos*width + (saveModeSelectBox.getTopValueWidth()*saveModeSelectBox.getScale() /2.0) - (extraSaveBox.getWidth()*extraSaveBox.getScale()/2.0), yOffset);

    extraSaveText.setPosition(xpos*width - (saveModeSelectBox.getTopValueWidth()*saveModeSelectBox.getScale() /2.0)+ (extraSaveText.getTextWidth()/2.0), yOffset);
    yOffset += saveModeSelectBox.getTopValueHeight() * saveModeSelectBox.getScale() * 1.2f;

    pathSelectBox.setPosition(xpos*width, yOffset);
    yOffset += saveModeSelectBox.getTopValueHeight() * saveModeSelectBox.getScale() * 1.2f;

    pathSelectBox.showhide.connect(this, &GameLauncherMenu::OnSelectBoxShowHide);
    launchModeSelectBox.showhide.connect(this, &GameLauncherMenu::OnSelectBoxShowHide),
    saveModeSelectBox.showhide.connect(this, &GameLauncherMenu::OnSelectBoxShowHide);

    pathSelectBox.valueChanged.connect(this, &GameLauncherMenu::OnSelectBoxValueChanged);
    launchModeSelectBox.valueChanged.connect(this, &GameLauncherMenu::OnSelectBoxValueChanged),
    saveModeSelectBox.valueChanged.connect(this, &GameLauncherMenu::OnSelectBoxValueChanged);

    gameLauncherMenuFrame.append(&dlcEnableText);
    gameLauncherMenuFrame.append(&extraSaveText);
    gameLauncherMenuFrame.append(&saveModeSelectBox);
    gameLauncherMenuFrame.append(&pathSelectBox);
    gameLauncherMenuFrame.append(&launchModeSelectBox);

    selectBoxes.push_back(&pathSelectBox);
    selectBoxes.push_back(&launchModeSelectBox);
    selectBoxes.push_back(&saveModeSelectBox);

    append(&gameLauncherMenuFrame);
    append(&progresswindow);

    focusElements[GamelaunchermenuFocus::ExtraSave] = &extraSaveBox;
    focusElements[GamelaunchermenuFocus::EnableDLC] = &dlcEnableBox;
    focusElements[GamelaunchermenuFocus::Quit] = &quitButton;
    focusElements[GamelaunchermenuFocus::UpdatePath] = &pathSelectBox;
    focusElements[GamelaunchermenuFocus::SaveMethod] = &saveModeSelectBox;
    focusElements[GamelaunchermenuFocus::LaunchMethod] = &launchModeSelectBox;
    focusElements[GamelaunchermenuFocus::OK] = &okButton;

    setHeader(GameList::instance()->at(gameIdx));
}