This commit is contained in:
Paul 2001-05-13 21:06:26 +00:00
parent 1a606c048d
commit d18e92c6ae
10 changed files with 194 additions and 33 deletions

View file

@ -70,6 +70,10 @@
#include "map\map.h" #include "map\map.h"
#endif #endif
#ifndef __GAME_GAMESLOT_H__
#include "game\gameslot.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -169,6 +173,11 @@ void CFrontEndScene::init()
m_font=new ("frontendfont") FontBank(); m_font=new ("frontendfont") FontBank();
m_font->initialise(&standardFont); m_font->initialise(&standardFont);
m_font->setJustification(FontBank::JUST_CENTRE); m_font->setJustification(FontBank::JUST_CENTRE);
#ifndef __E3__
CGameSlotManager::eraseGameSlot(0);
CGameSlotManager::setActiveSlot(0);
#endif
} }

View file

@ -296,6 +296,21 @@ CPlayer * CGameScene::getPlayer()
return( m_player ); return( m_player );
} }
/*****************************************************************************/
int CGameScene::getChapterNumber()
{
return Level.getCurrentChapter();
}
int CGameScene::getLevelNumber()
{
return Level.getCurrentChapterLevel();
}
int CGameScene::getTotalSpatCountForThisLevel()
{
return Level.getTotalSpatCount();
}
/*****************************************************************************/ /*****************************************************************************/
void CGameScene::respawnLevel() void CGameScene::respawnLevel()
{ {

View file

@ -39,6 +39,10 @@ virtual int canPause();
int readyToShutdown(); int readyToShutdown();
char *getSceneName() {return "Game";} char *getSceneName() {return "Game";}
int getChapterNumber();
int getLevelNumber();
int getTotalSpatCountForThisLevel();
CPlayer *getPlayer(); CPlayer *getPlayer();
void respawnLevel(); void respawnLevel();
void sendEvent( GAME_EVENT evt, class CThing *sourceThing ); void sendEvent( GAME_EVENT evt, class CThing *sourceThing );
@ -47,6 +51,7 @@ static void setReadyToExit() {s_readyToExit=true;}
static void levelFinished() {s_levelFinished=true;} static void levelFinished() {s_levelFinished=true;}
static void restartlevel() {s_restartLevel=true;} static void restartlevel() {s_restartLevel=true;}
// static MATRIX &GetCamMtx() {return(CamMtx);} // static MATRIX &GetCamMtx() {return(CamMtx);}
static ACTOR_TYPE getActorType( int actorNum ) {return actorType[actorNum];} static ACTOR_TYPE getActorType( int actorNum ) {return actorType[actorNum];}

View file

@ -34,6 +34,14 @@
#include "player\player.h" #include "player\player.h"
#endif #endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __GAME_GAMESLOT_H__
#include "game\gameslot.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -149,7 +157,7 @@ void CPauseMenu::init()
&newmode,PLAYER_MODE_DEAD); &newmode,PLAYER_MODE_DEAD);
xpos+=TEXT_SPACING; xpos+=TEXT_SPACING;
#else #else
xpos+=TEXT_SPACING*2; xpos+=TEXT_SPACING*4;
CGUIFactory::createValueButtonFrame(m_guiFrame, CGUIFactory::createValueButtonFrame(m_guiFrame,
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
STR__PAUSE_MENU__CONTINUE, STR__PAUSE_MENU__CONTINUE,
@ -169,6 +177,10 @@ void CPauseMenu::init()
xpos+=TEXT_SPACING*2; xpos+=TEXT_SPACING*2;
#endif #endif
m_guiSpatReadout=new ("SpatReadout") CGUISpatCountReadout();
m_guiSpatReadout->init(m_guiFrame);
m_guiSpatReadout->setObjectXYWH(10,10,120,40);
m_active=false; m_active=false;
} }
@ -193,10 +205,16 @@ void CPauseMenu::shutdown()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPauseMenu::select() void CPauseMenu::select()
{ {
int chapter,level;
m_active=true; m_active=true;
m_exitPauseMenuFlag=false; m_exitPauseMenuFlag=false;
m_quitGameFlag=false; m_quitGameFlag=false;
m_guiFrame->select(); m_guiFrame->select();
chapter=GameScene.getChapterNumber();
level=GameScene.getLevelNumber();
m_guiSpatReadout->setSpatCounts(CGameSlotManager::getSlotData()->getSpatulaCollectedCount(chapter,level),
GameScene.getTotalSpatCountForThisLevel());
} }

View file

@ -48,7 +48,8 @@ private:
int m_exitPauseMenuFlag; int m_exitPauseMenuFlag;
int m_quitGameFlag; int m_quitGameFlag;
class CGUIControlFrame *m_guiFrame; class CGUIControlFrame *m_guiFrame;
class CGUISpatCountReadout *m_guiSpatReadout;
}; };

View file

