fix for SMB, misc improvements

This commit is contained in:
dborth 2009-05-30 06:27:47 +00:00
parent 5a8546d5bf
commit b269d3583d
6 changed files with 89 additions and 80 deletions

View File

@ -534,7 +534,7 @@ LoadFile (char * rbuffer, char *filepath, u32 length, int method, bool silent)
u32 nextread = 0;
while(offset < size)
{
if(size - offset > 1024*512) nextread = 1024*512;
if(size - offset > 4*1024) nextread = 4*1024;
else nextread = size-offset;
ShowProgress ("Loading...", offset, size);
readsize = fread (rbuffer + offset, 1, nextread, file); // read in next chunk
@ -621,7 +621,7 @@ SaveFile (char * buffer, char *filepath, u32 datasize, int method, bool silent)
u32 writesize, nextwrite;
while(written < datasize)
{
if(datasize - written > 16*1024) nextwrite=16*1024;
if(datasize - written > 4*1024) nextwrite=4*1024;
else nextwrite = datasize-written;
writesize = fwrite (buffer+written, 1, nextwrite, file);
if(writesize != nextwrite) break; // write failure

View File

@ -100,7 +100,7 @@ GuiFileBrowser::GuiFileBrowser(int w, int h)
for(int i=0; i<PAGESIZE; i++)
{
gameListText[i] = new GuiText("Game",22, (GXColor){0, 0, 0, 0xff});
gameListText[i] = new GuiText(NULL,22, (GXColor){0, 0, 0, 0xff});
gameListText[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
gameListText[i]->SetPosition(5,0);

View File

@ -163,7 +163,7 @@ void GuiSaveBrowser::SetFocus(int f)
for(int i=0; i<SAVELISTSIZE; i++)
saveBtn[i]->ResetState();
if(f == 1)
if(f == 1 && selectedItem >= 0)
saveBtn[selectedItem]->SetState(STATE_SELECTED);
}
@ -334,7 +334,7 @@ void GuiSaveBrowser::Update(GuiTrigger * t)
}
else if(listOffset+i < saves->length)
{
if(saveBtn[i]->GetState() == STATE_DISABLED)
if(saveBtn[i]->GetState() == STATE_DISABLED || !saveBtn[i]->IsVisible())
{
saveBtn[i]->SetVisible(true);
saveBtn[i]->SetState(STATE_DEFAULT);
@ -379,12 +379,17 @@ void GuiSaveBrowser::Update(GuiTrigger * t)
saveBtn[i]->SetState(STATE_DISABLED);
}
if(focus)
{
if(i != selectedItem && saveBtn[i]->GetState() == STATE_SELECTED)
saveBtn[i]->ResetState();
else if(i == selectedItem && saveBtn[i]->GetState() == STATE_DEFAULT)
else if(focus && i == selectedItem && saveBtn[i]->GetState() == STATE_DEFAULT)
saveBtn[selectedItem]->SetState(STATE_SELECTED, t->chan);
if(t->wpad.ir.valid && !saveBtn[i]->IsInside(t->wpad.ir.x, t->wpad.ir.y)
&& saveBtn[i]->GetState() == STATE_SELECTED)
{
saveBtn[i]->ResetState();
if(selectedItem == i)
selectedItem = -1;
}
saveBtn[i]->Update(t);

View File

@ -227,7 +227,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label, const ch
static void *
EmulatorUpdate (void *arg)
{
sleep(5);
sleep(3);
bool installUpdate = WindowPrompt(
"Update Available",
"An update is available!",
@ -491,7 +491,7 @@ ShowProgress (const char *msg, int done, int total)
void
ShowAction (const char *msg)
{
if(showProgress != 2)
if(showProgress != 0)
CancelAction(); // wait for previous progress window to finish
strncpy(progressMsg, msg, 200);
@ -830,25 +830,6 @@ static void WindowCredits(void * ptr)
***************************************************************************/
static int MenuGameSelection()
{
#ifdef HW_RVL
ShutoffRumble();
#endif
// populate initial directory listing
if(OpenGameList() <= 0)
{
int choice = WindowPrompt(
"Error",
"Games directory is inaccessible on selected load device.",
"Retry",
"Check Settings");
if(choice)
return MENU_GAMESELECTION;
else
return MENU_SETTINGS_FILE;
}
int menu = MENU_NONE;
GuiText titleTxt("Choose Game", 28, (GXColor){255, 255, 255, 255});
@ -861,7 +842,6 @@ static int MenuGameSelection()
GuiImageData iconSettings(icon_settings_png);
GuiImageData btnOutline(button_png);
GuiImageData btnOutlineOver(button_over_png);
GuiTrigger trigA;
if(GCSettings.WiimoteOrientation)
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
@ -913,6 +893,7 @@ static int MenuGameSelection()
GuiFileBrowser gameBrowser(424, 248);
gameBrowser.SetPosition(50, 108);
ResetBrowser();
HaltGui();
btnLogo->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
@ -922,6 +903,30 @@ static int MenuGameSelection()
mainWindow->Append(&buttonWindow);
ResumeGui();
#ifdef HW_RVL
ShutoffRumble();
#endif
// populate initial directory listing
if(OpenGameList() <= 0)
{
int choice = WindowPrompt(
"Error",
"Games directory is inaccessible on selected load device.",
"Retry",
"Check Settings");
if(choice)
menu = MENU_GAMESELECTION;
else
menu = MENU_SETTINGS_FILE;
}
else
{
gameBrowser.ResetState();
gameBrowser.gameList[0]->SetState(STATE_SELECTED);
gameBrowser.TriggerUpdate();
while(menu == MENU_NONE)
{
usleep(THREAD_SLEEP);
@ -974,6 +979,7 @@ static int MenuGameSelection()
else if(exitBtn.GetState() == STATE_CLICKED)
ExitRequested = 1;
}
}
HaltGui();
mainWindow->Remove(&titleTxt);
mainWindow->Remove(&buttonWindow);

View File

@ -207,8 +207,6 @@ void InitializeNetwork(bool silent)
ErrorPrompt(msg);
}
}
if(!silent)
CancelAction();
inNetworkInit = false;
}
@ -279,8 +277,6 @@ ConnectShare (bool silent)
{
networkShareInit = true;
}
if(!silent)
CancelAction();
}
if(!networkShareInit && !silent)

View File

@ -196,6 +196,7 @@ preparePrefsData (int method)
createXMLSetting("ExitAction", "Exit Action", toStr(GCSettings.ExitAction));
createXMLSetting("MusicVolume", "Music Volume", toStr(GCSettings.MusicVolume));
createXMLSetting("SFXVolume", "Sound Effects Volume", toStr(GCSettings.SFXVolume));
createXMLSetting("Rumble", "Rumble", toStr(GCSettings.Rumble));
createXMLSection("Controller", "Controller Settings");
@ -466,6 +467,7 @@ decodePrefsData (int method)
loadXMLSetting(&GCSettings.ExitAction, "ExitAction");
loadXMLSetting(&GCSettings.MusicVolume, "MusicVolume");
loadXMLSetting(&GCSettings.SFXVolume, "SFXVolume");
loadXMLSetting(&GCSettings.Rumble, "Rumble");
// Controller Settings