usbloadergx/source/menu/menu_disclist.cpp

1606 lines
66 KiB
C++

#include "menus.h"
#include "fatmounter.h"
#include "usbloader/wdvd.h"
#include "usbloader/getentries.h"
#include "usbloader/wbfs.h"
#include "patches/fst.h"
#include "network/networkops.h"
#include "prompts/gameinfo.h"
#include "prompts/DiscBrowser.h"
#include "settings/Settings.h"
#include "wpad.h"
#include "sys.h"
#include "libwiigui/gui_gamebrowser.h"
#include "libwiigui/gui_gamegrid.h"
#include "libwiigui/gui_gamecarousel.h"
#include "libwiigui/gui_searchbar.h"
#define MAX_CHARACTERS 38
extern struct discHdr *dvdheader;
extern u8 mountMethod;
extern bool load_from_fat;
extern s32 gameSelected;
extern GuiText * GameIDTxt;
extern GuiText * GameRegionTxt;
extern const u8 data1;
extern FreeTypeGX *fontClock;
extern bool updateavailable;
extern int cntMissFiles;
extern GuiImageData * cover;
extern GuiImage * coverImg;
extern GuiImageData * pointer[4];
extern bool altdoldefault;
extern GuiImage * bgImg;
GuiButton *Toolbar[9];
int idiotFlag=-1;
char idiotChar[50];
void DiscListWinUpdateCallback(void * e);
void rockout(int f = 0);
static u32 startat = 0;
/****************************************************************************
* MenuDiscList
***************************************************************************/
int MenuDiscList() {
gprintf("\nMenuDiscList()");
__Menu_GetEntries();
int offset = MIN(startat,gameCnt-1);
startat = offset;
gprintf("\n\tstartat:%d offset:%d",startat,offset);
int datag = 0;
int datagB =0;
int dataed = -1;
int cosa=0,sina=0;
int selectImg1 = 0;
char ID[4];
char IDfull[7];
u32 covert = 0;
char imgPath[100];
if (!dvdheader)
dvdheader = new struct discHdr;
u8 mountMethodOLD =0;
WDVD_GetCoverStatus(&covert);
u32 covertOld=covert;
f32 freespace, used, size = 0.0;
wchar_t searchChar;
//SCREENSAVER
int check = 0; //to skip the first cycle when wiimote isn't completely connected
datagB=0;
int menu = MENU_NONE, dataef=0;
u32 nolist;
char text[MAX_CHARACTERS + 4];
int choice = 0, selectedold = 100;
s32 ret;
//CLOCK
struct tm * timeinfo;
char theTime[80]="";
time_t lastrawtime=0;
if (mountMethod != 3 && !load_from_fat) {
WBFS_DiskSpace(&used, &freespace);
}
if (!gameCnt) { //if there is no list of games to display
nolist = 1;
}
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, Settings.sfxvolume);
// because destroy GuiSound must wait while sound playing is finished, we use a global sound
if(!btnClick2) btnClick2=new GuiSound(button_click2_pcm, button_click2_pcm_size, Settings.sfxvolume);
// GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, Settings.sfxvolume);
snprintf(imgPath, sizeof(imgPath), "%sbutton_install.png", CFG.theme_path);
GuiImageData btnInstall(imgPath, button_install_png);
snprintf(imgPath, sizeof(imgPath), "%sbutton_install_over.png", CFG.theme_path);
GuiImageData btnInstallOver(imgPath, button_install_over_png);
snprintf(imgPath, sizeof(imgPath), "%ssettings_button.png", CFG.theme_path);
GuiImageData btnSettings(imgPath, settings_button_png);
snprintf(imgPath, sizeof(imgPath), "%ssettings_button_over.png", CFG.theme_path);
GuiImageData btnSettingsOver(imgPath, settings_button_over_png);
GuiImageData dataID(&data1);
snprintf(imgPath, sizeof(imgPath), "%swiimote_poweroff.png", CFG.theme_path);
GuiImageData btnpwroff(imgPath, wiimote_poweroff_png);
snprintf(imgPath, sizeof(imgPath), "%swiimote_poweroff_over.png", CFG.theme_path);
GuiImageData btnpwroffOver(imgPath, wiimote_poweroff_over_png);
snprintf(imgPath, sizeof(imgPath), "%smenu_button.png", CFG.theme_path);
GuiImageData btnhome(imgPath, menu_button_png);
snprintf(imgPath, sizeof(imgPath), "%smenu_button_over.png", CFG.theme_path);
GuiImageData btnhomeOver(imgPath, menu_button_over_png);
snprintf(imgPath, sizeof(imgPath), "%sSDcard_over.png", CFG.theme_path);
GuiImageData btnsdcardOver(imgPath, sdcard_over_png);
snprintf(imgPath, sizeof(imgPath), "%sSDcard.png", CFG.theme_path);
GuiImageData btnsdcard(imgPath, sdcard_png);
snprintf(imgPath, sizeof(imgPath), "%sfavIcon.png", CFG.theme_path);
GuiImageData imgfavIcon(imgPath, favIcon_png);
snprintf(imgPath, sizeof(imgPath), "%sfavIcon_gray.png", CFG.theme_path);
GuiImageData imgfavIcon_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%ssearchIcon.png", CFG.theme_path);
GuiImageData imgsearchIcon(imgPath, searchIcon_png);
snprintf(imgPath, sizeof(imgPath), "%ssearchIcon_gray.png", CFG.theme_path);
GuiImageData imgsearchIcon_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%sabcIcon.png", CFG.theme_path);
GuiImageData imgabcIcon(imgPath, abcIcon_png);
snprintf(imgPath, sizeof(imgPath), "%sabcIcon_gray.png", CFG.theme_path);
GuiImageData imgabcIcon_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%srankIcon.png", CFG.theme_path);
GuiImageData imgrankIcon(imgPath, rankIcon_png);
snprintf(imgPath, sizeof(imgPath), "%srankIcon_gray.png", CFG.theme_path);
GuiImageData imgrankIcon_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon.png", CFG.theme_path);
GuiImageData imgplayCountIcon(imgPath, playCountIcon_png);
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon_gray.png", CFG.theme_path);
GuiImageData imgplayCountIcon_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid.png", CFG.theme_path);
GuiImageData imgarrangeGrid(imgPath, arrangeGrid_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid_gray.png", CFG.theme_path);
GuiImageData imgarrangeGrid_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%sarrangeList.png", CFG.theme_path);
GuiImageData imgarrangeList(imgPath, arrangeList_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeList_gray.png", CFG.theme_path);
GuiImageData imgarrangeList_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel.png", CFG.theme_path);
GuiImageData imgarrangeCarousel(imgPath, arrangeCarousel_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel_gray.png", CFG.theme_path);
GuiImageData imgarrangeCarousel_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%slock.png", CFG.theme_path);
GuiImageData imgLock(imgPath, lock_png);
snprintf(imgPath, sizeof(imgPath), "%slock_gray.png", CFG.theme_path);
GuiImageData imgLock_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%sunlock.png", CFG.theme_path);
GuiImageData imgUnlock(imgPath, unlock_png);
snprintf(imgPath, sizeof(imgPath), "%sunlock_gray.png", CFG.theme_path);
GuiImageData imgUnlock_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%sdvd.png", CFG.theme_path);
GuiImageData imgdvd(imgPath, dvd_png);
snprintf(imgPath, sizeof(imgPath), "%sdvd_gray.png", CFG.theme_path);
GuiImageData imgdvd_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%sbrowser.png", CFG.theme_path);
GuiImageData homebrewImgData(imgPath, browser_png);
snprintf(imgPath, sizeof(imgPath), "%sbrowser_over.png", CFG.theme_path);
GuiImageData homebrewImgDataOver(imgPath, browser_over_png);
GuiTrigger trigA;
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
GuiTrigger trigHome;
trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
GuiTrigger trig2;
trig2.SetButtonOnlyTrigger(-1, WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_X, 0);
GuiTrigger trig1;
trig1.SetButtonOnlyTrigger(-1, WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y, 0);
char spaceinfo[30];
if (load_from_fat) {
memset(spaceinfo, 0, 30);
} else {
if (!strcmp(Settings.db_language,"JA")) {
// needs to be "total...used" for Japanese
sprintf(spaceinfo,(mountMethod!=3?"%.2fGB %s %.2fGB %s":" "),(freespace+used),tr("of"),freespace,tr("free"));
} else {
sprintf(spaceinfo,(mountMethod!=3?"%.2fGB %s %.2fGB %s":" "),freespace,tr("of"),(freespace+used),tr("free"));
}
}
GuiText usedSpaceTxt(spaceinfo, 18, THEME.info);
usedSpaceTxt.SetAlignment(THEME.hddinfo_align, ALIGN_TOP);
usedSpaceTxt.SetPosition(THEME.hddinfo_x, THEME.hddinfo_y);
char GamesCnt[15];
sprintf(GamesCnt,"%s: %i",(mountMethod!=3?tr("Games"):tr("Channels")), gameCnt);
GuiText gamecntTxt(GamesCnt, 18, THEME.info);
GuiButton gamecntBtn(100,18);
gamecntBtn.SetAlignment(THEME.gamecount_align, ALIGN_TOP);
gamecntBtn.SetPosition(THEME.gamecount_x,THEME.gamecount_y);
gamecntBtn.SetLabel(&gamecntTxt);
gamecntBtn.SetEffectGrow();
gamecntBtn.SetTrigger(&trigA);
GuiTooltip installBtnTT(tr("Install a game"));
if (Settings.wsprompt == yes)
installBtnTT.SetWidescreen(CFG.widescreen);
installBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage installBtnImg(&btnInstall);
GuiImage installBtnImgOver(&btnInstallOver);
installBtnImg.SetWidescreen(CFG.widescreen);
installBtnImgOver.SetWidescreen(CFG.widescreen);
GuiButton installBtn(&installBtnImg, &installBtnImgOver, ALIGN_LEFT, ALIGN_TOP, THEME.install_x, THEME.install_y, &trigA, &btnSoundOver, btnClick2, 1, &installBtnTT,24,-30, 0,5);
GuiTooltip settingsBtnTT(tr("Settings"));
if (Settings.wsprompt == yes)
settingsBtnTT.SetWidescreen(CFG.widescreen);
settingsBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage settingsBtnImg(&btnSettings);
settingsBtnImg.SetWidescreen(CFG.widescreen);
GuiImage settingsBtnImgOver(&btnSettingsOver);
settingsBtnImgOver.SetWidescreen(CFG.widescreen);
GuiButton settingsBtn(&settingsBtnImg,&settingsBtnImgOver, 0, 3, THEME.setting_x, THEME.setting_y, &trigA, &btnSoundOver, btnClick2,1,&settingsBtnTT,65,-30,0,5);
GuiTooltip homeBtnTT(tr("Back to HBC or Wii Menu"));
if (Settings.wsprompt == yes)
homeBtnTT.SetWidescreen(CFG.widescreen);
settingsBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage homeBtnImg(&btnhome);
homeBtnImg.SetWidescreen(CFG.widescreen);
GuiImage homeBtnImgOver(&btnhomeOver);
homeBtnImgOver.SetWidescreen(CFG.widescreen);
GuiButton homeBtn(&homeBtnImg,&homeBtnImgOver, 0, 3, THEME.home_x, THEME.home_y, &trigA, &btnSoundOver, btnClick2,1,&homeBtnTT,15,-30,1,5);
homeBtn.RemoveSoundClick();
homeBtn.SetTrigger(&trigHome);
GuiTooltip poweroffBtnTT(tr("Power off the Wii"));
if (Settings.wsprompt == yes)
poweroffBtnTT.SetWidescreen(CFG.widescreen);
poweroffBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage poweroffBtnImg(&btnpwroff);
GuiImage poweroffBtnImgOver(&btnpwroffOver);
poweroffBtnImg.SetWidescreen(CFG.widescreen);
poweroffBtnImgOver.SetWidescreen(CFG.widescreen);
GuiButton poweroffBtn(&poweroffBtnImg,&poweroffBtnImgOver, 0, 3, THEME.power_x, THEME.power_y, &trigA, &btnSoundOver, btnClick2,1,&poweroffBtnTT,-10,-30,1,5);
GuiTooltip sdcardBtnTT(tr("Reload SD"));
if (Settings.wsprompt == yes)
sdcardBtnTT.SetWidescreen(CFG.widescreen);
sdcardBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage sdcardImg(&btnsdcard);
GuiImage sdcardImgOver(&btnsdcardOver);
sdcardImg.SetWidescreen(CFG.widescreen);
sdcardImgOver.SetWidescreen(CFG.widescreen);
GuiButton sdcardBtn(&sdcardImg,&sdcardImgOver, 0, 3, THEME.sdcard_x, THEME.sdcard_y, &trigA, &btnSoundOver, btnClick2,1,&sdcardBtnTT,15,-30,0,5);
GuiButton gameInfo(0,0);
gameInfo.SetTrigger(&trig2);
gameInfo.SetSoundClick(btnClick2);
GuiImage wiiBtnImg(&dataID);
wiiBtnImg.SetWidescreen(CFG.widescreen);
GuiButton wiiBtn(&wiiBtnImg,&wiiBtnImg, 0, 4, 0, -10, &trigA, &btnSoundOver, btnClick2,0);
GuiTooltip favoriteBtnTT(tr("Display favorites"));
if (Settings.wsprompt == yes)
favoriteBtnTT.SetWidescreen(CFG.widescreen);
favoriteBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage favoriteBtnImg(&imgfavIcon);
favoriteBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage favoriteBtnImg_g(favoriteBtnImg);favoriteBtnImg_g.SetGrayscale();
GuiImage favoriteBtnImg_g(&imgfavIcon_gray);
if(favoriteBtnImg_g.GetImage() == NULL) { favoriteBtnImg_g = favoriteBtnImg; favoriteBtnImg_g.SetGrayscale();}
favoriteBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton favoriteBtn(&favoriteBtnImg_g,&favoriteBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_favorite_x, THEME.gamelist_favorite_y, &trigA, &btnSoundOver, btnClick2,1, &favoriteBtnTT, -15, 52, 0, 3);
favoriteBtn.SetAlpha(180);
GuiTooltip searchBtnTT(tr("Set Search-Filter"));
if (Settings.wsprompt == yes)
searchBtnTT.SetWidescreen(CFG.widescreen);
searchBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage searchBtnImg(&imgsearchIcon);
searchBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage searchBtnImg_g(searchBtnImg); searchBtnImg_g.SetGrayscale();
GuiImage searchBtnImg_g(&imgsearchIcon_gray);
if(searchBtnImg_g.GetImage() == NULL) { searchBtnImg_g = searchBtnImg; searchBtnImg_g.SetGrayscale();}
searchBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton searchBtn(&searchBtnImg_g,&searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_search_x, THEME.gamelist_search_y, &trigA, &btnSoundOver, btnClick2,1, &searchBtnTT, -15, 52, 0, 3);
searchBtn.SetAlpha(180);
GuiTooltip abcBtnTT(Settings.fave ? tr("Sort by rank") : tr("Sort alphabetically"));
if (Settings.wsprompt == yes)
abcBtnTT.SetWidescreen(CFG.widescreen);
abcBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage abcBtnImg(Settings.fave ? &imgrankIcon : &imgabcIcon);
abcBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage abcBtnImg_g(abcBtnImg); abcBtnImg_g.SetGrayscale();
GuiImage abcBtnImg_g(Settings.fave ? &imgrankIcon_gray : &imgabcIcon_gray);
if(abcBtnImg_g.GetImage() == NULL) { abcBtnImg_g = abcBtnImg; abcBtnImg_g.SetGrayscale();}
abcBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton abcBtn(&abcBtnImg_g,&abcBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_abc_x, THEME.gamelist_abc_y, &trigA, &btnSoundOver, btnClick2,1,&abcBtnTT, -15, 52, 0, 3);
abcBtn.SetAlpha(180);
GuiTooltip countBtnTT(tr("Sort order by most played"));
if (Settings.wsprompt == yes)
countBtnTT.SetWidescreen(CFG.widescreen);
countBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage countBtnImg(&imgplayCountIcon);
countBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage countBtnImg_g(countBtnImg); countBtnImg_g.SetGrayscale();
GuiImage countBtnImg_g(&imgplayCountIcon_gray);
if(countBtnImg_g.GetImage() == NULL) { countBtnImg_g = countBtnImg; countBtnImg_g.SetGrayscale();}
countBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton countBtn(&countBtnImg_g,&countBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_count_x, THEME.gamelist_count_y, &trigA, &btnSoundOver, btnClick2,1, &countBtnTT, -15, 52, 0, 3);
countBtn.SetAlpha(180);
GuiTooltip listBtnTT(tr("Display as a list"));
if (Settings.wsprompt == yes)
listBtnTT.SetWidescreen(CFG.widescreen);
listBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage listBtnImg(&imgarrangeList);
listBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage listBtnImg_g(listBtnImg); listBtnImg_g.SetGrayscale();
GuiImage listBtnImg_g(&imgarrangeList_gray);
if(listBtnImg_g.GetImage() == NULL) { listBtnImg_g = listBtnImg; listBtnImg_g.SetGrayscale();}
listBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton listBtn(&listBtnImg_g,&listBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_list_x, THEME.gamelist_list_y, &trigA, &btnSoundOver, btnClick2,1, &listBtnTT, 15, 52, 1, 3);
listBtn.SetAlpha(180);
GuiTooltip gridBtnTT(tr("Display as a grid"));
if (Settings.wsprompt == yes)
gridBtnTT.SetWidescreen(CFG.widescreen);
gridBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage gridBtnImg(&imgarrangeGrid);
gridBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage gridBtnImg_g(gridBtnImg); gridBtnImg_g.SetGrayscale();
GuiImage gridBtnImg_g(&imgarrangeGrid_gray);
if(gridBtnImg_g.GetImage() == NULL) { gridBtnImg_g = gridBtnImg; gridBtnImg_g.SetGrayscale();}
gridBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton gridBtn(&gridBtnImg_g,&gridBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_grid_x, THEME.gamelist_grid_y, &trigA, &btnSoundOver, btnClick2,1, &gridBtnTT, 15, 52, 1, 3);
gridBtn.SetAlpha(180);
GuiTooltip carouselBtnTT(tr("Display as a carousel"));
if (Settings.wsprompt == yes)
carouselBtnTT.SetWidescreen(CFG.widescreen);
carouselBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage carouselBtnImg(&imgarrangeCarousel);
carouselBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage carouselBtnImg_g(carouselBtnImg); carouselBtnImg_g.SetGrayscale();
GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray);
if(carouselBtnImg_g.GetImage() == NULL) { carouselBtnImg_g = carouselBtnImg; carouselBtnImg_g.SetGrayscale();}
carouselBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton carouselBtn(&carouselBtnImg_g,&carouselBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_carousel_x, THEME.gamelist_carousel_y, &trigA, &btnSoundOver, btnClick2,1, &carouselBtnTT, 15, 52, 1, 3);
carouselBtn.SetAlpha(180);
bool canUnlock = (Settings.parentalcontrol == 0 && Settings.parental.enabled == 1);
GuiTooltip lockBtnTT(canUnlock ? tr("Unlock Parental Control") : tr("Parental Control disabled"));
if (Settings.wsprompt == yes)
lockBtnTT.SetWidescreen(CFG.widescreen);
lockBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage lockBtnImg(&imgLock);
lockBtnImg.SetWidescreen(CFG.widescreen);
GuiImage lockBtnImg_g(&imgLock_gray);
if(lockBtnImg_g.GetImage() == NULL) { lockBtnImg_g = lockBtnImg; lockBtnImg_g.SetGrayscale(); }
lockBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton lockBtn(&lockBtnImg_g, &lockBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_lock_x, THEME.gamelist_lock_y, &trigA, &btnSoundOver, btnClick2,1, &lockBtnTT, 15, 52, 1, 3);
lockBtn.SetAlpha(180);
GuiTooltip unlockBtnTT(tr("Enable Parental Control"));
if (Settings.wsprompt == yes)
unlockBtnTT.SetWidescreen(CFG.widescreen);
unlockBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage unlockBtnImg(&imgUnlock);
unlockBtnImg.SetWidescreen(CFG.widescreen);
GuiImage unlockBtnImg_g(&imgUnlock_gray);
if(unlockBtnImg_g.GetImage() == NULL) { unlockBtnImg_g = unlockBtnImg; unlockBtnImg_g.SetGrayscale(); }
unlockBtnImg_g.SetWidescreen(CFG.widescreen);
if (canUnlock && Settings.parental.is_unlocked)
{
lockBtn.SetImage(&unlockBtnImg_g);
lockBtn.SetImageOver(&unlockBtnImg_g);
lockBtn.SetToolTip(&unlockBtnTT, 15, 52, 1, 3);
}
/*
GuiButton unlockBtn(&unlockBtnImg_g, &unlockBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_lock_x, THEME.gamelist_lock_y, &trigA, &btnSoundOver, btnClick2,1, &lockBtnTT, 15, 52, 1, 3);
unlockBtn.SetAlpha(180);
*/
GuiTooltip dvdBtnTT(tr("Mount DVD drive"));
if (Settings.wsprompt == yes)
dvdBtnTT.SetWidescreen(CFG.widescreen);
dvdBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage dvdBtnImg(&imgdvd);
dvdBtnImg.SetWidescreen(CFG.widescreen);
GuiImage dvdBtnImg_g(dvdBtnImg); //dvdBtnImg_g.SetGrayscale();
// GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray);
dvdBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton dvdBtn(&dvdBtnImg_g,&dvdBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_dvd_x, THEME.gamelist_dvd_y, &trigA, &btnSoundOver, btnClick2,1, &dvdBtnTT, 15, 52, 1, 3);
dvdBtn.SetAlpha(180);
GuiTooltip homebrewBtnTT(tr("Homebrew Launcher"));
if (Settings.wsprompt == yes)
homebrewBtnTT.SetWidescreen(CFG.widescreen);
homebrewBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage homebrewImg(&homebrewImgData);
GuiImage homebrewImgOver(&homebrewImgDataOver);
homebrewImg.SetWidescreen(CFG.widescreen);
homebrewImgOver.SetWidescreen(CFG.widescreen);
GuiButton homebrewBtn(&homebrewImg,&homebrewImgOver, ALIGN_LEFT, ALIGN_TOP, THEME.homebrew_x, THEME.homebrew_y, &trigA, &btnSoundOver, btnClick2,1,&homebrewBtnTT,15,-30,1,5);
if (Settings.fave) {
favoriteBtn.SetImage(&favoriteBtnImg);
favoriteBtn.SetImageOver(&favoriteBtnImg);
favoriteBtn.SetAlpha(255);
}
static bool show_searchwindow = false;
if(gameFilter && *gameFilter)
{
if(show_searchwindow && gameCnt==1)
show_searchwindow = false;
if(!show_searchwindow)
searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
searchBtn.SetImage(&searchBtnImg);
searchBtn.SetImageOver(&searchBtnImg);
searchBtn.SetAlpha(255);
}
if (Settings.sort==all) {
abcBtn.SetImage(&abcBtnImg);
abcBtn.SetImageOver(&abcBtnImg);
abcBtn.SetAlpha(255);
} else if (Settings.sort==pcount) {
countBtn.SetImage(&countBtnImg);
countBtn.SetImageOver(&countBtnImg);
countBtn.SetAlpha(255);
}
if (Settings.gameDisplay==list) {
listBtn.SetImage(&listBtnImg);
listBtn.SetImageOver(&listBtnImg);
listBtn.SetAlpha(255);
} else if (Settings.gameDisplay==grid) {
gridBtn.SetImage(&gridBtnImg);
gridBtn.SetImageOver(&gridBtnImg);
gridBtn.SetAlpha(255);
} else if (Settings.gameDisplay==carousel) {
carouselBtn.SetImage(&carouselBtnImg);
carouselBtn.SetImageOver(&carouselBtnImg);
carouselBtn.SetAlpha(255);
}
if (Settings.gameDisplay==list) {
favoriteBtn.SetPosition(THEME.gamelist_favorite_x, THEME.gamelist_favorite_y);
searchBtn.SetPosition(THEME.gamelist_search_x, THEME.gamelist_search_y);
abcBtn.SetPosition(THEME.gamelist_abc_x, THEME.gamelist_abc_y);
countBtn.SetPosition(THEME.gamelist_count_x, THEME.gamelist_count_y);
listBtn.SetPosition(THEME.gamelist_list_x, THEME.gamelist_list_y);
gridBtn.SetPosition(THEME.gamelist_grid_x, THEME.gamelist_grid_y);
carouselBtn.SetPosition(THEME.gamelist_carousel_x, THEME.gamelist_carousel_y);
lockBtn.SetPosition(THEME.gamelist_lock_x, THEME.gamelist_lock_y);
dvdBtn.SetPosition(THEME.gamelist_dvd_x, THEME.gamelist_dvd_y);
} else if(Settings.gameDisplay==grid) {
favoriteBtn.SetPosition(THEME.gamegrid_favorite_x, THEME.gamegrid_favorite_y);
searchBtn.SetPosition(THEME.gamegrid_search_x, THEME.gamegrid_search_y);
abcBtn.SetPosition(THEME.gamegrid_abc_x, THEME.gamegrid_abc_y);
countBtn.SetPosition(THEME.gamegrid_count_x, THEME.gamegrid_count_y);
listBtn.SetPosition(THEME.gamegrid_list_x, THEME.gamegrid_list_y);
gridBtn.SetPosition(THEME.gamegrid_grid_x, THEME.gamegrid_grid_y);
carouselBtn.SetPosition(THEME.gamegrid_carousel_x, THEME.gamegrid_carousel_y);
lockBtn.SetPosition(THEME.gamegrid_lock_x, THEME.gamegrid_lock_y);
dvdBtn.SetPosition(THEME.gamegrid_dvd_x, THEME.gamegrid_dvd_y);
} else if(Settings.gameDisplay==carousel) {
favoriteBtn.SetPosition(THEME.gamecarousel_favorite_x, THEME.gamecarousel_favorite_y);
searchBtn.SetPosition(THEME.gamecarousel_search_x, THEME.gamecarousel_favorite_y);
abcBtn.SetPosition(THEME.gamecarousel_abc_x, THEME.gamecarousel_abc_y);
countBtn.SetPosition(THEME.gamecarousel_count_x, THEME.gamecarousel_count_y);
listBtn.SetPosition(THEME.gamecarousel_list_x, THEME.gamecarousel_list_y);
gridBtn.SetPosition(THEME.gamecarousel_grid_x, THEME.gamecarousel_grid_y);
carouselBtn.SetPosition(THEME.gamecarousel_carousel_x, THEME.gamecarousel_carousel_y);
lockBtn.SetPosition(THEME.gamecarousel_lock_x, THEME.gamecarousel_lock_y);
dvdBtn.SetPosition(THEME.gamecarousel_dvd_x, THEME.gamecarousel_dvd_y);
}
//Downloading Covers
GuiTooltip DownloadBtnTT(tr("Click to Download Covers"));
if (Settings.wsprompt == yes)
DownloadBtnTT.SetWidescreen(CFG.widescreen);
DownloadBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiButton DownloadBtn(0,0);
DownloadBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
DownloadBtn.SetPosition(THEME.covers_x,THEME.covers_y);
GuiTooltip IDBtnTT(tr("Click to change game ID"));
if (Settings.wsprompt == yes)
IDBtnTT.SetWidescreen(CFG.widescreen);
IDBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiButton idBtn(0,0);
idBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
idBtn.SetPosition(THEME.id_x,THEME.id_y);
if (Settings.godmode == 1 && mountMethod!=3) {//only make the button have trigger & tooltip if in godmode
DownloadBtn.SetSoundOver(&btnSoundOver);
DownloadBtn.SetTrigger(&trigA);
DownloadBtn.SetTrigger(&trig1);
DownloadBtn.SetToolTip(&DownloadBtnTT,205,-30);
idBtn.SetSoundOver(&btnSoundOver);
idBtn.SetTrigger(&trigA);
idBtn.SetToolTip(&IDBtnTT,205,-30);
} else
{
DownloadBtn.SetRumble(false);
idBtn.SetRumble(false);
}
GuiGameBrowser * gameBrowser = NULL;
GuiGameGrid * gameGrid = NULL;
GuiGameCarousel * gameCarousel = NULL;
if (Settings.gameDisplay==list) {
gameBrowser = new GuiGameBrowser(THEME.gamelist_w, THEME.gamelist_h, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset);
gameBrowser->SetPosition(THEME.gamelist_x, THEME.gamelist_y);
gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
} else if (Settings.gameDisplay==grid) {
gameGrid = new GuiGameGrid(THEME.gamegrid_w,THEME.gamegrid_h, gameList, gameCnt, CFG.theme_path, bg_options_png, 0, 0);
gameGrid->SetPosition(THEME.gamegrid_x,THEME.gamegrid_y);
gameGrid->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
} else if (Settings.gameDisplay==carousel) {
//GuiGameCarousel gameCarousel(THEME.gamecarousel_w, THEME.gamecarousel_h, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset);
gameCarousel = new GuiGameCarousel(640, 400, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset);
gameCarousel->SetPosition(THEME.gamecarousel_x,THEME.gamecarousel_y);
gameCarousel->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
}
GuiText clockTimeBack("88:88", 40, (GXColor) {THEME.clock.r, THEME.clock.g, THEME.clock.b, THEME.clock.a/6});
clockTimeBack.SetAlignment(THEME.clock_align, ALIGN_TOP);
clockTimeBack.SetPosition(THEME.clock_x, THEME.clock_y);
clockTimeBack.SetFont(fontClock);
GuiText clockTime(theTime, 40, THEME.clock);
clockTime.SetAlignment(THEME.clock_align, ALIGN_TOP);
clockTime.SetPosition(THEME.clock_x, THEME.clock_y);
clockTime.SetFont(fontClock);
HaltGui();
GuiWindow w(screenwidth, screenheight);
if (THEME.show_hddinfo == -1 || THEME.show_hddinfo == 1) { //force show hdd info
w.Append(&usedSpaceTxt);
}
if (THEME.show_gamecount == -1 || THEME.show_gamecount == 1) { //force show game cnt info
w.Append(&gamecntBtn);
}
w.Append(&sdcardBtn);
w.Append(&poweroffBtn);
w.Append(&gameInfo);
if (Settings.godmode)
w.Append(&installBtn);
w.Append(&homeBtn);
w.Append(&settingsBtn);
w.Append(&DownloadBtn);
w.Append(&idBtn);
// Begin Toolbar
w.Append(&favoriteBtn);
Toolbar[0] = &favoriteBtn;
w.Append(&searchBtn);
Toolbar[1] = &searchBtn;
w.Append(&abcBtn);
Toolbar[2] = &abcBtn;
w.Append(&countBtn);
Toolbar[3] = &countBtn;
w.Append(&listBtn);
Toolbar[4] = &listBtn;
w.Append(&gridBtn);
Toolbar[5] = &gridBtn;
w.Append(&carouselBtn);
Toolbar[6] = &carouselBtn;
w.Append(&lockBtn);
Toolbar[7] = &lockBtn;
w.Append(&dvdBtn);
Toolbar[8] = &dvdBtn;
w.SetUpdateCallback(DiscListWinUpdateCallback);
// End Toolbar
if (Settings.godmode == 1)
w.Append(&homebrewBtn);
if ((Settings.hddinfo == hr12)||(Settings.hddinfo == hr24)) {
w.Append(&clockTimeBack);
w.Append(&clockTime);
}
if (Settings.gameDisplay==list) {
mainWindow->Append(gameBrowser);
}
if (Settings.gameDisplay==grid) {
mainWindow->Append(gameGrid);
}
if (Settings.gameDisplay==carousel) {
mainWindow->Append(gameCarousel);
}
mainWindow->Append(&w);
GuiSearchBar *searchBar=NULL;
if(show_searchwindow) {
searchBar = new GuiSearchBar(gameFilterNextList);
if(searchBar)
mainWindow->Append(searchBar);
}
ResumeGui();
// ShowMemInfo();
while (menu == MENU_NONE) {
if (idiotFlag==1) {
gprintf("\n\tIdiot flag");
char idiotBuffer[200];
snprintf(idiotBuffer, sizeof(idiotBuffer), "%s (%s). %s",tr("You have attempted to load a bad image"),
idiotChar,tr("Most likely it has dimensions that are not evenly divisible by 4."));
int deleteImg = WindowPrompt(0,idiotBuffer,tr("OK"),tr("Delete"));
if (deleteImg==0) {
snprintf(idiotBuffer, sizeof(idiotBuffer), "%s %s.",tr("You are about to delete "), idiotChar);
deleteImg = WindowPrompt(tr("Confirm"),idiotBuffer,tr("Delete"),tr("Cancel"));
if (deleteImg==1) {
remove(idiotChar);
}
}
idiotFlag=-1;
}
WDVD_GetCoverStatus(&covert);//for detecting if i disc has been inserted
// if the idiot is showing favorites and don't have any
if (Settings.fave && !gameCnt) {
WindowPrompt(tr("No Favorites"),tr("You are choosing to display favorites and you do not have any selected."),tr("Back"));
Settings.fave=!Settings.fave;
if (isInserted(bootDevice)) {
cfg_save_global();
}
__Menu_GetEntries();
menu = MENU_DISCLIST;
break;
}
//CLOCK
time_t rawtime = time(0); //this fixes code dump caused by the clock
if (((Settings.hddinfo == hr12)||(Settings.hddinfo == hr24)) && rawtime != lastrawtime) {
lastrawtime = rawtime;
timeinfo = localtime (&rawtime);
if (dataed < 1) {
if (Settings.hddinfo == hr12) {
if (rawtime & 1)
strftime(theTime, sizeof(theTime), "%I:%M", timeinfo);
else
strftime(theTime, sizeof(theTime), "%I %M", timeinfo);
}
if (Settings.hddinfo == hr24) {
if (rawtime & 1)
strftime(theTime, sizeof(theTime), "%H:%M", timeinfo);
else
strftime(theTime, sizeof(theTime), "%H %M", timeinfo);
}
clockTime.SetText(theTime);
} else if (dataed > 0) {
clockTime.SetTextf("%i", (dataed-1));
}
}
if ((datagB<1)&&(Settings.cios==1)&&(Settings.video == ntsc)&&(Settings.hddinfo == hr12)&&(Settings.qboot==1)&&(Settings.wsprompt==0)&&(Settings.language==ger)&&(Settings.tooltips==0)){dataed=1;dataef=1;}if (dataef==1){if (cosa>7){cosa=1;}datag++;if (sina==3){wiiBtn.SetAlignment(ALIGN_LEFT,ALIGN_BOTTOM);wiiBtnImg.SetAngle(0);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((cosa)*70),(-2*(datag)+120));}else if(62<=datag){wiiBtn.SetPosition(((cosa)*70),((datag*2)-130));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}if (sina==2){wiiBtn.SetAlignment(ALIGN_RIGHT,ALIGN_TOP);wiiBtnImg.SetAngle(270);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((-2*(datag)+130)),((cosa)*50));}else if(62<=datag){wiiBtn.SetPosition((2*(datag)-120),((cosa)*50));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}if (sina==1){wiiBtn.SetAlignment(ALIGN_TOP,ALIGN_LEFT);wiiBtnImg.SetAngle(180);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((cosa)*70),(2*(datag)-120));}else if(62<=datag){wiiBtn.SetPosition(((cosa)*70),(-2*(datag)+130));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}if (sina==0){wiiBtn.SetAlignment(ALIGN_TOP,ALIGN_LEFT);wiiBtnImg.SetAngle(90);if(datag>163){datag=1;}else if (datag<62){wiiBtn.SetPosition(((2*(datag)-130)),((cosa)*50));}else if(62<=datag){wiiBtn.SetPosition((-2*(datag)+120),((cosa)*50));}if (datag>162){wiiBtn.SetPosition(700,700);w.Remove(&wiiBtn);datagB=2;cosa++;sina=lastrawtime%4;}w.Append(&wiiBtn);}}
// respond to button presses
if (shutdown == 1) {
gprintf("\n\tshutdown");
Sys_Shutdown();
}
if (reset == 1)
Sys_Reboot();
if (updateavailable == true) {
gprintf("\n\tUpdate Available");
HaltGui();
GuiWindow ww(640,480);
w.SetState(STATE_DISABLED);
mainWindow->Append(&ww);
ResumeGui();
ProgressUpdateWindow();
updateavailable = false;
mainWindow->Remove(&ww);
w.SetState(STATE_DEFAULT);
menu = MENU_DISCLIST;
}
if (poweroffBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tpoweroffBtn clicked");
choice = WindowPrompt(tr("How to Shutdown?"),0,tr("Full Shutdown"), tr("Shutdown to Idle"), tr("Cancel"));
if (choice == 2) {
Sys_ShutdownToIdel();
} else if (choice == 1) {
Sys_ShutdownToStandby();
} else {
poweroffBtn.ResetState();
if (Settings.gameDisplay==list) {
gameBrowser->SetFocus(1);
} else if (Settings.gameDisplay==grid) {
gameGrid->SetFocus(1);
} else if (Settings.gameDisplay==carousel) {
gameCarousel->SetFocus(1);
}
}
} else if (gamecntBtn.GetState() == STATE_CLICKED && mountMethod!=3) {
gprintf("\n\tgameCntBtn clicked");
gamecntBtn.ResetState();
char linebuf[150];
snprintf(linebuf, sizeof(linebuf), "%s %sGameList ?",tr("Save Game List to"), Settings.update_path);
choice = WindowPrompt(0,linebuf,"TXT","CSV",tr("Back"));
if (choice) {
if (save_gamelist(choice-1))
WindowPrompt(0,tr("Saved"),tr("OK"));
else
WindowPrompt(tr("Error"),tr("Could not save."),tr("OK"));
}
menu = MENU_DISCLIST;
break;
} else if (homeBtn.GetState() == STATE_CLICKED) {
gprintf("\n\thomeBtn clicked");
bgMusic->Pause();
choice = WindowExitPrompt();
bgMusic->Resume();
if (choice == 3) {
Sys_LoadMenu(); // Back to System Menu
} else if (choice == 2) {
Sys_BackToLoader();
} else {
homeBtn.ResetState();
if (Settings.gameDisplay==list) {
gameBrowser->SetFocus(1);
} else if (Settings.gameDisplay==grid) {
gameGrid->SetFocus(1);
} else if (Settings.gameDisplay==carousel) {
gameCarousel->SetFocus(1);
}
}
} else if (wiiBtn.GetState() == STATE_CLICKED) {
gprintf("\n\twiiBtn clicked");
dataed++;
wiiBtn.ResetState();
if (Settings.gameDisplay==list) {
gameBrowser->SetFocus(1);
} else if (Settings.gameDisplay==grid) {
gameGrid->SetFocus(1);
} else if (Settings.gameDisplay==carousel) {
gameCarousel->SetFocus(1);
}
} else if (installBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tinstallBtn clicked");
choice = WindowPrompt(tr("Install a game"),0,tr("Yes"),tr("No"));
if (choice == 1) {
menu = MENU_INSTALL;
break;
} else {
installBtn.ResetState();
if (Settings.gameDisplay==list) {
gameBrowser->SetFocus(1);
} else if (Settings.gameDisplay==grid) {
gameGrid->SetFocus(1);
} else if (Settings.gameDisplay==carousel) {
gameCarousel->SetFocus(1);
}
}
}else if ((covert & 0x2)&&(covert!=covertOld)) {
gprintf("\n\tNew Disc Detected");
choice = WindowPrompt(tr("New Disc Detected"),0,tr("Install"),tr("Mount DVD drive"),tr("Cancel"));
if (choice == 1) {
menu = MENU_INSTALL;
break;
}
else if (choice ==2)
{
dvdBtn.SetState(STATE_CLICKED);
}else {
if (Settings.gameDisplay==list) {
gameBrowser->SetFocus(1);
} else if (Settings.gameDisplay==grid) {
gameGrid->SetFocus(1);
} else if (Settings.gameDisplay==carousel) {
gameCarousel->SetFocus(1);
}
}
}
else if (sdcardBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tsdCardBtn Clicked");
SDCard_deInit();
SDCard_Init();
if (Settings.gameDisplay==list) {
startat = gameBrowser->GetSelectedOption();
offset = gameBrowser->GetOffset();
} else if (Settings.gameDisplay==grid) {
startat = gameGrid->GetSelectedOption();
offset = gameGrid->GetOffset();
} else if (Settings.gameDisplay==carousel) {
startat = gameCarousel->GetSelectedOption();
offset = gameCarousel->GetOffset();
}
if (isInserted(bootDevice)) {
HaltGui(); // to fix endless rumble when clicking on the SD icon when rumble is disabled because rumble is set to on in Global_Default()
CFG_Load();
ResumeGui();
}
sdcardBtn.ResetState();
menu = MENU_DISCLIST;
break;
}
else if (DownloadBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tDownloadBtn Clicked");
if (isInserted(bootDevice)) {
choice = WindowPrompt(tr("Cover Download"), 0, tr("Normal Covers"), tr("3D Covers"), tr("Disc Images"), tr("Back")); // ask for download choice
if (choice != 0) {
int choice2 = choice;
bool missing;
missing = SearchMissingImages(choice2);
if (IsNetworkInit() == false && missing == true) {
WindowPrompt(tr("Network init error"), 0, tr("OK"));
} else {
if (GetMissingFiles() != NULL && cntMissFiles > 0) {
char tempCnt[40];
sprintf(tempCnt,"%i %s",cntMissFiles,tr("Missing files"));
if (choice!=3)choice = WindowPrompt(tr("Download Boxart image?"),tempCnt,tr("Yes"),tr("No"));
else if (choice==3)choice = WindowPrompt(tr("Download Discart image?"),tempCnt,tr("Yes"),tr("No"));
if (choice == 1) {
ret = ProgressDownloadWindow(choice2);
if (ret == 0) {
WindowPrompt(tr("Download finished"),0,tr("OK"));
} else {
sprintf(tempCnt,"%i %s",ret,tr("files not found on the server!"));
WindowPrompt(tr("Download finished"),tempCnt,tr("OK"));
}
}
}
}
}
} else {
WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to download images."), tr("OK"));
}
menu = MENU_DISCLIST;
DownloadBtn.ResetState();
if (Settings.gameDisplay==list) {
gameBrowser->SetFocus(1);
} else if (Settings.gameDisplay==grid) {
gameGrid->SetFocus(1);
} else if (Settings.gameDisplay==carousel) {
gameCarousel->SetFocus(1);
}
}//end download
else if (settingsBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tsettingsBtn Clicked");
if (Settings.gameDisplay==list) {
startat = gameBrowser->GetSelectedOption();
offset = gameBrowser->GetOffset();
} else if (Settings.gameDisplay==grid) {
startat = gameGrid->GetSelectedOption();
offset = gameGrid->GetOffset();
} else if (Settings.gameDisplay==carousel) {
startat = gameCarousel->GetSelectedOption();
offset = gameCarousel->GetOffset();
}
menu = MENU_SETTINGS;
break;
}
else if (favoriteBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tfavoriteBtn Clicked");
Settings.fave=!Settings.fave;
if (isInserted(bootDevice)) {
cfg_save_global();
}
__Menu_GetEntries();
menu = MENU_DISCLIST;
break;
}
else if (searchBtn.GetState() == STATE_CLICKED && mountMethod!=3) {
gprintf("\n\tsearchBtn Clicked");
show_searchwindow=!show_searchwindow;
HaltGui();
if(searchBar)
{
mainWindow->Remove(searchBar);
delete searchBar;
searchBar = NULL;
}
if(show_searchwindow)
{
if(gameFilter && *gameFilter)
{
searchBtn.StopEffect();
searchBtn.SetEffectGrow();
}
searchBar = new GuiSearchBar(gameFilterNextList);
if(searchBar)
mainWindow->Append(searchBar);
}
else
{
if(gameFilter && *gameFilter)
searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
}
searchBtn.ResetState();
ResumeGui();
}
else if (searchBar && (searchChar=searchBar->GetClicked())) {
if(searchChar > 27)
{
int len = gameFilter ? wcslen(gameFilter) : 0;
wchar_t newFilter[len+2];
if(gameFilter)
wcscpy(newFilter, gameFilter);
newFilter[len] = searchChar;
newFilter[len+1] = 0;
__Menu_GetEntries(0, newFilter);
menu = MENU_DISCLIST;
break;
}
else if(searchChar == 7) // Close
{
show_searchwindow=false;
HaltGui();
if(searchBar)
{
mainWindow->Remove(searchBar);
delete searchBar;
searchBar = NULL;
}
if(gameFilter && *gameFilter)
{
searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
searchBtn.SetImage(&searchBtnImg);
searchBtn.SetImageOver(&searchBtnImg);
searchBtn.SetAlpha(255);
}
else
{
searchBtn.StopEffect();
searchBtn.SetEffectGrow();
searchBtn.SetImage(&searchBtnImg_g);
searchBtn.SetImageOver(&searchBtnImg_g);
searchBtn.SetAlpha(180);
}
ResumeGui();
}
else if(searchChar == 8) // Backspace
{
__Menu_GetEntries(0, gameFilterPrev);
menu = MENU_DISCLIST;
break;
}
}
else if (abcBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tabcBtn clicked");
if (Settings.sort != all) {
Settings.sort=all;
if (isInserted(bootDevice)) {
cfg_save_global();
}
__Menu_GetEntries();
menu = MENU_DISCLIST;
break;
}
abcBtn.ResetState();
}
else if (countBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tcountBtn Clicked");
if (Settings.sort != pcount) {
Settings.sort=pcount;
//if(isSdInserted()) {
if (isInserted(bootDevice)) {
cfg_save_global();
}
__Menu_GetEntries();
menu = MENU_DISCLIST;
break;
}
countBtn.ResetState();
}
else if (listBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tlistBtn Clicked");
if (Settings.gameDisplay!=list) {
Settings.gameDisplay=list;
menu = MENU_DISCLIST;
if (isInserted(bootDevice)) {
cfg_save_global();
}
listBtn.ResetState();
break;
} else {
listBtn.ResetState();
}
}
else if (gridBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tgridBtn Clicked");
if (Settings.gameDisplay!=grid) {
Settings.gameDisplay=grid;
menu = MENU_DISCLIST;
if (isInserted(bootDevice)) {
cfg_save_global();
}
gridBtn.ResetState();
break;
} else {
gridBtn.ResetState();
}
}
else if (carouselBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tcarouselBtn Clicked");
if (Settings.gameDisplay!=carousel) {
Settings.gameDisplay=carousel;
menu = MENU_DISCLIST;
if (isInserted(bootDevice)) {
cfg_save_global();
}
carouselBtn.ResetState();
break;
} else {
carouselBtn.ResetState();
}
}
else if (homebrewBtn.GetState() == STATE_CLICKED) {
gprintf("\n\thomebrewBtn Clicked");
menu = MENU_HOMEBREWBROWSE;
break;
}
else if (gameInfo.GetState() == STATE_CLICKED && mountMethod!=3) {
gprintf("\n\tgameinfo Clicked");
gameInfo.ResetState();
if(selectImg1>=0 && selectImg1<(s32)gameCnt) {
gameSelected = selectImg1;
rockout();
struct discHdr *header = &gameList[selectImg1];
snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
choice = showGameInfo(IDfull);
rockout(2);
if (choice==2)
homeBtn.SetState(STATE_CLICKED);
if (choice==3) {
menu = MENU_DISCLIST;
break;
}
}
}
else if (lockBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tlockBtn clicked");
lockBtn.ResetState();
if (!canUnlock) {
WindowPrompt(tr("Parental Control"), tr("You don't have Parental Control enabled. If you wish to use Parental Control, enable it in the Wii Settings."), tr("OK"));
} else {
if (Settings.parental.is_unlocked) {
if (WindowPrompt(tr("Parental Control"), tr("Are you sure you want to enable Parent Control?"), tr("Yes"), tr("No")) == 1) {
Settings.parental.is_unlocked = 0;
lockBtn.SetImage(&lockBtnImg_g);
lockBtn.SetImageOver(&lockBtnImg_g);
lockBtn.SetToolTip(&lockBtnTT, 15, 52, 1, 3);
// Retrieve the gamelist again
menu = MENU_DISCLIST;
break;
}
} else {
// Require the user to enter the PIN code
char pin[5];
memset(&pin, 0, 5);
int ret = OnScreenNumpad((char *) &pin, 5);
if (ret == 1) {
if (memcmp(pin, Settings.parental.pin, 4) == 0) {
Settings.parental.is_unlocked = 1;
lockBtn.SetImage(&unlockBtnImg_g);
lockBtn.SetImageOver(&unlockBtnImg_g);
lockBtn.SetToolTip(&unlockBtnTT, 15, 52, 1, 3);
// Retrieve the gamelist again
menu = MENU_DISCLIST;
break;
} else {
WindowPrompt(tr("Parental Control"), tr("Invalid PIN code"), tr("OK"));
}
}
}
}
}
else if (dvdBtn.GetState() == STATE_CLICKED) {
gprintf("\n\tdvdBtn Clicked");
mountMethodOLD = (mountMethod==3?mountMethod:0);
mountMethod=DiscMount(dvdheader);
dvdBtn.ResetState();
rockout();
//break;
}
if (Settings.gameDisplay==grid) {
int selectimg;
DownloadBtn.SetSize(0,0);
selectimg = gameGrid->GetSelectedOption();
gameSelected = gameGrid->GetClickedOption();
selectImg1=selectimg;
}
if (Settings.gameDisplay==carousel) {
int selectimg;
DownloadBtn.SetSize(0,0);
selectimg = gameCarousel->GetSelectedOption();
gameSelected = gameCarousel->GetClickedOption();
selectImg1=selectimg;
}
if (Settings.gameDisplay==list) {
//Get selected game under cursor
int selectimg;
DownloadBtn.SetSize(160,224);
idBtn.SetSize(100,40);
selectimg = gameBrowser->GetSelectedOption();
gameSelected = gameBrowser->GetClickedOption();
selectImg1=selectimg;
if (gameSelected > 0) //if click occured
selectimg = gameSelected;
char gameregion[7];
if ((selectimg >= 0) && (selectimg < (s32) gameCnt)) {
if (selectimg != selectedold) {
selectedold = selectimg;//update displayed cover, game ID, and region if the selected game changes
struct discHdr *header = &gameList[selectimg];
snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]);
snprintf (IDfull,sizeof(IDfull),"%s%c%c%c", ID, header->id[3], header->id[4], header->id[5]);
w.Remove(&DownloadBtn);
if (GameIDTxt) {
w.Remove(&idBtn);
delete GameIDTxt;
GameIDTxt = NULL;
}
if (GameRegionTxt) {
w.Remove(GameRegionTxt);
delete GameRegionTxt;
GameRegionTxt = NULL;
}
switch (header->id[3]) {
case 'E':
sprintf(gameregion,"NTSC U");
break;
case 'J':
sprintf(gameregion,"NTSC J");
break;
case 'W':
sprintf(gameregion,"NTSC T");
break;
case 'K':
sprintf(gameregion,"NTSC K");
break;
case 'P':
case 'D':
case 'F':
case 'I':
case 'S':
case 'H':
case 'U':
case 'X':
case 'Y':
case 'Z':
sprintf(gameregion," PAL ");
break;
}
//load game cover
if (cover) {
delete cover;
cover = NULL;
}
cover = LoadCoverImage(header);
if (coverImg) {
delete coverImg;
coverImg = NULL;
}
coverImg = new GuiImage(cover);
coverImg->SetWidescreen(CFG.widescreen);
DownloadBtn.SetImage(coverImg);// put the new image on the download button
w.Append(&DownloadBtn);
if ((Settings.sinfo == GameID) || (Settings.sinfo == Both)) {
GameIDTxt = new GuiText(IDfull, 22, THEME.info);
GameIDTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
//GameIDTxt->SetPosition(THEME.id_x,THEME.id_y);
idBtn.SetEffect(EFFECT_FADE, 20);
idBtn.SetLabel(GameIDTxt);
w.Append(&idBtn);
}
//don't try to show region for channels because all the custom channels wont follow the rules
if (((Settings.sinfo == GameRegion) || (Settings.sinfo == Both))&&mountMethod!=3) {
GameRegionTxt = new GuiText(gameregion, 22, THEME.info);
GameRegionTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
GameRegionTxt->SetPosition(THEME.region_x, THEME.region_y);
GameRegionTxt->SetEffect(EFFECT_FADE, 20);
w.Append(GameRegionTxt);
}
}
}
if (idBtn.GetState() == STATE_CLICKED && mountMethod!=3) {
gprintf("\n\tidBtn Clicked");
struct discHdr * header = &gameList[gameBrowser->GetSelectedOption()];
//enter new game ID
char entered[10];
snprintf(entered, sizeof(entered), "%s", IDfull);
//entered[9] = '\0';
int result = OnScreenKeyboard(entered, 7,0);
if (result == 1) {
WBFS_ReIDGame(header->id, entered);
//__Menu_GetEntries();
menu = MENU_DISCLIST;
}
idBtn.ResetState();
}
}
if (((gameSelected >= 0) && (gameSelected < (s32)gameCnt))
|| mountMethod==1
|| mountMethod==2) {
if(searchBar)
{
HaltGui();
mainWindow->Remove(searchBar);
ResumeGui();
}
rockout();
struct discHdr *header = (mountMethod==1||mountMethod==2?dvdheader:&gameList[gameSelected]);
// struct discHdr *header = dvdheader:&gameList[gameSelected]);
if (!mountMethod)//only get this stuff it we are booting a game from USB
{
WBFS_GameSize(header->id, &size);
if (strlen(get_title(header)) < (MAX_CHARACTERS + 3)) {
sprintf(text, "%s", get_title(header));
} else {
strncpy(text, get_title(header), MAX_CHARACTERS);
text[MAX_CHARACTERS] = '\0';
strncat(text, "...", 3);
}
}
//check if alt Dol and gct file is present
FILE *exeFile = NULL;
char nipple[100];
header = (mountMethod==1||mountMethod==2?dvdheader:&gameList[gameSelected]); //reset header
snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
struct Game_CFG* game_cfg = CFG_get_game_opt(header->id);
if (game_cfg) {
alternatedol = game_cfg->loadalternatedol;
ocarinaChoice = game_cfg->ocarina;
} else {
alternatedol = off;
ocarinaChoice = Settings.ocarina;
}
if (Settings.qboot == yes) { //quickboot game
if (alternatedol == on) {
/* Open dol File and check exist */
sprintf(nipple, "%s%s.dol",Settings.dolpath,IDfull);
exeFile = fopen (nipple ,"rb");
if (exeFile==NULL) {
sprintf(nipple, "%s %s",nipple,tr("does not exist!"));
WindowPrompt(tr("Error"),nipple,tr("OK"));
menu = MENU_CHECK;
wiilight(0);
break;
} else {
fclose(exeFile);
}
}
if (ocarinaChoice != off) {
/* Open gct File and check exist */
sprintf(nipple, "%s%s.gct",Settings.Cheatcodespath,IDfull);
exeFile = fopen (nipple ,"rb");
if (exeFile==NULL) {
gprintf("\n\ttried to load missing gct.");
sprintf(nipple, "%s %s",nipple,tr("does not exist! Loading game without cheats."));
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
} else {
fseek (exeFile, 0, SEEK_END);
long size=ftell (exeFile);
rewind (exeFile);
fclose(exeFile);
if (size>MAX_GCT_SIZE) {
gprintf("\n\tgct is too big");
sprintf(nipple, "%s %s",nipple,tr("contains over 255 lines of code. It will produce unexpected results."));
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
}
}
}
wiilight(0);
if (isInserted(bootDevice)) {
//////////save game play count////////////////
struct Game_NUM* game_num = CFG_get_game_num(header->id);
if (game_num) {
favoritevar = game_num->favorite;
playcount = game_num->count;
} else {
favoritevar = 0;
playcount = 0;
}
playcount += 1;
CFG_save_game_num(header->id);
gprintf("\n\tplaycount for %c%c%c%c%c%c raised to %i",header->id[0],header->id[1],header->id[2],header->id[3],header->id[4],header->id[5],playcount);
}
menu = MENU_EXIT;
break;
}
bool returnHere = true;// prompt to start game
while (returnHere) {
returnHere = false;
if (Settings.wiilight != wiilight_forInstall) wiilight(1);
choice = GameWindowPrompt();
// header = &gameList[gameSelected]; //reset header
if (choice == 1) {
if (alternatedol == on) {
/* Open dol File and check exist */
sprintf(nipple, "%s%s.dol",Settings.dolpath,IDfull);
exeFile = fopen (nipple ,"rb");
if (exeFile==NULL) {
gprintf("\n\tTried to load alt dol that isn't there");
sprintf(nipple, "%s %s",nipple,tr("does not exist! You Messed something up, Idiot."));
WindowPrompt(tr("Error"),nipple,tr("OK"));
menu = MENU_CHECK;
wiilight(0);
break;
} else {
fclose(exeFile);
}
}
if (ocarinaChoice != off) {
/* Open gct File and check exist */
sprintf(nipple, "%s%s.gct",Settings.Cheatcodespath,IDfull);
exeFile = fopen (nipple ,"rb");
if (exeFile==NULL) {
gprintf("\n\ttried to load gct file that isn't there");
sprintf(nipple, "%s %s",nipple,tr("does not exist! Loading game without cheats."));
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
} else {
fseek (exeFile, 0, SEEK_END);
long size=ftell (exeFile);
rewind (exeFile);
fclose(exeFile);
if (size>MAX_GCT_SIZE) {
gprintf("\n\tgct file is too big");
sprintf(nipple, "%s %s",nipple,tr("contains over 255 lines of code. It will produce unexpected results."));
WindowPrompt(tr("Error"),nipple,NULL,NULL,NULL,NULL,170);
}
}
}
wiilight(0);
returnHere = false;
menu = MENU_EXIT;
} else if (choice == 2) {
wiilight(0);
HaltGui();
if (Settings.gameDisplay==list) mainWindow->Remove(gameBrowser);
else if (Settings.gameDisplay==grid) mainWindow->Remove(gameGrid);
else if (Settings.gameDisplay==carousel) mainWindow->Remove(gameCarousel);
mainWindow->Remove(&w);
ResumeGui();
//re-evaluate header now in case they changed games while on the game prompt
header = (mountMethod==1||mountMethod==2?dvdheader:&gameList[gameSelected]);
int settret = GameSettings(header);
/* unneeded for now, kept in case database gets a separate language setting
//menu = MENU_DISCLIST; // refresh titles (needed if the language setting has changed)
*/
HaltGui();
if (Settings.gameDisplay==list) mainWindow->Append(gameBrowser);
else if (Settings.gameDisplay==grid) mainWindow->Append(gameGrid);
else if (Settings.gameDisplay==carousel) mainWindow->Append(gameCarousel);
mainWindow->Append(&w);
ResumeGui();
if (settret == 1) { //if deleted
menu = MENU_DISCLIST;
break;
}
returnHere = true;
rockout(2);
}
else if (choice == 3 && !mountMethod) { //WBFS renaming
wiilight(0);
//re-evaluate header now in case they changed games while on the game prompt
header = &gameList[gameSelected];
//enter new game title
char entered[60];
snprintf(entered, sizeof(entered), "%s", get_title(header));
entered[59] = '\0';
int result = OnScreenKeyboard(entered, 60,0);
if (result == 1) {
WBFS_RenameGame(header->id, entered);
__Menu_GetEntries();
menu = MENU_DISCLIST;
}
} else if (choice == 0) {
rockout(2);
if (mountMethod==1||mountMethod==2)mountMethod = mountMethodOLD;
if (Settings.gameDisplay==list) {
gameBrowser->SetFocus(1);
} else if (Settings.gameDisplay==grid) {
gameGrid->SetFocus(1);
} else if (Settings.gameDisplay==carousel) {
gameCarousel->SetFocus(1);
}
}
}
if(searchBar)
{
HaltGui();
mainWindow->Append(searchBar);
ResumeGui();
}
}
// to skip the first call of windowScreensaver at startup when wiimote is not connected
if (IsWpadConnected()) {
check = 1;
}
// screensaver is called when wiimote shuts down, depending on the wiimotet idletime
if (!IsWpadConnected() && check !=0 && Settings.screensaver!=0) {
check++;
int screensaverIsOn=0;
if (check==11500) { //to allow time for the wii to turn off and not show the screensaver
screensaverIsOn=WindowScreensaver();
}
if (screensaverIsOn==1)check=0;
}
covertOld=covert;
}
// set alt dol default
if (menu == MENU_EXIT && altdoldefault) {
struct discHdr *header = (mountMethod==1||mountMethod==2?dvdheader:&gameList[gameSelected]);
struct Game_CFG* game_cfg = CFG_get_game_opt(header->id);
// use default only if no alt dol was selected manually
if (game_cfg) {
if (game_cfg->alternatedolstart != 0)
altdoldefault = false;
}
if (altdoldefault) {
int autodol = autoSelectDol((char*)header->id, true);
if (autodol>0) {
alternatedol = 2;
alternatedoloffset = autodol;
char temp[20];
sprintf(temp,"%d",autodol);
} else {
// alt dol menu for games that require more than a single alt dol
int autodol = autoSelectDolMenu((char*)header->id, true);
if (autodol>0) {
alternatedol = 2;
alternatedoloffset = autodol;
}
}
}
}
//no need to close sd here. we still need to get settings and codes and shit
/*if (menu == MENU_EXIT) {
SDCard_deInit();
}*/
startat=selectImg1, offset=selectImg1;//save the variables in case we are refreshing the list
gprintf("\n\tstartat:%d offset:%d",startat,offset);
HaltGui();
mainWindow->RemoveAll();
mainWindow->Append(bgImg);
delete searchBar;
searchBar = NULL;
delete gameBrowser;
gameBrowser = NULL;
delete gameGrid;
gameGrid = NULL;
delete gameCarousel;
gameCarousel = NULL;
ResumeGui();
return menu;
}
void DiscListWinUpdateCallback(void * e)
{
GuiWindow *w = (GuiWindow *)e;
for(int i=0; i<8; ++i)
{
if(Toolbar[i]->GetState() == STATE_SELECTED)
{
w->Remove(Toolbar[i]);
w->Append(Toolbar[i]); // draw the selected Icon allways on top
break;
}
}
}
void rockout(int f) {
HaltGui();
int num=(f==2?-1:gameSelected);
char imgPath[100];
if ((!(strcasestr(get_title(&gameList[num]),"guitar")||
strcasestr(get_title(&gameList[num]),"band")||
strcasestr(get_title(&gameList[num]),"rock")||
f==1))||mountMethod) {
for (int i = 0; i < 4; i++)
delete pointer[i];
snprintf(imgPath, sizeof(imgPath), "%splayer1_point.png", CFG.theme_path);
pointer[0] = new GuiImageData(imgPath, player1_point_png);
snprintf(imgPath, sizeof(imgPath), "%splayer2_point.png", CFG.theme_path);
pointer[1] = new GuiImageData(imgPath, player2_point_png);
snprintf(imgPath, sizeof(imgPath), "%splayer3_point.png", CFG.theme_path);
pointer[2] = new GuiImageData(imgPath, player3_point_png);
snprintf(imgPath, sizeof(imgPath), "%splayer4_point.png", CFG.theme_path);
pointer[3] = new GuiImageData(imgPath, player4_point_png);
} else {
for (int i = 0; i < 4; i++)
delete pointer[i];
snprintf(imgPath, sizeof(imgPath), "%srplayer1_point.png", CFG.theme_path);
pointer[0] = new GuiImageData(imgPath, rplayer1_point_png);
snprintf(imgPath, sizeof(imgPath), "%srplayer2_point.png", CFG.theme_path);
pointer[1] = new GuiImageData(imgPath, rplayer2_point_png);
snprintf(imgPath, sizeof(imgPath), "%srplayer3_point.png", CFG.theme_path);
pointer[2] = new GuiImageData(imgPath, rplayer3_point_png);
snprintf(imgPath, sizeof(imgPath), "%srplayer4_point.png", CFG.theme_path);
pointer[3] = new GuiImageData(imgPath, rplayer4_point_png);
}
ResumeGui();
}