This commit is contained in:
Paul 2001-07-02 00:40:09 +00:00
parent 6490c61642
commit 2b3bb3e4d9
5 changed files with 356 additions and 21 deletions

View File

@ -58,6 +58,8 @@ eng=CONTROLS
eng=SCREEN
[STR__FRONTEND__SOUND]
eng=SOUND
[STR__FRONTEND__LOAD]
eng=LOAD
[STR__FRONTEND__EXIT]
eng=EXIT
[STR__FRONTEND__BACK]
@ -107,6 +109,52 @@ eng=SFX VOLUME
[STR__FRONTEND__SPEECH]
eng=SPEECH VOLUME
; Load menu ( also some strings in the memcard section )
[STR__FRONTEND__CONFIRM_LOAD]
eng=SpongeBob game data found.\nAre you sure you want to load?
; ---------------------------------------------------------------
; Memcard
; ---------------------------------------------------------------
[STR__MEMCARD__CHECKING_MEM_CARD]
eng=Checking...\nPlease do not remove the MEMORY CARD
[STR__MEMCARD__UNFORMATTEDCARD]
eng=MEMORY CARD in MEMORY CARD slot 1 is not formatted
[STR__MEMCARD__NOFILESONCARD]
eng=No SpongeBob game data present
[STR__MEMCARD__NOCARDINSLOT]
eng=There is no MEMORY CARD in MEMORY CARD slot 1
[STR__MEMCARD__LOADINGPLEASEWIAT]
eng=Loading...\nDo not remove the MEMORY CARD in MEMORY CARD slot 1
[STR__MEMCARD__LOADOK]
eng=Load complete!
[STR__MEMCARD__LOADERROR]
eng=Load Error!
[STR__MEMCARD__NOSPACEONCARD]
eng=Insufficient free blocks available in MEMORY CARD of MEMORY CARD SLOT 1
[STR__MEMCARD__DUPLICATESAVENAME]
eng=Are you sure you want to overwrite this file?
[STR__MEMCARD__DOYOUWANTTOFORMATCARD]
eng=MEMORY CARD in MEMORY CARD slot 1 is not formatted. Do you wish to format?
[STR__MEMCARD__FORMATTINGPLEASEWIAT]
eng=Formatting... Do not remove the MEMORY CARD in MEMORY CARD slot 1
[STR__MEMCARD__FORMATTINGOK]
eng=Format complete!\n\nPress X to continue
[STR__MEMCARD__FORMATTINGERROR]
eng=Format Error!\n\nPress X to continue
[STR__MEMCARD__FORMATTINGINTERRUPTED]
eng=Operation interrupted!\n\nPress X to continue
[STR__MEMCARD__SAVEINGPLEASEWIAT]
eng=Saving...\nDo not remove the MEMORY CARD in MEMORY CARD slot 1
[STR__MEMCARD__SAVEOK]
eng=Save complete!\n\nPress X to continue
[STR__MEMCARD__SAVEERROR]
eng=Save error!\n\nPress X to continue

View File

@ -269,7 +269,7 @@ FRONTEND_GFX_DIR := $(GRAF_DIR)/frontend
FRONTEND_GFX_NONTRANS :=
FRONTEND_GFX_NONTRANS_IN := $(foreach FILE,$(FRONTEND_GFX_NONTRANS),$(FRONTEND_GFX_DIR)/$(FILE))
FRONTEND_GFX_TRANS := +bg1.bmp +bg2.bmp +bg3.bmp +bg4.bmp +caustic1.bmp +caustic2.bmp
FRONTEND_GFX_TRANS := +bg3.bmp +bg5.bmp +bg7.bmp +bg8.bmp +bg9.bmp +caustic1.bmp +caustic2.bmp
FRONTEND_GFX_TRANS_IN := $(foreach FILE,$(FRONTEND_GFX_TRANS),$(FRONTEND_GFX_DIR)/$(FILE))
FRONTEND_GFX_TRANS_NO_ROT := +sblogo.bmp