@ -45,6 +45,10 @@
#include <biglump.h> #include <biglump.h>
#endif #endif
#ifndef __SPR_SPRITES_H__
#include <sprites.h>
#endif
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Tyepdefs && Defines Tyepdefs && Defines
@ -113,8 +117,6 @@ void CGUITextReadout::setReadoutData(TextReadoutData *_data)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CGUITextReadout::render() void CGUITextReadout::render()
{ {
FontBank *fb;
if(!isHidden()) if(!isHidden())
{ {
getFontBank()->print((getW()-(BORDERWIDTH*2))/2,m_textY,m_textId); getFontBank()->print((getW()-(BORDERWIDTH*2))/2,m_textY,m_textId);
@ -190,6 +192,84 @@ void CGUITextReadout::recalc()
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGUISpatCountReadout::init(CGUIObject *_parent,GUIId _id)
{
CGUIObjectWithFont::init(_parent,_id);
m_spatsCollected=m_spatsTotal=0;
m_spriteBank=new ("SpatCountReadoutSprites") SpriteBank();
m_spriteBank->load(SPRITES_SPRITES_SPR);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGUISpatCountReadout::shutdown()
{
m_spriteBank->dump(); delete m_spriteBank;
CGUIObjectWithFont::shutdown();
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGUISpatCountReadout::setSpatCounts(int _collected,int _total)
{
m_spatsCollected=_collected;
m_spatsTotal=_total;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGUISpatCountReadout::render()
{
if(!isHidden())
{
FontBank *fb;
sFrameHdr *fh;
char buf[100];
int x,y;
fb=getFontBank();
fh=m_spriteBank->getFrameHeader(FRM__SPATULA);
sprintf(buf,"%d/%d",m_spatsCollected,m_spatsTotal);
x=getW()-fb->getStringWidth(buf);
y=(getH()/2)-fb->getCharHeight();
fb->print(x,y,buf);
x=getX()+getParentX();
y=getY()+getParentY()+((getH()-fh->H)/2);
m_spriteBank->printFT4(fh,x,y,0,0,0);
}
CGUIObjectWithFont::render();
}
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:

View file

@ -67,6 +67,24 @@ private:
}; };
class CGUISpatCountReadout : public CGUIObjectWithFont
{
public:
virtual void init(CGUIObject *_parent,GUIId _id=noId);
virtual void shutdown();
virtual void setSpatCounts(int _collected,int _total);
virtual void render();
private:
int m_spatsCollected,m_spatsTotal;
class SpriteBank *m_spriteBank;
};
class CGUISpriteReadout : public CGUIObjectWithSpriteBank class CGUISpriteReadout : public CGUIObjectWithSpriteBank
{ {
public: public:

View file

@ -93,39 +93,39 @@ extern int s_globalLevelSelectThing;
sLvlTab LvlTable[]= sLvlTab LvlTable[]=
{ {
// C1 // C1
{1,1,LEVELS_CHAPTER01_LEVEL01_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, {1,1, 20, LEVELS_CHAPTER01_LEVEL01_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{1,2,LEVELS_CHAPTER01_LEVEL02_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, {1,2, 20, LEVELS_CHAPTER01_LEVEL02_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{1,3,LEVELS_CHAPTER01_LEVEL03_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, {1,3, 20, LEVELS_CHAPTER01_LEVEL03_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{1,4,LEVELS_CHAPTER01_LEVEL04_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, {1,4, 20, LEVELS_CHAPTER01_LEVEL04_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
// C2 // C2
{2,1,LEVELS_CHAPTER02_LEVEL01_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, {2,1, 20, LEVELS_CHAPTER02_LEVEL01_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{2,2,LEVELS_CHAPTER02_LEVEL02_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, {2,2, 20, LEVELS_CHAPTER02_LEVEL02_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{2,3,LEVELS_CHAPTER02_LEVEL03_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, {2,3, 20, LEVELS_CHAPTER02_LEVEL03_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{2,4,LEVELS_CHAPTER02_LEVEL04_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, {2,4, 20, LEVELS_CHAPTER02_LEVEL04_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
// C3 // C3
{3,1,LEVELS_CHAPTER03_LEVEL01_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, {3,1, 20, LEVELS_CHAPTER03_LEVEL01_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{3,2,LEVELS_CHAPTER03_LEVEL02_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, {3,2, 20, LEVELS_CHAPTER03_LEVEL02_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{3,3,LEVELS_CHAPTER03_LEVEL03_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, {3,3, 20, LEVELS_CHAPTER03_LEVEL03_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{3,4,LEVELS_CHAPTER03_LEVEL04_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, {3,4, 20, LEVELS_CHAPTER03_LEVEL04_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
// C4 // C4
{4,1,LEVELS_CHAPTER04_LEVEL01_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, {4,1, 20, LEVELS_CHAPTER04_LEVEL01_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{4,2,LEVELS_CHAPTER04_LEVEL02_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, {4,2, 20, LEVELS_CHAPTER04_LEVEL02_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{4,3,LEVELS_CHAPTER04_LEVEL03_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, {4,3, 20, LEVELS_CHAPTER04_LEVEL03_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{4,4,LEVELS_CHAPTER04_LEVEL04_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, {4,4, 20, LEVELS_CHAPTER04_LEVEL04_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
// C5 // C5
{5,1,LEVELS_CHAPTER05_LEVEL01_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, {5,1, 20, LEVELS_CHAPTER05_LEVEL01_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{5,2,LEVELS_CHAPTER05_LEVEL02_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, {5,2, 20, LEVELS_CHAPTER05_LEVEL02_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{5,3,LEVELS_CHAPTER05_LEVEL03_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, {5,3, 20, LEVELS_CHAPTER05_LEVEL03_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{5,4,LEVELS_CHAPTER05_LEVEL04_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, {5,4, 20, LEVELS_CHAPTER05_LEVEL04_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
// C6 // C6
{6,1,LEVELS_CHAPTER06_LEVEL01_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, {6,1, 20, LEVELS_CHAPTER06_LEVEL01_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{6,2,LEVELS_CHAPTER06_LEVEL02_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, {6,2, 20, LEVELS_CHAPTER06_LEVEL02_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{6,3,LEVELS_CHAPTER06_LEVEL03_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, {6,3, 20, LEVELS_CHAPTER06_LEVEL03_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{6,4,LEVELS_CHAPTER06_LEVEL04_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, {6,4, 20, LEVELS_CHAPTER06_LEVEL04_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{6,5,LEVELS_CHAPTER06_LEVEL05_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, {6,5, 20, LEVELS_CHAPTER06_LEVEL05_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
// FMA // FMA
{6,99,LEVELS_FMA_SHADYSHOALS_LVL,LEVELS_FMA_SHADYSHOALS_TEX, CSoundMediator::SONG_TITLE}, {6,99, 0, LEVELS_FMA_SHADYSHOALS_LVL,LEVELS_FMA_SHADYSHOALS_TEX, CSoundMediator::SONG_TITLE},
}; };
const static int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab); const static int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab);
@ -440,7 +440,7 @@ void CLevel::initThings(int _respawningLevel)
{ {
int isSpat=(PICKUP_TYPE)ItemList->Type==PICKUP__SPATULA; int isSpat=(PICKUP_TYPE)ItemList->Type==PICKUP__SPATULA;
CBasePickup *newPickup; CBasePickup *newPickup;
if(!isSpat||CGameSlotManager::getSlotData()->isSpatulaUncollected(0,0,spatNumber)) if(!isSpat||CGameSlotManager::getSlotData()->isSpatulaUncollected(GameScene.getChapterNumber(),GameScene.getLevelNumber(),spatNumber))
{ {
pos.vx=ItemList->Pos.X<<4; pos.vx=ItemList->Pos.X<<4;
pos.vy=ItemList->Pos.Y<<4; pos.vy=ItemList->Pos.Y<<4;
@ -649,4 +649,13 @@ int CLevel::getCurrentChapterLevel()
return( LvlTable[s_globalLevelSelectThing].Level ); return( LvlTable[s_globalLevelSelectThing].Level );
} }
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
int CLevel::getTotalSpatCount()
{
return( LvlTable[s_globalLevelSelectThing].totalSpatCount);
}
/*****************************************************************************/ /*****************************************************************************/

View file

@ -15,6 +15,7 @@
struct sLvlTab struct sLvlTab
{ {
u16 Chapter,Level; u16 Chapter,Level;
u8 totalSpatCount;
FileEquate LevelFilename,TexFilename; FileEquate LevelFilename,TexFilename;
int songId; int songId;
}; };
@ -37,6 +38,7 @@ static DVECTOR const &getPlayerSpawnPos() {return s_playerSpawnPos;}
static int getCurrentChapter(); static int getCurrentChapter();
static int getCurrentChapterLevel(); static int getCurrentChapterLevel();
static int getTotalSpatCount();
int getActorCount() {return ActorCount;} int getActorCount() {return ActorCount;}
sThingActor **getActorList() {return ActorList;} sThingActor **getActorList() {return ActorList;}

View file

@ -33,6 +33,10 @@
#include "game\gameslot.h" #include "game\gameslot.h"
#endif #endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -105,7 +109,7 @@ DVECTOR CSpatulaPickup::getSizeForPlacement()
void CSpatulaPickup::collect(class CPlayer *_player) void CSpatulaPickup::collect(class CPlayer *_player)
{ {
CBasePickup::collect(_player); CBasePickup::collect(_player);
CGameSlotManager::getSlotData()->collectSpatula(0,0,m_spatulaNumber); CGameSlotManager::getSlotData()->collectSpatula(GameScene.getChapterNumber(),GameScene.getLevelNumber(),m_spatulaNumber);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------