From 0640433c8ae3b24320f1ed06a937006b39677946 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 2 Jul 2001 15:46:34 +0000 Subject: [PATCH] --- data/translations/text.dat | 24 +++++++++++--- makefile.gaz | 2 ++ makefile.gfx | 3 +- source/frontend/options.cpp | 17 ++++++++-- source/map/map.cpp | 19 +++++++++++ source/map/map.h | 2 +- source/paul/scenesel.cpp | 5 +++ source/save/save.cpp | 66 ++++++++++++++++++++++++++++++++++--- source/save/save.h | 1 + 9 files changed, 125 insertions(+), 14 deletions(-) diff --git a/data/translations/text.dat b/data/translations/text.dat index 1d76bd91b..06bede423 100644 --- a/data/translations/text.dat +++ b/data/translations/text.dat @@ -115,9 +115,23 @@ eng=SpongeBob game data found.\nAre you sure you want to load? + +; --------------------------------------------------------------- +; Save scene ( also see memcard section ) +; --------------------------------------------------------------- + +[STR__SAVE__DO_YOU_WANT_TO_SAVE] +eng=Do you want to save? +[STR__SAVE__UNFORMATTEDCARD] +eng=MEMORY CARD in MEMORY CARD slot 1 is not formatted.\nDo you want to format it now? + + + + ; --------------------------------------------------------------- ; Memcard ; --------------------------------------------------------------- + [STR__MEMCARD__CHECKING_MEM_CARD] eng=Checking...\nPlease do not remove the MEMORY CARD [STR__MEMCARD__UNFORMATTEDCARD] @@ -129,9 +143,9 @@ 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! +eng=Load complete!\nPress X to continue [STR__MEMCARD__LOADERROR] -eng=Load Error! +eng=Load Error!\nPress X to continue [STR__MEMCARD__NOSPACEONCARD] eng=Insufficient free blocks available in MEMORY CARD of MEMORY CARD SLOT 1 [STR__MEMCARD__DUPLICATESAVENAME] @@ -146,7 +160,7 @@ eng=Format complete!\n\nPress X to continue eng=Format Error!\n\nPress X to continue [STR__MEMCARD__FORMATTINGINTERRUPTED] eng=Operation interrupted!\n\nPress X to continue -[STR__MEMCARD__SAVEINGPLEASEWIAT] +[STR__MEMCARD__SAVINGPLEASEWAIT] eng=Saving...\nDo not remove the MEMORY CARD in MEMORY CARD slot 1 [STR__MEMCARD__SAVEOK] eng=Save complete!\n\nPress X to continue @@ -156,8 +170,6 @@ eng=Save error!\n\nPress X to continue - - ; --------------------------------------------------------------- ; Back end ; --------------------------------------------------------------- @@ -406,6 +418,8 @@ eng=Select level eng=Select chapter [STR__MAP_SCREEN__X_TO_START] eng=Start +[STR__MAP_SCREEN__TRIANGLE_TO_SAVE] +eng=Save diff --git a/makefile.gaz b/makefile.gaz index ecdbfff4b..b19cb67aa 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -291,6 +291,8 @@ player_src := demoplay \ pscart \ psfloat +save_src := save + script_src := script \ function diff --git a/makefile.gfx b/makefile.gfx index ac348ae1f..f84ea2de0 100644 --- a/makefile.gfx +++ b/makefile.gfx @@ -248,7 +248,8 @@ UI_GFX_TRANS := +bambootopleft.bmp +bamboobotleft.bmp +bambootopright.bmp +ba +mappointer.bmp +speechbubblecorner.bmp \ faces/mr_krabs.bmp faces/patrick.bmp faces/plankton.bmp \ faces/sandy.bmp faces/spongebob.bmp faces/squidward.bmp \ - faces/mermaidman.bmp faces/barnacleboy.bmp faces/jack_custard.bmp faces/gary.bmp + faces/mermaidman.bmp faces/barnacleboy.bmp faces/jack_custard.bmp faces/gary.bmp \ + +helpbox1.bmp +helpbox2.bmp +helpbox3.bmp +helpbox4.bmp UI_GFX_TRANS_IN := $(foreach FILE,$(UI_GFX_TRANS),$(UI_GFX_DIR)/$(FILE)) #### diff --git a/source/frontend/options.cpp b/source/frontend/options.cpp index f0d123de3..dc1aec0e6 100644 --- a/source/frontend/options.cpp +++ b/source/frontend/options.cpp @@ -663,7 +663,7 @@ void CFrontEndOptions::think(int _frames) } else if(m_loadTimeInMode>60) { - // Wait for card status to settle for one second before trusting its status + // Wait for card status to settle for one second before trusting it if(MemCard::GetCardStatus(0)==MemCard::CS_NoCard) { setLoadMode(LOADMODE__NOCARD); @@ -684,6 +684,16 @@ void CFrontEndOptions::think(int _frames) break; case LOADMODE__UNFORMATTED: + if(MemCard::GetCardStatus(0)!=MemCard::CS_UnformattedCard) + { + setLoadMode(LOADMODE__CHECKING); + } + else if(m_loadUserResponse==USERRESPONSE__OK) + { + m_nextMode=MODE__OPTIONS; + } + break; + case LOADMODE__NODATA: if(MemCard::GetCardStatus(0)!=MemCard::CS_ValidCard) { @@ -714,7 +724,10 @@ void CFrontEndOptions::think(int _frames) else if(m_loadUserResponse==USERRESPONSE__YES) { setLoadMode(LOADMODE__LOADING); - m_saveLoadDatabase->startLoad(0); + if(!m_saveLoadDatabase->startLoad(0)) + { + setLoadMode(LOADMODE__LOADERROR); + } } else if(m_loadUserResponse==USERRESPONSE__NO) { diff --git a/source/map/map.cpp b/source/map/map.cpp index 6c04b69df..bf708fcef 100644 --- a/source/map/map.cpp +++ b/source/map/map.cpp @@ -34,6 +34,10 @@ #include "game\game.h" #endif +#ifndef __SAVE_SAVE_H__ +#include "save\save.h" +#endif + #ifndef __GFX_FADER_H__ #include "gfx\fader.h" #endif @@ -352,6 +356,14 @@ void CMapScene::renderInstructions() sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT; m_font->print(x,y,STR__MAP_SCREEN__X_TO_START); + + y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES; + fh1=sb->getFrameHeader(FRM__BUTT); + width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(STR__MAP_SCREEN__TRIANGLE_TO_SAVE); + x=256-(width/2); + sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); + x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT; + m_font->print(x,y,STR__MAP_SCREEN__TRIANGLE_TO_SAVE); } @@ -441,6 +453,13 @@ void CMapScene::think(int _frames) CFader::setFadingOut(); GameState::setNextScene(&GameScene); } + else if(pad&PAD_TRIANGLE) + { + CSoundMediator::playSfx(CSoundMediator::SFX_FRONT_END__OK); + m_readyToExit=true; + CFader::setFadingOut(); + GameState::setNextScene(&SaveScene); + } } } diff --git a/source/map/map.h b/source/map/map.h index 9c5c57499..8c86a2adc 100644 --- a/source/map/map.h +++ b/source/map/map.h @@ -61,7 +61,7 @@ private: MAP_LEVEL_WIDTH=140, MAP_LEVEL_HEIGHT=60, - MAP_INSTRUCTIONS_YSTART=173, + MAP_INSTRUCTIONS_YSTART=170, MAP_INSTRUCTIONS_BUTTON_Y_OFFSET=3, MAP_INSTRUCTIONS_TEXT_R=128, MAP_INSTRUCTIONS_TEXT_G=64, diff --git a/source/paul/scenesel.cpp b/source/paul/scenesel.cpp index 13c04624b..229bf8eab 100644 --- a/source/paul/scenesel.cpp +++ b/source/paul/scenesel.cpp @@ -75,6 +75,10 @@ #include "paul\animtest.h" #endif +#ifndef __SAVE_SAVE_H__ +#include "save\save.h" +#endif + /* Std Lib @@ -115,6 +119,7 @@ CScene *CSceneSelector::s_sceneList[]= &PartyScene, &CreditsScene, &AnimTestScene, + &SaveScene, }; int CSceneSelector::s_sceneCount=sizeof(s_sceneList)/sizeof(CScene*); diff --git a/source/save/save.cpp b/source/save/save.cpp index 37b2ca866..f9090f4c6 100644 --- a/source/save/save.cpp +++ b/source/save/save.cpp @@ -204,6 +204,7 @@ void CSaveScene::render() case MODE__CHECKING: case MODE__FORMATTING: + case MODE__CHECKINGFORMAT: case MODE__SAVING: m_blankFrame->render(); break; @@ -214,8 +215,6 @@ void CSaveScene::render() break; case MODE__FORMATOK: - break; - case MODE__FORMATERROR: case MODE__NOCARD: case MODE__NOSPACE: @@ -265,7 +264,7 @@ void CSaveScene::think(int _frames) } else if(m_timeInMode>60) { - // Wait for card status to settle for one second before trusting its status + // Wait for card status to settle for one second before trusting it if(MemCard::GetCardStatus(0)==MemCard::CS_NoCard) { setMode(MODE__NOCARD); @@ -294,7 +293,7 @@ void CSaveScene::think(int _frames) break; case MODE__UNFORMATTED: - if(MemCard::GetCardStatus(0)!=MemCard::CS_ValidCard) + if(MemCard::GetCardStatus(0)!=MemCard::CS_UnformattedCard) { setMode(MODE__CHECKING); } @@ -321,7 +320,8 @@ void CSaveScene::think(int _frames) int stat=m_saveLoadDatabase->getFormatStatus(); if(stat==CSaveLoadDatabase::FINISHED_OK) { - setMode(MODE__FORMATOK); + MemCard::InvalidateCard(0); + setMode(MODE__CHECKINGFORMAT); } else if(stat==CSaveLoadDatabase::FAILED) { @@ -330,7 +330,57 @@ void CSaveScene::think(int _frames) } break; + case MODE__CHECKINGFORMAT: + if(MemCard::GetCardStatus(0)==MemCard::CS_CardInserted) + { + // Scanning a new card.. + m_timeInMode=0; + } + else if(m_timeInMode>240) + { + // Wait for card status to settle for one second before trusting it + if(MemCard::GetCardStatus(0)==MemCard::CS_NoCard) + { + setMode(MODE__NOCARD); + } + else if(MemCard::GetCardStatus(0)==MemCard::CS_UnformattedCard) + { + setMode(MODE__UNFORMATTED); + } + else if(MemCard::GetFileCountOnCard(0)) + { + setMode(MODE__CONFIRMOVERWRITE); + } + else if(MemCard::GetFreeBlocksOnCard(0)==0) + { + setMode(MODE__NOSPACE); + } + else + { + setMode(MODE__FORMATOK); + } + } + break; + case MODE__FORMATOK: + if(MemCard::GetCardStatus(0)!=MemCard::CS_ValidCard) + { + setMode(MODE__CHECKING); + } + else + { + m_okResponseFrame->think(_frames); + if(m_userResponse==USERRESPONSE__OK) + { + setMode(MODE__SAVING); + if(!m_saveLoadDatabase->startSave("blah")) + { + setMode(MODE__SAVEERROR); + } + } + } + break; + case MODE__FORMATERROR: case MODE__NOSPACE: case MODE__SAVEERROR: @@ -446,12 +496,17 @@ void CSaveScene::setMode(MODE _newMode) case MODE__UNFORMATTED: m_yesNoResponseTextBox->setText(STR__SAVE__UNFORMATTEDCARD); + m_yesNoResponseFrame->select(); break; case MODE__FORMATTING: m_blankTextBox->setText(STR__MEMCARD__FORMATTINGPLEASEWIAT); break; + case MODE__CHECKINGFORMAT: + m_blankTextBox->setText(STR__MEMCARD__FORMATTINGPLEASEWIAT); + break; + case MODE__FORMATOK: m_okResponseTextBox->setText(STR__MEMCARD__FORMATTINGOK); m_okResponseFrame->select(); @@ -509,6 +564,7 @@ static const char *text[]= "MODE__CHECKING", "MODE__UNFORMATTED", "MODE__FORMATTING", + "MODE__CHECKINGFORMAT", "MODE__FORMATOK", "MODE__FORMATERROR", "MODE__NOCARD", diff --git a/source/save/save.h b/source/save/save.h index 5ea4ddd3b..d77ba4071 100644 --- a/source/save/save.h +++ b/source/save/save.h @@ -52,6 +52,7 @@ private: MODE__CHECKING, MODE__UNFORMATTED, MODE__FORMATTING, + MODE__CHECKINGFORMAT, MODE__FORMATOK, MODE__FORMATERROR, MODE__NOCARD,