View File

@ -62,14 +62,18 @@
#include "system\vid.h"
#endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
#ifndef __PAD_VIBE_H__
#include "pad\vibe.h"
#endif
#ifndef __MEMCARD_MEMCARD_H__
#include "memcard\memcard.h"
#endif
#ifndef __MEMCARD_SAVELOAD_H__
#include "memcard\saveload.h"
#endif
/* Std Lib
------- */
@ -167,10 +171,26 @@ static const int OPTIONS_FRAME_H=160;
// Backgrounds
int CFrontEndOptions::s_modeBackground[MODE__COUNT]=
{
FRM__BG1,
FRM__BG2,
FRM__BG3,
FRM__BG4,
FRM__BG5,
FRM__BG7,
FRM__BG8,
FRM__BG9,
};
CGUITextBox *m_loadTextBox;
int CFrontEndOptions::s_loadModeTextIds[LOADMODE__COUNT]=
{
STR__MEMCARD__CHECKING_MEM_CARD, // LOADMODE__INIT
STR__MEMCARD__CHECKING_MEM_CARD, // LOADMODE__CHECKING
STR__MEMCARD__UNFORMATTEDCARD, // LOADMODE__UNFORMATTED
STR__MEMCARD__NOFILESONCARD, // LOADMODE__NODATA
STR__MEMCARD__NOCARDINSLOT, // LOADMODE__NOCARD
STR__FRONTEND__CONFIRM_LOAD, // LOADMODE__CONFIRMLOAD
STR__MEMCARD__LOADINGPLEASEWIAT, // LOADMODE__LOADING
STR__MEMCARD__LOADOK, // LOADMODE__LOADOK
STR__MEMCARD__LOADERROR, // LOADMODE__LOADERROR
};
@ -240,6 +260,7 @@ void CFrontEndOptions::init()
m_background->setColour(80,80,80);
m_background->setSpeed(1,-1);
m_background->setSpeedScale(0);
m_background->setFrame(s_modeBackground[MODE__OPTIONS]);
// Create the menu frames
@ -257,13 +278,17 @@ void CFrontEndOptions::init()
STR__FRONTEND__CONTROLS,
&m_nextMode,MODE__CONTROL);
CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS],
X_BORDER,Y_BORDER+30,OPTIONS_FRAME_W-(X_BORDER*2),20,
X_BORDER,Y_BORDER+20,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__FRONTEND__SCREEN,
&m_nextMode,MODE__SCREEN);
CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS],
X_BORDER,Y_BORDER+60,OPTIONS_FRAME_W-(X_BORDER*2),20,
X_BORDER,Y_BORDER+40,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__FRONTEND__SOUND,
&m_nextMode,MODE__SOUND);
CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS],
X_BORDER,Y_BORDER+60,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__FRONTEND__LOAD,
&m_nextMode,MODE__LOAD);
CGUIFactory::createValueButtonFrame(m_modeMenus[MODE__OPTIONS],
X_BORDER,OPTIONS_FRAME_H-Y_BORDER-20,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__FRONTEND__EXIT,
@ -379,13 +404,46 @@ void CFrontEndOptions::init()
STR__FRONTEND__SPEECH,
&m_speechVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME);
// Memcard menu
m_loadTextBox=new ("textbox") CGUITextBox();
m_loadTextBox->init(m_modeMenus[MODE__LOAD]);
m_loadTextBox->setObjectXYWH(X_BORDER,Y_BORDER,OPTIONS_FRAME_W-(X_BORDER*2),80);
m_loadTextBox->setText(STR__MEMCARD__CHECKING_MEM_CARD);
// Extra memcard frames..
m_loadModeConfirmFrame=new ("loadmodeconfirmframe") CGUIControlFrame();
m_loadModeConfirmFrame->init(NULL);
m_loadModeConfirmFrame->setObjectXYWH(((512-OPTIONS_FRAME_W)/2)+X_BORDER,((256-OPTIONS_FRAME_H)/2)+OPTIONS_FRAME_H-Y_BORDER-40,OPTIONS_FRAME_W-(X_BORDER*2),40);
m_loadModeConfirmFrame->clearFlags(CGUIObject::FLAG_DRAWBORDER);
CGUIFactory::createValueButtonFrame(m_loadModeConfirmFrame,
0,0,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__YES,
&m_loadUserResponse,USERRESPONSE__YES);
CGUIFactory::createValueButtonFrame(m_loadModeConfirmFrame,
0,20,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__NO,
&m_loadUserResponse,USERRESPONSE__NO);
m_loadModeOKFrame=new ("loadmodeokframe") CGUIControlFrame();
m_loadModeOKFrame->init(NULL);
m_loadModeOKFrame->setObjectXYWH(((512-OPTIONS_FRAME_W)/2)+X_BORDER,((256-OPTIONS_FRAME_H)/2)+OPTIONS_FRAME_H-Y_BORDER-40,OPTIONS_FRAME_W-(X_BORDER*2),40);
m_loadModeOKFrame->clearFlags(CGUIObject::FLAG_DRAWBORDER);
CGUIFactory::createValueButtonFrame(m_loadModeOKFrame,
0,0,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__OK,
&m_loadUserResponse,USERRESPONSE__OK);
// Add BACK to all of the sub menus
for(i=1;i<MODE__COUNT;i++)
{
CGUIFactory::createValueButtonFrame(m_modeMenus[i],
X_BORDER,OPTIONS_FRAME_H-Y_BORDER-20,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__FRONTEND__BACK,
&m_nextMode,MODE__OPTIONS);
if(i!=MODE__LOAD)
{
CGUIFactory::createValueButtonFrame(m_modeMenus[i],
X_BORDER,OPTIONS_FRAME_H-Y_BORDER-20,OPTIONS_FRAME_W-(X_BORDER*2),20,
STR__FRONTEND__BACK,
&m_nextMode,MODE__OPTIONS);
}
}
m_bgmVolume=CSoundMediator::getVolume(CSoundMediator::VOL_SONG);
@ -395,6 +453,8 @@ void CFrontEndOptions::init()
m_vibrationStatus=m_lastVibrationStatus=PadGetVibrationIsTurnedOn(0);
m_screenXOff=VidGetXOfs();
m_screenYOff=VidGetYOfs();
m_saveLoadDatabase=NULL;
}
/*----------------------------------------------------------------------
@ -465,7 +525,7 @@ void CFrontEndOptions::render()
rh+=rspeed;
rh&=4095;
paulColourSpaceToRGB(rh,rb,rgb);
//paulColourSpaceToRGB(rh,rb,rgb);
g4=GetPrimG4();
setXYWH(g4,0,0,512,256);
@ -481,6 +541,28 @@ paulColourSpaceToRGB(rh,rb,rgb);
m_background->render();
if(m_mode==MODE__LOAD)
{
switch(m_loadMode)
{
case LOADMODE__INIT:
case LOADMODE__CHECKING:
case LOADMODE__LOADING:
break;
case LOADMODE__UNFORMATTED:
case LOADMODE__NODATA:
case LOADMODE__NOCARD:
case LOADMODE__LOADOK:
case LOADMODE__LOADERROR:
m_loadModeOKFrame->render();
break;
case LOADMODE__CONFIRMLOAD:
m_loadModeConfirmFrame->render();
break;
}
}
m_modeMenus[m_mode]->render();
}
@ -501,12 +583,25 @@ void CFrontEndOptions::think(int _frames)
{
if(m_nextMode!=m_mode)
{
m_modeMenus[m_mode]->unselect();
if(m_nextMode==MODE__LOAD)
{
// Entering LOAD option
setLoadMode(LOADMODE__INIT);
}
else if(m_mode==MODE__LOAD)
{
// Leaving LOAD option
MemCard::Stop();
delete m_saveLoadDatabase;
m_saveLoadDatabase=NULL;
}
if(m_mode!=MODE__LOAD)m_modeMenus[m_mode]->unselect();
m_mode=m_nextMode;
m_modeMenus[m_mode]->select();
if(m_mode!=MODE__LOAD)m_modeMenus[m_mode]->select();
m_background->setFrame(s_modeBackground[m_mode]);
}
m_modeMenus[m_mode]->think(_frames);
if(m_mode!=MODE__LOAD)m_modeMenus[m_mode]->think(_frames);
if(m_mode==MODE__CONTROL)
{
@ -520,6 +615,10 @@ void CFrontEndOptions::think(int _frames)
}
}
}
else if(m_mode==MODE__SCREEN)
{
VidSetXYOfs(m_screenXOff,m_screenYOff);
}
else if(m_mode==MODE__SOUND)
{
if(m_bgmVolume!=CSoundMediator::getVolume(CSoundMediator::VOL_SONG))
@ -535,9 +634,124 @@ void CFrontEndOptions::think(int _frames)
CSoundMediator::setVolume(CSoundMediator::VOL_SPEECH,m_speechVolume);
}
}
else if(m_mode==MODE__SCREEN)
else if(m_mode==MODE__LOAD)
{
VidSetXYOfs(m_screenXOff,m_screenYOff);
if(m_loadModeConfirmFrame->isSelected())m_loadModeConfirmFrame->think(_frames);
if(m_loadModeOKFrame->isSelected())m_loadModeOKFrame->think(_frames);
switch(m_loadMode)
{
case LOADMODE__INIT:
if(m_loadTimeInMode>10)
{
// If we init the memcard as the load page is selected then there's a small but noticable pause
// This hides it a bit..
MemCard::Start();
m_saveLoadDatabase=new ("saveloaddb") CSaveLoadDatabase();
setLoadMode(LOADMODE__CHECKING);
}
break;
case LOADMODE__CHECKING:
if(MemCard::GetCardStatus(0)==MemCard::CS_CardInserted)
{
// Scanning a new card..
m_loadTimeInMode=0;
}
else if(m_loadTimeInMode>60)
{
// Wait for card status to settle for one second before trusting its status
if(MemCard::GetCardStatus(0)==MemCard::CS_NoCard)
{
setLoadMode(LOADMODE__NOCARD);
}
else if(MemCard::GetCardStatus(0)==MemCard::CS_UnformattedCard)
{
setLoadMode(LOADMODE__UNFORMATTED);
}
else if(MemCard::GetFileCountOnCard(0))
{
setLoadMode(LOADMODE__CONFIRMLOAD);
}
else
{
setLoadMode(LOADMODE__NODATA);
}
}
break;
case LOADMODE__UNFORMATTED:
case LOADMODE__NODATA:
if(MemCard::GetCardStatus(0)!=MemCard::CS_ValidCard)
{
setLoadMode(LOADMODE__CHECKING);
}
else if(m_loadUserResponse==USERRESPONSE__OK)
{
m_nextMode=MODE__OPTIONS;
}
break;
case LOADMODE__NOCARD:
if(MemCard::GetCardStatus(0)!=MemCard::CS_NoCard)
{
setLoadMode(LOADMODE__CHECKING);
}
else if(m_loadUserResponse==USERRESPONSE__OK)
{
m_nextMode=MODE__OPTIONS;
}
break;
case LOADMODE__CONFIRMLOAD:
if(MemCard::GetCardStatus(0)!=MemCard::CS_ValidCard)
{
setLoadMode(LOADMODE__CHECKING);
}
else if(m_loadUserResponse==USERRESPONSE__YES)
{
setLoadMode(LOADMODE__LOADING);
m_saveLoadDatabase->startLoad(0);
}
else if(m_loadUserResponse==USERRESPONSE__NO)
{
m_nextMode=MODE__OPTIONS;
}
break;
case LOADMODE__LOADING:
{
int stat=m_saveLoadDatabase->getLoadStatus();
if(stat==CSaveLoadDatabase::FINISHED_OK)
{
setLoadMode(LOADMODE__LOADOK);
}
else if(stat==CSaveLoadDatabase::FAILED)
{
setLoadMode(LOADMODE__LOADERROR);
}
}
break;
case LOADMODE__LOADOK:
if(m_loadUserResponse==USERRESPONSE__OK)
{
m_nextMode=MODE__OPTIONS;
}
break;
case LOADMODE__LOADERROR:
if(m_loadUserResponse==USERRESPONSE__OK)
{
setLoadMode(LOADMODE__CHECKING);
}
break;
}
if(m_saveLoadDatabase)
{
m_saveLoadDatabase->think();
}
m_loadTimeInMode+=_frames;
}
}
@ -585,5 +799,43 @@ CFrontEndScene::FrontEndMode CFrontEndOptions::getNextMode()
return CFrontEndScene::MODE__MAIN_TITLES;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CFrontEndOptions::setLoadMode(int _newMode)
{
if(m_loadModeConfirmFrame->isSelected())m_loadModeConfirmFrame->unselect();
if(m_loadModeOKFrame->isSelected())m_loadModeOKFrame->unselect();
m_loadTextBox->setText(s_loadModeTextIds[_newMode]);
m_loadMode=_newMode;
m_loadTimeInMode=0;
m_loadUserResponse=USERRESPONSE__NONE;
switch(m_loadMode)
{
case LOADMODE__INIT:
case LOADMODE__CHECKING:
case LOADMODE__LOADING:
break;
case LOADMODE__UNFORMATTED:
case LOADMODE__NODATA:
case LOADMODE__NOCARD:
case LOADMODE__LOADOK:
case LOADMODE__LOADERROR:
m_loadModeOKFrame->select();
break;
case LOADMODE__CONFIRMLOAD:
m_loadModeConfirmFrame->select();
break;
}
}
/*===========================================================================
end */

