mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-03 18:15:06 +01:00
1847 lines
73 KiB
C++
1847 lines
73 KiB
C++
#include "menus.h"
|
|
#include "fatmounter.h"
|
|
#include "usbloader/wdvd.h"
|
|
#include "usbloader/GameList.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 u8 * gameScreenTex;
|
|
extern struct discHdr *dvdheader;
|
|
extern u8 mountMethod;
|
|
extern int load_from_fs;
|
|
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( "MenuDiscList()\n" );
|
|
gameList.FilterList();
|
|
int offset = MIN( ( int )startat, gameList.size() - 1 );
|
|
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 && WBFS_ShowFreeSpace() )
|
|
{
|
|
WBFS_DiskSpace( &used, &freespace );
|
|
}
|
|
|
|
if ( !gameList.size() ) //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, PAD_BUTTON_START );
|
|
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 );
|
|
GuiTrigger trigZ;
|
|
trigZ.SetButtonOnlyTrigger( -1, WPAD_NUNCHUK_BUTTON_Z | WPAD_CLASSIC_BUTTON_ZL, PAD_TRIGGER_Z );
|
|
|
|
GuiButton screenShotBtn( 0, 0 );
|
|
screenShotBtn.SetPosition( 0, 0 );
|
|
screenShotBtn.SetTrigger( &trigZ );
|
|
|
|
char spaceinfo[30];
|
|
if ( load_from_fs == PART_FS_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" ) ), gameList.size() );
|
|
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( &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( &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( 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( &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( &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( &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( &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.godmode )
|
|
{
|
|
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.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 ( *gameList.GetCurrentFilter() )
|
|
{
|
|
if ( show_searchwindow && gameList.size() == 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 == PLAYCOUNT )
|
|
{
|
|
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, 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, 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, gameList.size(), CFG.theme_path, bg_options_png, startat, offset);
|
|
gameCarousel = new GuiGameCarousel( 640, 400, 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( clock_ttf, clock_ttf_size );
|
|
GuiText clockTime( theTime, 40, THEME.clock );
|
|
clockTime.SetAlignment( THEME.clock_align, ALIGN_TOP );
|
|
clockTime.SetPosition( THEME.clock_x, THEME.clock_y );
|
|
clockTime.SetFont( clock_ttf, clock_ttf_size );
|
|
|
|
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 );
|
|
w.Append( &screenShotBtn );
|
|
|
|
|
|
// 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( gameList.GetAvailableSearchChars() );
|
|
if ( searchBar )
|
|
mainWindow->Append( searchBar );
|
|
}
|
|
|
|
ResumeGui();
|
|
|
|
// ShowMemInfo();
|
|
|
|
while ( menu == MENU_NONE )
|
|
{
|
|
|
|
if ( idiotFlag == 1 )
|
|
{
|
|
gprintf( "\tIdiot flag\n" );
|
|
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 && !gameList.size() )
|
|
{
|
|
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();
|
|
}
|
|
gameList.FilterList();
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
|
|
//CLOCK
|
|
time_t rawtime = time( 0 );
|
|
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( "\tUpdate Available\n" );
|
|
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( "\tpoweroffBtn clicked\n" );
|
|
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( "\tgameCntBtn clicked\n" );
|
|
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 ( screenShotBtn.GetState() == STATE_CLICKED )
|
|
{
|
|
gprintf( "\tscreenShotBtn clicked\n" );
|
|
screenShotBtn.ResetState();
|
|
ScreenShot();
|
|
}
|
|
else if ( homeBtn.GetState() == STATE_CLICKED )
|
|
{
|
|
gprintf( "\thomeBtn clicked\n" );
|
|
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( "\twiiBtn clicked\n" );
|
|
|
|
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 )
|
|
{
|
|
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( "\tNew Disc Detected\n" );
|
|
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( "\tsdCardBtn Clicked\n" );
|
|
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( "\tDownloadBtn Clicked\n" );
|
|
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( "\tsettingsBtn Clicked\n" );
|
|
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( "\tfavoriteBtn Clicked\n" );
|
|
Settings.fave = !Settings.fave;
|
|
if ( isInserted( bootDevice ) )
|
|
{
|
|
cfg_save_global();
|
|
}
|
|
gameList.FilterList();
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
|
|
}
|
|
|
|
else if ( searchBtn.GetState() == STATE_CLICKED && mountMethod != 3 )
|
|
{
|
|
|
|
gprintf( "\tsearchBtn Clicked\n" );
|
|
show_searchwindow = !show_searchwindow;
|
|
HaltGui();
|
|
if ( searchBar )
|
|
{
|
|
mainWindow->Remove( searchBar );
|
|
delete searchBar;
|
|
searchBar = NULL;
|
|
}
|
|
if ( show_searchwindow )
|
|
{
|
|
if ( *gameList.GetCurrentFilter() )
|
|
{
|
|
searchBtn.StopEffect();
|
|
searchBtn.SetEffectGrow();
|
|
}
|
|
searchBar = new GuiSearchBar( gameList.GetAvailableSearchChars() );
|
|
if ( searchBar )
|
|
mainWindow->Append( searchBar );
|
|
}
|
|
else
|
|
{
|
|
if ( *gameList.GetCurrentFilter() )
|
|
searchBtn.SetEffect( EFFECT_PULSE, 10, 105 );
|
|
}
|
|
searchBtn.ResetState();
|
|
ResumeGui();
|
|
}
|
|
|
|
else if ( searchBar && ( searchChar = searchBar->GetClicked() ) )
|
|
{
|
|
if ( searchChar > 27 )
|
|
{
|
|
int len = gameList.GetCurrentFilter() ? wcslen( gameList.GetCurrentFilter() ) : 0;
|
|
wchar_t newFilter[len+2];
|
|
if ( gameList.GetCurrentFilter() )
|
|
wcscpy( newFilter, gameList.GetCurrentFilter() );
|
|
newFilter[len] = searchChar;
|
|
newFilter[len+1] = 0;
|
|
|
|
|
|
gameList.FilterList( newFilter );
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
else if ( searchChar == 7 ) // Close
|
|
{
|
|
show_searchwindow = false;
|
|
HaltGui();
|
|
if ( searchBar )
|
|
{
|
|
mainWindow->Remove( searchBar );
|
|
delete searchBar;
|
|
searchBar = NULL;
|
|
}
|
|
if ( *gameList.GetCurrentFilter() )
|
|
{
|
|
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
|
|
{
|
|
int len = wcslen( gameList.GetCurrentFilter() );
|
|
wchar_t newFilter[len+1];
|
|
if ( gameList.GetCurrentFilter() )
|
|
wcscpy( newFilter, gameList.GetCurrentFilter() );
|
|
newFilter[len > 0 ? len-1 : 0] = 0;
|
|
gameList.FilterList( newFilter );
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
else if ( abcBtn.GetState() == STATE_CLICKED )
|
|
{
|
|
gprintf( "\tabcBtn clicked\n" );
|
|
if ( Settings.sort != ALL )
|
|
{
|
|
Settings.sort = ALL;
|
|
if ( isInserted( bootDevice ) )
|
|
{
|
|
cfg_save_global();
|
|
}
|
|
gameList.FilterList();
|
|
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
abcBtn.ResetState();
|
|
}
|
|
|
|
else if ( countBtn.GetState() == STATE_CLICKED )
|
|
{
|
|
gprintf( "\tcountBtn Clicked\n" );
|
|
if ( Settings.sort != PLAYCOUNT )
|
|
{
|
|
Settings.sort = PLAYCOUNT;
|
|
if ( isInserted( bootDevice ) )
|
|
{
|
|
cfg_save_global();
|
|
}
|
|
gameList.FilterList();
|
|
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
countBtn.ResetState();
|
|
|
|
}
|
|
|
|
else if ( listBtn.GetState() == STATE_CLICKED )
|
|
{
|
|
gprintf( "\tlistBtn Clicked\n" );
|
|
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( "\tgridBtn Clicked\n" );
|
|
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( "\tcarouselBtn Clicked\n" );
|
|
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( "\thomebrewBtn Clicked\n" );
|
|
menu = MENU_HOMEBREWBROWSE;
|
|
break;
|
|
}
|
|
|
|
else if ( gameInfo.GetState() == STATE_CLICKED && mountMethod != 3 )
|
|
{
|
|
gprintf( "\tgameinfo Clicked\n" );
|
|
gameInfo.ResetState();
|
|
if ( selectImg1 >= 0 && selectImg1 < ( s32 )gameList.size() )
|
|
{
|
|
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( "\tlockBtn clicked\n" );
|
|
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.godmode )
|
|
{
|
|
if ( WindowPrompt( tr( "Parental Control" ), tr( "Are you sure you want to enable Parent Control?" ), tr( "Yes" ), tr( "No" ) ) == 1 )
|
|
{
|
|
Settings.godmode = 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.godmode = 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( "\tdvdBtn Clicked\n" );
|
|
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 ) gameList.size() ) )
|
|
{
|
|
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;
|
|
default:
|
|
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();
|
|
}
|
|
startat = gameBrowser->GetOffset(), offset = startat;
|
|
}
|
|
|
|
if ( ( ( gameSelected >= 0 ) && ( gameSelected < ( s32 )gameList.size() ) )
|
|
|| 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( "\ttried to load missing gct.\n" );
|
|
sprintf( nipple, "%s %s", nipple, tr( "does not exist! Loading game without cheats." ) );
|
|
WindowPrompt( tr( "Error" ), nipple, NULL, NULL, NULL, NULL, 170 );
|
|
}
|
|
else
|
|
{
|
|
fclose( exeFile );
|
|
}
|
|
|
|
}
|
|
|
|
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( "\ttried to load gct file that isn't there\n" );
|
|
sprintf( nipple, "%s %s", nipple, tr( "does not exist! Loading game without cheats." ) );
|
|
WindowPrompt( tr( "Error" ), nipple, NULL, NULL, NULL, NULL, 170 );
|
|
}
|
|
else
|
|
{
|
|
fclose( exeFile );
|
|
}
|
|
|
|
}
|
|
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 );
|
|
gameList.ReadGameList();
|
|
gameList.FilterList();
|
|
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();
|
|
}*/
|
|
//if (Settings.gameDisplay==list) {startat=gameBrowser->GetOffset(), offset=startat;}//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();
|
|
|
|
char imgPath[100];
|
|
if ( gameSelected >= 0 && gameSelected < gameList.size() &&
|
|
( strcasestr( get_title( gameList[gameSelected] ), "guitar" ) ||
|
|
strcasestr( get_title( gameList[gameSelected] ), "band" ) ||
|
|
strcasestr( get_title( gameList[gameSelected] ), "rock" ) ) )
|
|
{
|
|
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 );
|
|
}
|
|
else
|
|
{
|
|
|
|
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 );
|
|
}
|
|
ResumeGui();
|
|
}
|