mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-18 09:19:17 +01:00
f3ef9104b1
*Moved all related global settings to a settings class. one for themes and individual games will follow. Probably broke some settings or theme loading, we can deal with that later and fix when someone discovers bugs.
177 lines
5.1 KiB
C++
177 lines
5.1 KiB
C++
#include "menus.h"
|
|
#include "usbloader/usbstorage2.h"
|
|
#include "usbloader/wbfs.h"
|
|
#include "usbloader/disc.h"
|
|
#include "usbloader/utils.h"
|
|
#include "usbloader/GameList.h"
|
|
#include "prompts/ProgressWindow.h"
|
|
|
|
float gamesize;
|
|
|
|
/****************************************************************************
|
|
* MenuInstall
|
|
***************************************************************************/
|
|
|
|
int MenuInstall()
|
|
{
|
|
gprintf( "\nMenuInstall()" );
|
|
|
|
int menu = MENU_NONE;
|
|
static struct discHdr headerdisc ATTRIBUTE_ALIGN( 32 );
|
|
|
|
Disc_SetUSB( NULL );
|
|
|
|
int ret, choice = 0;
|
|
char name[200];
|
|
|
|
GuiSound btnSoundOver( button_over_pcm, button_over_pcm_size, Settings.sfxvolume );
|
|
|
|
char imgPath[100];
|
|
|
|
snprintf( imgPath, sizeof( imgPath ), "%sbattery.png", Settings.theme_path );
|
|
GuiImageData battery( imgPath, battery_png );
|
|
snprintf( imgPath, sizeof( imgPath ), "%sbattery_bar.png", Settings.theme_path );
|
|
GuiImageData batteryBar( imgPath, battery_bar_png );
|
|
snprintf( imgPath, sizeof( imgPath ), "%sbattery_red.png", Settings.theme_path );
|
|
GuiImageData batteryRed( imgPath, battery_red_png );
|
|
snprintf( imgPath, sizeof( imgPath ), "%sbattery_bar_red.png", Settings.theme_path );
|
|
GuiImageData batteryBarRed( imgPath, battery_bar_red_png );
|
|
|
|
HaltGui();
|
|
GuiWindow w( screenwidth, screenheight );
|
|
|
|
mainWindow->Append( &w );
|
|
|
|
ResumeGui();
|
|
|
|
while ( menu == MENU_NONE )
|
|
{
|
|
VIDEO_WaitVSync ();
|
|
|
|
ret = DiscWait( tr( "Insert Disk" ), tr( "Waiting..." ), tr( "Cancel" ), 0, 0 );
|
|
if ( ret < 0 )
|
|
{
|
|
WindowPrompt ( tr( "Error reading Disc" ), 0, tr( "Back" ) );
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
ret = Disc_Open();
|
|
if ( ret < 0 )
|
|
{
|
|
WindowPrompt ( tr( "Could not open Disc" ), 0, tr( "Back" ) );
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
|
|
ret = Disc_IsWii();
|
|
if ( ret < 0 )
|
|
{
|
|
choice = WindowPrompt ( tr( "Not a Wii Disc" ), tr( "Insert a Wii Disc!" ), tr( "OK" ), tr( "Back" ) );
|
|
|
|
if ( choice == 1 )
|
|
{
|
|
menu = MENU_INSTALL;
|
|
break;
|
|
}
|
|
else
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
|
|
Disc_ReadHeader( &headerdisc );
|
|
snprintf( name, sizeof( name ), "%s", headerdisc.title );
|
|
|
|
ret = WBFS_CheckGame( headerdisc.id );
|
|
if ( ret )
|
|
{
|
|
WindowPrompt ( tr( "Game is already installed:" ), name, tr( "Back" ) );
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
|
|
f32 freespace, used;
|
|
|
|
WBFS_DiskSpace( &used, &freespace );
|
|
gamesize = WBFS_EstimeGameSize() / GB_SIZE;
|
|
|
|
char gametxt[50];
|
|
|
|
sprintf( gametxt, "%s : %.2fGB", name, gamesize );
|
|
|
|
wiilight( 1 );
|
|
choice = WindowPrompt( tr( "Continue to install game?" ), gametxt, tr( "OK" ), tr( "Cancel" ) );
|
|
|
|
if ( choice == 1 )
|
|
{
|
|
|
|
sprintf( gametxt, "%s", tr( "Installing game:" ) );
|
|
|
|
if ( gamesize > freespace )
|
|
{
|
|
char errortxt[50];
|
|
sprintf( errortxt, "%s: %.2fGB, %s: %.2fGB", tr( "Game Size" ), gamesize, tr( "Free Space" ), freespace );
|
|
WindowPrompt( tr( "Not enough free space!" ), errortxt, tr( "OK" ) );
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
USBStorage2_Watchdog( 0 );
|
|
SetupGameInstallProgress( gametxt, name );
|
|
ret = WBFS_AddGame();
|
|
ProgressStop();
|
|
USBStorage2_Watchdog( 1 );
|
|
wiilight( 0 );
|
|
if ( ret != 0 )
|
|
{
|
|
WindowPrompt( tr( "Install Error!" ), 0, tr( "Back" ) );
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
gameList.ReadGameList(); //get the entries again
|
|
gameList.FilterList();
|
|
GuiSound * instsuccess = NULL;
|
|
bgMusic->Pause();
|
|
instsuccess = new GuiSound( success_ogg, success_ogg_size, Settings.sfxvolume );
|
|
instsuccess->SetVolume( Settings.sfxvolume );
|
|
instsuccess->SetLoop( 0 );
|
|
instsuccess->Play();
|
|
WindowPrompt ( tr( "Successfully installed:" ), name, tr( "OK" ) );
|
|
instsuccess->Stop();
|
|
delete instsuccess;
|
|
bgMusic->Resume();
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
menu = MENU_DISCLIST;
|
|
break;
|
|
}
|
|
|
|
if ( shutdown == 1 )
|
|
{
|
|
wiilight( 0 );
|
|
Sys_Shutdown();
|
|
}
|
|
if ( reset == 1 )
|
|
{
|
|
wiilight( 0 );
|
|
Sys_Reboot();
|
|
}
|
|
}
|
|
|
|
//Turn off the WiiLight
|
|
wiilight( 0 );
|
|
|
|
HaltGui();
|
|
|
|
mainWindow->Remove( &w );
|
|
ResumeGui();
|
|
return menu;
|
|
}
|