View File

@ -52,12 +52,16 @@ public:
private:
void setLoadMode(int _newMode);
enum
{
MODE__OPTIONS,
MODE__CONTROL,
MODE__SCREEN,
MODE__SOUND,
MODE__LOAD,
MODE__COUNT
};
@ -90,6 +94,29 @@ private:
ICON_COUNT
};
enum
{
LOADMODE__INIT,
LOADMODE__CHECKING,
LOADMODE__UNFORMATTED,
LOADMODE__NODATA,
LOADMODE__NOCARD,
LOADMODE__CONFIRMLOAD,
LOADMODE__LOADING,
LOADMODE__LOADOK,
LOADMODE__LOADERROR,
LOADMODE__COUNT,
};
enum
{
USERRESPONSE__NONE,
USERRESPONSE__OK,
USERRESPONSE__YES,
USERRESPONSE__NO,
};
enum
{
X_BORDER=30,
@ -107,6 +134,14 @@ private:
int m_mode,m_nextMode;
static int s_modeBackground[MODE__COUNT];
int m_loadMode;
int m_loadTimeInMode;
class CSaveLoadDatabase *m_saveLoadDatabase;
static int s_loadModeTextIds[LOADMODE__COUNT];
class CGUIControlFrame *m_loadModeConfirmFrame;
class CGUIControlFrame *m_loadModeOKFrame;
int m_loadUserResponse;
int m_exitFlag;
int m_closingDown;

View File

@ -65,7 +65,7 @@ void CScrollyBackground::init()
setSpeed(DEFAULT_X_SPEED,DEFAULT_Y_SPEED);
setSpeedScale(DEFAULT_SPEED_SCALE);
setOt(DEFAULT_OT);
setFrame(FRM__BG1);
setFrame(FRM__BUTX);
setTheDrawMode(DRAWMODE_NORMAL);
setColour(128,128,128);
setScale(NORMAL_SCALE);