This commit is contained in:
Paul 2000-11-20 15:45:17 +00:00
parent 903a84367b
commit d936b98f6a
9 changed files with 264 additions and 33 deletions

View file

@ -76,8 +76,7 @@ gui_src := gui \
gbutton \ gbutton \
gframe \ gframe \
greadout \ greadout \
gtextbox \ gtextbox
gtextent
locale_src := textdbase locale_src := textdbase

View file

@ -49,6 +49,19 @@
Vars Vars
---- */ ---- */
static CFrontEndMainTitles s_frontEndModeMainTitles;
CFrontEndMode *CFrontEndScene::s_modeCodes[]=
{
&s_frontEndModeMainTitles, // MODE__MAIN_TITLES
&s_frontEndModeMainTitles,//NULL, // MODE__GAME_OPTIONS
&s_frontEndModeMainTitles,//NULL, // MODE__CHOOSE_SLOT
NULL, // MODE__DEMO
NULL, // MODE__NONE
};
CFrontEndScene FrontEndScene; CFrontEndScene FrontEndScene;
@ -60,8 +73,8 @@ CFrontEndScene FrontEndScene;
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndScene::init() void CFrontEndScene::init()
{ {
m_mainTitles=new ("FEMainTitles") CFrontEndMainTitles(); m_mode=MODE__NONE;
m_mainTitles->init(); setMode(MODE__MAIN_TITLES);
} }
@ -73,7 +86,6 @@ void CFrontEndScene::init()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndScene::shutdown() void CFrontEndScene::shutdown()
{ {
m_mainTitles->shutdown(); delete m_mainTitles;
} }
@ -85,7 +97,7 @@ void CFrontEndScene::shutdown()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndScene::render() void CFrontEndScene::render()
{ {
m_mainTitles->render(); s_modeCodes[m_mode]->render();
} }
@ -97,7 +109,14 @@ void CFrontEndScene::render()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndScene::think(int _frames) void CFrontEndScene::think(int _frames)
{ {
m_mainTitles->think(_frames); CFrontEndMode *mode;
mode=s_modeCodes[m_mode];
mode->think(_frames);
if(mode->isReadyToExit())
{
setMode(mode->getNextMode());
}
} }
@ -113,5 +132,29 @@ int CFrontEndScene::readyToShutdown()
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CFrontEndScene::setMode(FrontEndMode _newMode)
{
PAUL_DBGMSG("CFrontEndScene::setMode(%d)",_newMode);
// Close old mode
if(s_modeCodes[m_mode])
{
s_modeCodes[m_mode]->shutdown();
}
// Open new mode
m_mode=_newMode;
s_modeCodes[m_mode]->init();
// s_modeCodes[m_mode]->shutdown();
// ASSERT(0);
}
/*=========================================================================== /*===========================================================================
end */ end */

View file

@ -12,6 +12,7 @@
===========================================================================*/ ===========================================================================*/
#ifndef __FRONTEND_FRONTENTD_H__ #ifndef __FRONTEND_FRONTENTD_H__
#define __FRONTEND_FRONTENTD_H__
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Includes Includes
@ -28,6 +29,14 @@
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Tyepdefs && Defines Tyepdefs && Defines
------------------- */ ------------------- */
typedef enum
{
EXITCODE__NONE,
EXITCODE__START_GAME,
EXITCODE__GOTO_OPTIONS,
} MainTitleExitCode;
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Structure defintions Structure defintions
@ -36,6 +45,16 @@
class CFrontEndScene : public CScene class CFrontEndScene : public CScene
{ {
public: public:
typedef enum
{
MODE__MAIN_TITLES,
MODE__GAME_OPTIONS,
MODE__CHOOSE_SLOT,
MODE__DEMO,
MODE__NONE,
} FrontEndMode;
void init(); void init();
void shutdown(); void shutdown();
void render(); void render();
@ -45,7 +64,26 @@ public:
private: private:
class CFrontEndMainTitles *m_mainTitles; void setMode(FrontEndMode _newMode);
FrontEndMode m_mode;
class CFrontEndMode *m_modeCode;
static class CFrontEndMode *s_modeCodes[];
};
class CFrontEndMode
{
public:
virtual void init()=0;
virtual void shutdown()=0;
virtual void render()=0;
virtual void think(int _frames)=0;
virtual int isReadyToExit()=0;
virtual CFrontEndScene::FrontEndMode getNextMode()=0;
}; };

View file

@ -46,6 +46,22 @@
#include "gfx\fader.h" #include "gfx\fader.h"
#endif #endif
#ifndef __GUI_GUI_H__
#include "gui\gui.h"
#endif
#ifndef __GUI_GTEXTBOX_H__
#include "gui\gtextbox.h"
#endif
#ifndef __GUI_GFRAME_H__
#include "gui\gframe.h"
#endif
#ifndef __GUI_GBUTTON_H__
#include "gui\gbutton.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -95,22 +111,61 @@ int sval=0;
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
int mem;
void CFrontEndMainTitles::init() void CFrontEndMainTitles::init()
{ {
mem=MainRam.TotalRam-MainRam.RamUsed;
PAUL_DBGMSG("initial mem free=%d",mem);
CGUIGroupFrame *fr;
CGUITextBox *tb;
CGUIToggleButton *tg;
m_sprites=new ("MainTitle Sprites") SpriteBank(); m_sprites=new ("MainTitle Sprites") SpriteBank();
m_sprites->load(FRONTEND_FRONTEND_SPR); m_sprites->load(FRONTEND_FRONTEND_SPR);
m_smallFont=new ("MainTitle SmallFont") FontBank(); m_smallFont=new ("MainTitle SmallFont") FontBank();
m_smallFont->initialise(&standardFont); m_smallFont->initialise(&standardFont);
m_smallFont->setJustification(FontBank::JUST_CENTRE); m_smallFont->setJustification(FontBank::JUST_CENTRE);
m_smallFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B);
m_bigFont=new ("MainTitle BigFont") FontBank();
m_bigFont->initialise(&standardFont);
m_bigFont->setJustification(FontBank::JUST_CENTRE);
m_bigFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B);
m_mode=MODE__PRESS_START; m_mode=MODE__PRESS_START;
// Create the main menu ( START GAME/OPTIONS )
m_mainMenu=new ("Main Menu GUI") CGUIControlFrame();
m_mainMenu->init(NULL);
m_mainMenu->setObjectXYWH(106,140,300,40);
m_mainMenu->clearFlags(CGUIObject::FLAG_DRAWBORDER);
PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed));
/*
fr=new ("frame") CGUIGroupFrame();
fr->init(m_mainMenu);
fr->setObjectXYWH(50,0,200,20);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(0,0,200,20);
tb->setText(STR__FRONTEND__START_GAME);
tg=new ("togglebutton") CGUIToggleButton();
tg->init(fr);
tg->setButtonTarget(&m_startGameFlag);
fr=new ("frame") CGUIGroupFrame();
fr->init(m_mainMenu);
fr->setObjectXYWH(50,20,200,20);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(0,0,200,20);
tb->setText(STR__FRONTEND__OPTIONS);
tg=new ("togglebutton") CGUIToggleButton();
tg->init(fr);
tg->setButtonTarget(&m_gotoOptionsFlag);
m_mainMenu->select();
*/
m_startGameFlag=false;
m_gotoOptionsFlag=false;
CFader::setFadingIn(); CFader::setFadingIn();
} }
@ -123,9 +178,10 @@ void CFrontEndMainTitles::init()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFrontEndMainTitles::shutdown() void CFrontEndMainTitles::shutdown()
{ {
m_bigFont->dump(); delete m_bigFont; m_mainMenu->shutdown(); delete m_mainMenu;
m_smallFont->dump(); delete m_smallFont; m_smallFont->dump(); delete m_smallFont;
m_sprites->dump(); delete m_sprites; m_sprites->dump(); delete m_sprites;
PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed));
} }
@ -153,7 +209,7 @@ void CFrontEndMainTitles::render()
// Game logo/title // Game logo/title
fh=m_sprites->getFrameHeader(FRM__SBLOGO); fh=m_sprites->getFrameHeader(FRM__SBLOGO);
m_sprites->printFT4(fh,256-(fh->W/2),LOGO_CENTRE_Y-(fh->H/2),0,0,20); m_sprites->printFT4(fh,256-(fh->W/2),LOGO_CENTRE_Y-(fh->H/2),0,0,220);
m_smallFont->setColour(GAME_TITLE_TEXT_R,GAME_TITLE_TEXT_G,GAME_TITLE_TEXT_B); m_smallFont->setColour(GAME_TITLE_TEXT_R,GAME_TITLE_TEXT_G,GAME_TITLE_TEXT_B);
m_smallFont->print(256,GAME_TITLE_TEXT_CENTRE_Y,STR__FRONTEND__GAME_TITLE); m_smallFont->print(256,GAME_TITLE_TEXT_CENTRE_Y,STR__FRONTEND__GAME_TITLE);
m_smallFont->setColour(0,0,0); m_smallFont->setColour(0,0,0);
@ -161,7 +217,7 @@ void CFrontEndMainTitles::render()
// The island // The island
fh=m_sprites->getFrameHeader(FRM__ISLAND); fh=m_sprites->getFrameHeader(FRM__ISLAND);
m_sprites->printFT4(fh,ISLAND_LEFT_X,ISLAND_BOTTOM_Y-(fh->H),0,0,11); m_sprites->printFT4(fh,ISLAND_LEFT_X,ISLAND_BOTTOM_Y-(fh->H),0,0,221);
// Sky // Sky
fh=m_sprites->getFrameHeader(FRM_SKY); fh=m_sprites->getFrameHeader(FRM_SKY);
@ -181,7 +237,12 @@ void CFrontEndMainTitles::render()
case MODE__PRESS_START: case MODE__PRESS_START:
renderPressStart(); renderPressStart();
break; break;
case MODE__SELECT_OPTION: case MODE__SELECT_OPTION:
m_mainMenu->render();
break;
default:
break; break;
} }
} }
@ -203,15 +264,72 @@ void CFrontEndMainTitles::think(int _frames)
if(!CFader::isFading()&&PadGetDown(0)&PAD_START) if(!CFader::isFading()&&PadGetDown(0)&PAD_START)
{ {
m_mode=MODE__SELECT_OPTION; m_mode=MODE__SELECT_OPTION;
CFader::setFadingOut();
} }
break; break;
case MODE__SELECT_OPTION: case MODE__SELECT_OPTION:
m_mainMenu->think(_frames);
if(m_startGameFlag)
{
// CFader::setFadingOut();
m_mode=MODE__START_GAME;
}
else if(m_gotoOptionsFlag)
{
CFader::setFadingOut();
m_mode=MODE__GOTO_OPTIONS;
}
break;
default:
break; break;
} }
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CFrontEndMainTitles::isReadyToExit()
{
return !CFader::isFading()&&(m_mode==MODE__START_GAME||m_mode==MODE__GOTO_OPTIONS);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
CFrontEndScene::FrontEndMode CFrontEndMainTitles::getNextMode()
{
CFrontEndScene::FrontEndMode ret;
ret=CFrontEndScene::MODE__NONE;
switch(m_mode)
{
case MODE__PRESS_START:
case MODE__SELECT_OPTION:
ASSERT(0);
break;
case MODE__START_GAME:
ret=CFrontEndScene::MODE__CHOOSE_SLOT;
break;
case MODE__GOTO_OPTIONS:
ret=CFrontEndScene::MODE__GAME_OPTIONS;
break;
}
return ret;
}
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
@ -336,7 +454,7 @@ void CFrontEndMainTitles::renderPressStart()
{ {
if(!CFader::isFading()) if(!CFader::isFading())
{ {
m_bigFont->print(256,PRESS_START_TEXT_Y,STR__FRONTEND__PRESS_START); m_smallFont->print(256,PRESS_START_TEXT_Y,STR__FRONTEND__PRESS_START);
} }
} }

View file

@ -12,6 +12,7 @@
===========================================================================*/ ===========================================================================*/
#ifndef __FRONTEND_MAINTITL_H__ #ifndef __FRONTEND_MAINTITL_H__
#define __FRONTEND_MAINTITL_H__
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Includes Includes
@ -21,6 +22,10 @@
#include "gfx\prim.h" #include "gfx\prim.h"
#endif #endif
#ifndef __FRONTEND_FRONTENTD_H__
#include "frontend\frontend.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -33,7 +38,7 @@
Structure defintions Structure defintions
-------------------- */ -------------------- */
class CFrontEndMainTitles class CFrontEndMainTitles : public CFrontEndMode
{ {
public: public:
void init(); void init();
@ -41,6 +46,9 @@ public:
void render(); void render();
void think(int _frames); void think(int _frames);
int isReadyToExit();
CFrontEndScene::FrontEndMode getNextMode();
private: private:
enum enum
@ -67,6 +75,8 @@ private:
{ {
MODE__PRESS_START, MODE__PRESS_START,
MODE__SELECT_OPTION, MODE__SELECT_OPTION,
MODE__START_GAME,
MODE__GOTO_OPTIONS,
}; };
POLY_FT4 *prepareSeaPortionFT4(struct sFrameHdr *_fh,int _x,int _y,int _w,int _h,int _rgb); POLY_FT4 *prepareSeaPortionFT4(struct sFrameHdr *_fh,int _x,int _y,int _w,int _h,int _rgb);
@ -76,9 +86,14 @@ private:
class SpriteBank *m_sprites; class SpriteBank *m_sprites;
class FontBank *m_smallFont; class FontBank *m_smallFont;
class FontBank *m_bigFont;
class CGUIControlFrame *m_mainMenu;
int m_mode; int m_mode;
int m_startGameFlag;
int m_gotoOptionsFlag;
}; };

View file

@ -252,8 +252,14 @@ void dumpDebugMem()
AddPrimToList( F4, 1 ); AddPrimToList( F4, 1 );
mem = &memDump[ s_currentMemPart ]; mem = &memDump[ s_currentMemPart ];
if (mem->addr) len = *(((u32 *)mem->addr) - 1); if (mem->addr)
else len = 0; #ifdef USE_MEM_GUARDS
len = *(((u32 *)mem->addr) - 3);
#else
len = *(((u32 *)mem->addr) - 1);
#endif
else
len = 0;
sprintf( Text, "%d\n", s_currentMemPart ); sprintf( Text, "%d\n", s_currentMemPart );
if (mem->addr) if (mem->addr)
@ -273,7 +279,7 @@ void dumpDebugMem()
sprintf( Text, "%sAddr - NULL\nLen - 0\nName - Undefined\nFile - Undefined, Line - 0", Text ); sprintf( Text, "%sAddr - NULL\nLen - 0\nName - Undefined\nFile - Undefined, Line - 0", Text );
} }
s_debugFont.print( s_dumpTextX, s_dumpTextY, (u8*)Text ); s_debugFont.print( s_dumpTextX, s_dumpTextY, Text );
} }
} }
@ -296,7 +302,7 @@ void addDebugMem( void * addr, const char * name, const char * file, int line )
scene = GameState::getCurrentScene(); scene = GameState::getCurrentScene();
if (scene) if (scene)
{ {
sname = scene->GetSceneName(); sname = scene->getSceneName();
id = -1; id = -1;
for (int i=0;i<s_nbSceneNames;i++) for (int i=0;i<s_nbSceneNames;i++)

View file

@ -11,7 +11,7 @@
#endif #endif
// #define __DEBUG_MEM__ // Define if you want to debug memory - TS #define __DEBUG_MEM__ // Define if you want to debug memory - TS
/*****************************************************************************/ /*****************************************************************************/

View file

@ -66,9 +66,9 @@
#include "gui\gbutton.h" #include "gui\gbutton.h"
#endif #endif
#ifndef __GUI_GTEXTENT_H__ //#ifndef __GUI_GTEXTENT_H__
#include "gui\gtextent.h" //#include "gui\gtextent.h"
#endif //#endif
#ifndef __LOCALE_TEXTDBASE_H__ #ifndef __LOCALE_TEXTDBASE_H__
#include "locale\textdbase.h" #include "locale\textdbase.h"
@ -146,6 +146,10 @@ CGUIControlFrame *baseGUIObject;
void CPaulScene::init() void CPaulScene::init()
{ {
s_fontBank.initialise(&standardFont);
s_fontBank.setColour(255,255,255);
/*
CGUIGroupFrame *fr; CGUIGroupFrame *fr;
CGUITextBox *tb; CGUITextBox *tb;
CGUIToggleButton *tg; CGUIToggleButton *tg;
@ -155,9 +159,6 @@ void CPaulScene::init()
CGUISliderButton *sl; CGUISliderButton *sl;
CGUITextEntry *te; CGUITextEntry *te;
s_fontBank.initialise(&standardFont);
s_fontBank.setColour(255,255,255);
int mem=MainRam.TotalRam-MainRam.RamUsed; int mem=MainRam.TotalRam-MainRam.RamUsed;
PAUL_DBGMSG("initial mem free=%d",mem); PAUL_DBGMSG("initial mem free=%d",mem);
@ -252,6 +253,7 @@ PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed));
s_bg3->init(); s_bg3->init();
s_bg3->setSpeed(0,-2); s_bg3->setSpeed(0,-2);
s_bg3->setOt(1002); s_bg3->setOt(1002);
*/
} }
@ -264,10 +266,12 @@ PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed));
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPaulScene::shutdown() void CPaulScene::shutdown()
{ {
/*
s_bg3->shutdown(); s_bg3->shutdown();
s_bg2->shutdown(); s_bg2->shutdown();
s_bg1->shutdown(); s_bg1->shutdown();
s_fontBank.dump(); s_fontBank.dump();
*/
} }

View file

@ -107,6 +107,11 @@ void InitSystem() // reordered to reduce black screen (hope all is well
CBubicleFactory::init(); CBubicleFactory::init();
#if defined(__DEBUG_MEM__)
DebugMemFontInit();
#endif
#ifdef __USER_paul__ #ifdef __USER_paul__
s_paulScene.init(); s_paulScene.init();
#endif #endif
@ -116,7 +121,10 @@ s_paulScene.init();
/*****************************************************************************/ /*****************************************************************************/
/*****************************************************************************/ /*****************************************************************************/
static int s_time = 0; static int s_time = 0;
#if defined(__DEBUG_MEM__)
void dumpDebugMem(); void dumpDebugMem();
void DebugMemFontInit();
#endif
void MainLoop() void MainLoop()
{ {