This commit is contained in:
parent
903a84367b
commit
d936b98f6a
9 changed files with 264 additions and 33 deletions
|
@ -76,8 +76,7 @@ gui_src := gui \
|
|||
gbutton \
|
||||
gframe \
|
||||
greadout \
|
||||
gtextbox \
|
||||
gtextent
|
||||
gtextbox
|
||||
|
||||
locale_src := textdbase
|
||||
|
||||
|
|
|
@ -49,6 +49,19 @@
|
|||
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;
|
||||
|
||||
|
||||
|
@ -60,8 +73,8 @@ CFrontEndScene FrontEndScene;
|
|||
---------------------------------------------------------------------- */
|
||||
void CFrontEndScene::init()
|
||||
{
|
||||
m_mainTitles=new ("FEMainTitles") CFrontEndMainTitles();
|
||||
m_mainTitles->init();
|
||||
m_mode=MODE__NONE;
|
||||
setMode(MODE__MAIN_TITLES);
|
||||
}
|
||||
|
||||
|
||||
|
@ -73,7 +86,6 @@ void CFrontEndScene::init()
|
|||
---------------------------------------------------------------------- */
|
||||
void CFrontEndScene::shutdown()
|
||||
{
|
||||
m_mainTitles->shutdown(); delete m_mainTitles;
|
||||
}
|
||||
|
||||
|
||||
|
@ -85,7 +97,7 @@ void CFrontEndScene::shutdown()
|
|||
---------------------------------------------------------------------- */
|
||||
void CFrontEndScene::render()
|
||||
{
|
||||
m_mainTitles->render();
|
||||
s_modeCodes[m_mode]->render();
|
||||
}
|
||||
|
||||
|
||||
|
@ -97,7 +109,14 @@ void CFrontEndScene::render()
|
|||
---------------------------------------------------------------------- */
|
||||
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 */
|
|
@ -12,6 +12,7 @@
|
|||
===========================================================================*/
|
||||
|
||||
#ifndef __FRONTEND_FRONTENTD_H__
|
||||
#define __FRONTEND_FRONTENTD_H__
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
|
@ -28,6 +29,14 @@
|
|||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
typedef enum
|
||||
{
|
||||
EXITCODE__NONE,
|
||||
|
||||
EXITCODE__START_GAME,
|
||||
EXITCODE__GOTO_OPTIONS,
|
||||
} MainTitleExitCode;
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
|
@ -36,6 +45,16 @@
|
|||
class CFrontEndScene : public CScene
|
||||
{
|
||||
public:
|
||||
typedef enum
|
||||
{
|
||||
MODE__MAIN_TITLES,
|
||||
MODE__GAME_OPTIONS,
|
||||
MODE__CHOOSE_SLOT,
|
||||
MODE__DEMO,
|
||||
|
||||
MODE__NONE,
|
||||
} FrontEndMode;
|
||||
|
||||
void init();
|
||||
void shutdown();
|
||||
void render();
|
||||
|
@ -45,7 +64,26 @@ public:
|
|||
|
||||
|
||||
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;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -46,6 +46,22 @@
|
|||
#include "gfx\fader.h"
|
||||
#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
|
||||
------- */
|
||||
|
@ -95,22 +111,61 @@ int sval=0;
|
|||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
int mem;
|
||||
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->load(FRONTEND_FRONTEND_SPR);
|
||||
|
||||
m_smallFont=new ("MainTitle SmallFont") FontBank();
|
||||
m_smallFont->initialise(&standardFont);
|
||||
m_smallFont->setJustification(FontBank::JUST_CENTRE);
|
||||
|
||||
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_smallFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B);
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -123,9 +178,10 @@ void CFrontEndMainTitles::init()
|
|||
---------------------------------------------------------------------- */
|
||||
void CFrontEndMainTitles::shutdown()
|
||||
{
|
||||
m_bigFont->dump(); delete m_bigFont;
|
||||
m_mainMenu->shutdown(); delete m_mainMenu;
|
||||
m_smallFont->dump(); delete m_smallFont;
|
||||
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
|
||||
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->print(256,GAME_TITLE_TEXT_CENTRE_Y,STR__FRONTEND__GAME_TITLE);
|
||||
m_smallFont->setColour(0,0,0);
|
||||
|
@ -161,7 +217,7 @@ void CFrontEndMainTitles::render()
|
|||
|
||||
// The 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
|
||||
fh=m_sprites->getFrameHeader(FRM_SKY);
|
||||
|
@ -181,7 +237,12 @@ void CFrontEndMainTitles::render()
|
|||
case MODE__PRESS_START:
|
||||
renderPressStart();
|
||||
break;
|
||||
|
||||
case MODE__SELECT_OPTION:
|
||||
m_mainMenu->render();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -203,10 +264,24 @@ void CFrontEndMainTitles::think(int _frames)
|
|||
if(!CFader::isFading()&&PadGetDown(0)&PAD_START)
|
||||
{
|
||||
m_mode=MODE__SELECT_OPTION;
|
||||
CFader::setFadingOut();
|
||||
}
|
||||
break;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -218,7 +293,50 @@ CFader::setFadingOut();
|
|||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
POLY_FT4 *CFrontEndMainTitles::prepareSeaPortionFT4(sFrameHdr *_fh,int _x,int _y,int _w,int _h,int _rgb)
|
||||
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:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
POLY_FT4 *CFrontEndMainTitles::prepareSeaPortionFT4(sFrameHdr *_fh,int _x,int _y,int _w,int _h,int _rgb)
|
||||
{
|
||||
int u,v,w,h;
|
||||
POLY_FT4 *ft4;
|
||||
|
@ -336,7 +454,7 @@ void CFrontEndMainTitles::renderPressStart()
|
|||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
===========================================================================*/
|
||||
|
||||
#ifndef __FRONTEND_MAINTITL_H__
|
||||
#define __FRONTEND_MAINTITL_H__
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
|
@ -21,6 +22,10 @@
|
|||
#include "gfx\prim.h"
|
||||
#endif
|
||||
|
||||
#ifndef __FRONTEND_FRONTENTD_H__
|
||||
#include "frontend\frontend.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
@ -33,7 +38,7 @@
|
|||
Structure defintions
|
||||
-------------------- */
|
||||
|
||||
class CFrontEndMainTitles
|
||||
class CFrontEndMainTitles : public CFrontEndMode
|
||||
{
|
||||
public:
|
||||
void init();
|
||||
|
@ -41,6 +46,9 @@ public:
|
|||
void render();
|
||||
void think(int _frames);
|
||||
|
||||
int isReadyToExit();
|
||||
CFrontEndScene::FrontEndMode getNextMode();
|
||||
|
||||
|
||||
private:
|
||||
enum
|
||||
|
@ -67,6 +75,8 @@ private:
|
|||
{
|
||||
MODE__PRESS_START,
|
||||
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);
|
||||
|
@ -76,9 +86,14 @@ private:
|
|||
|
||||
class SpriteBank *m_sprites;
|
||||
class FontBank *m_smallFont;
|
||||
class FontBank *m_bigFont;
|
||||
|
||||
class CGUIControlFrame *m_mainMenu;
|
||||
|
||||
int m_mode;
|
||||
|
||||
int m_startGameFlag;
|
||||
int m_gotoOptionsFlag;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -252,8 +252,14 @@ void dumpDebugMem()
|
|||
AddPrimToList( F4, 1 );
|
||||
|
||||
mem = &memDump[ s_currentMemPart ];
|
||||
if (mem->addr) len = *(((u32 *)mem->addr) - 1);
|
||||
else len = 0;
|
||||
if (mem->addr)
|
||||
#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 );
|
||||
if (mem->addr)
|
||||
|
@ -273,7 +279,7 @@ void dumpDebugMem()
|
|||
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();
|
||||
if (scene)
|
||||
{
|
||||
sname = scene->GetSceneName();
|
||||
sname = scene->getSceneName();
|
||||
|
||||
id = -1;
|
||||
for (int i=0;i<s_nbSceneNames;i++)
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#endif
|
||||
|
||||
|
||||
// #define __DEBUG_MEM__ // Define if you want to debug memory - TS
|
||||
#define __DEBUG_MEM__ // Define if you want to debug memory - TS
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -66,9 +66,9 @@
|
|||
#include "gui\gbutton.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GUI_GTEXTENT_H__
|
||||
#include "gui\gtextent.h"
|
||||
#endif
|
||||
//#ifndef __GUI_GTEXTENT_H__
|
||||
//#include "gui\gtextent.h"
|
||||
//#endif
|
||||
|
||||
#ifndef __LOCALE_TEXTDBASE_H__
|
||||
#include "locale\textdbase.h"
|
||||
|
@ -146,6 +146,10 @@ CGUIControlFrame *baseGUIObject;
|
|||
|
||||
void CPaulScene::init()
|
||||
{
|
||||
s_fontBank.initialise(&standardFont);
|
||||
s_fontBank.setColour(255,255,255);
|
||||
|
||||
/*
|
||||
CGUIGroupFrame *fr;
|
||||
CGUITextBox *tb;
|
||||
CGUIToggleButton *tg;
|
||||
|
@ -154,10 +158,7 @@ void CPaulScene::init()
|
|||
CGUIBarReadout *br;
|
||||
CGUISliderButton *sl;
|
||||
CGUITextEntry *te;
|
||||
|
||||
s_fontBank.initialise(&standardFont);
|
||||
s_fontBank.setColour(255,255,255);
|
||||
|
||||
|
||||
int mem=MainRam.TotalRam-MainRam.RamUsed;
|
||||
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->setSpeed(0,-2);
|
||||
s_bg3->setOt(1002);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
@ -264,10 +266,12 @@ PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed));
|
|||
---------------------------------------------------------------------- */
|
||||
void CPaulScene::shutdown()
|
||||
{
|
||||
/*
|
||||
s_bg3->shutdown();
|
||||
s_bg2->shutdown();
|
||||
s_bg1->shutdown();
|
||||
s_fontBank.dump();
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -107,6 +107,11 @@ void InitSystem() // reordered to reduce black screen (hope all is well
|
|||
|
||||
CBubicleFactory::init();
|
||||
|
||||
#if defined(__DEBUG_MEM__)
|
||||
DebugMemFontInit();
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __USER_paul__
|
||||
s_paulScene.init();
|
||||
#endif
|
||||
|
@ -116,7 +121,10 @@ s_paulScene.init();
|
|||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
static int s_time = 0;
|
||||
#if defined(__DEBUG_MEM__)
|
||||
void dumpDebugMem();
|
||||
void DebugMemFontInit();
|
||||
#endif
|
||||
|
||||
void MainLoop()
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue