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"
#endif
#ifndef __GAME_GAMESLOT_H__
#include "game\gameslot.h"
#endif
/* Std Lib
------- */
@ -169,6 +173,11 @@ void CFrontEndScene::init()
m_font=new ("frontendfont") FontBank();
m_font->initialise(&standardFont);
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 );
}
/*****************************************************************************/
int CGameScene::getChapterNumber()
{
return Level.getCurrentChapter();
}
int CGameScene::getLevelNumber()
{
return Level.getCurrentChapterLevel();
}
int CGameScene::getTotalSpatCountForThisLevel()
{
return Level.getTotalSpatCount();
}
/*****************************************************************************/
void CGameScene::respawnLevel()
{

View file

@ -39,6 +39,10 @@ virtual int canPause();
int readyToShutdown();
char *getSceneName() {return "Game";}
int getChapterNumber();
int getLevelNumber();
int getTotalSpatCountForThisLevel();
CPlayer *getPlayer();
void respawnLevel();
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 restartlevel() {s_restartLevel=true;}
// static MATRIX &GetCamMtx() {return(CamMtx);}
static ACTOR_TYPE getActorType( int actorNum ) {return actorType[actorNum];}

View file

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

View file

@ -49,6 +49,7 @@ private:
int m_quitGameFlag;
class CGUIControlFrame *m_guiFrame;
class CGUISpatCountReadout *m_guiSpatReadout;
};

View file

@ -45,6 +45,10 @@
#include <biglump.h>
#endif
#ifndef __SPR_SPRITES_H__
#include <sprites.h>
#endif
/*----------------------------------------------------------------------
Tyepdefs && Defines
@ -113,8 +117,6 @@ void CGUITextReadout::setReadoutData(TextReadoutData *_data)
---------------------------------------------------------------------- */
void CGUITextReadout::render()
{
FontBank *fb;
if(!isHidden())
{
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:
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
{
public:

View file

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

View file

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

View file

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