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)); }