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 \
gframe \
greadout \
gtextbox \
gtextent
gtextbox
locale_src := textdbase

View File

@ -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 */

View File

@ -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;
};

View File

@ -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);
}
}

View File

@ -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;
};

View File

@ -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++)

View File

@ -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
/*****************************************************************************/

View File

@ -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();
*/
}

View File

@ -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()
{