This commit is contained in:
parent
062efa6ffc
commit
0b7cfb2027
10 changed files with 446 additions and 138 deletions
|
@ -27,10 +27,6 @@
|
||||||
#include "pad\pads.h"
|
#include "pad\pads.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __PRIM_HEADER__
|
|
||||||
#include "gfx\prim.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __FRONTEND_FRONTEND_H__
|
#ifndef __FRONTEND_FRONTEND_H__
|
||||||
#include "frontend\frontend.h"
|
#include "frontend\frontend.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -39,6 +35,22 @@
|
||||||
#include "gfx\fader.h"
|
#include "gfx\fader.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _FILEIO_HEADER_
|
||||||
|
#include "fileio\fileio.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __VID_HEADER_
|
||||||
|
#include "system\vid.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __MATHTABLE_HEADER__
|
||||||
|
#include "utils\mathtab.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __LOCALE_TEXTDBASE_H__
|
||||||
|
#include "locale\textdbase.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -78,13 +90,22 @@ CGameOverScene GameOverScene;
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CGameOverScene::init()
|
void CGameOverScene::init()
|
||||||
{
|
{
|
||||||
m_font=new ("game over font") FontBank();
|
m_image=CFileIO::loadFile(BACKDROP_GAMEOVER_GFX);
|
||||||
|
ASSERT(m_image);
|
||||||
|
SetScreenImage((u8*)m_image);
|
||||||
|
|
||||||
|
m_font=new ("game over font") ScalableFontBank();
|
||||||
m_font->initialise(&standardFont);
|
m_font->initialise(&standardFont);
|
||||||
m_font->setJustification(FontBank::JUST_CENTRE);
|
m_font->setJustification(ScalableFontBank::JUST_CENTRE);
|
||||||
m_font->setOt(5);
|
m_font->setOt(5);
|
||||||
|
|
||||||
m_readyToExit=false;
|
m_readyToExit=false;
|
||||||
CFader::setFadingIn(CFader::BLACK_FADE);
|
CFader::setFadingIn(CFader::BLACK_FADE);
|
||||||
|
|
||||||
|
initContinue();
|
||||||
|
initGameOver();
|
||||||
|
|
||||||
|
m_state=STATE__CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,6 +118,8 @@ void CGameOverScene::init()
|
||||||
void CGameOverScene::shutdown()
|
void CGameOverScene::shutdown()
|
||||||
{
|
{
|
||||||
m_font->dump(); delete m_font;
|
m_font->dump(); delete m_font;
|
||||||
|
|
||||||
|
MemFree(m_image);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,15 +131,19 @@ void CGameOverScene::shutdown()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CGameOverScene::render()
|
void CGameOverScene::render()
|
||||||
{
|
{
|
||||||
POLY_F4 *f4;
|
switch(m_state)
|
||||||
|
{
|
||||||
f4=GetPrimF4();
|
case STATE__CONTINUE:
|
||||||
setXYWH(f4,0,0,512,256);
|
renderContinue();
|
||||||
setRGB0(f4,0,0,0);
|
break;
|
||||||
AddPrimToList(f4,10);
|
case STATE__CONTINUE_TIMED_OUT:
|
||||||
|
renderContinue();
|
||||||
m_font->setColour(255,255,255);
|
renderGameOver();
|
||||||
m_font->print(256,100,STR__BACKEND__GAME_OVER);
|
break;
|
||||||
|
case STATE__GAME_OVER:
|
||||||
|
renderGameOver();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,13 +157,27 @@ void CGameOverScene::think(int _frames)
|
||||||
{
|
{
|
||||||
if(!CFader::isFading()&&!m_readyToExit)
|
if(!CFader::isFading()&&!m_readyToExit)
|
||||||
{
|
{
|
||||||
if(PadGetDown(0)&(PAD_CROSS|PAD_START))
|
if(PadGetDown(0)&PAD_START)
|
||||||
{
|
{
|
||||||
m_readyToExit=true;
|
m_readyToExit=true;
|
||||||
CFader::setFadingOut(CFader::BLACK_FADE);
|
CFader::setFadingOut(CFader::BLACK_FADE);
|
||||||
GameState::setNextScene(&FrontEndScene);
|
GameState::setNextScene(&FrontEndScene);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch(m_state)
|
||||||
|
{
|
||||||
|
case STATE__CONTINUE:
|
||||||
|
thinkContinue(_frames);
|
||||||
|
break;
|
||||||
|
case STATE__CONTINUE_TIMED_OUT:
|
||||||
|
thinkContinue(_frames);
|
||||||
|
thinkGameOver(_frames);
|
||||||
|
break;
|
||||||
|
case STATE__GAME_OVER:
|
||||||
|
thinkGameOver(_frames);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -152,5 +193,148 @@ int CGameOverScene::readyToShutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CGameOverScene::initContinue()
|
||||||
|
{
|
||||||
|
m_continueFontSin=0;
|
||||||
|
m_continueFontOffset=100<<2;
|
||||||
|
m_continueTimer=10*GameState::getOneSecondInFrames()*COUNTDOWN_TIME_MODIFIER;
|
||||||
|
}
|
||||||
|
void CGameOverScene::thinkContinue(int _frames)
|
||||||
|
{
|
||||||
|
int move;
|
||||||
|
|
||||||
|
// Slide the text onscreen
|
||||||
|
if(m_state==STATE__CONTINUE)
|
||||||
|
{
|
||||||
|
if(!CFader::isFading())
|
||||||
|
{
|
||||||
|
if(m_continueFontOffset)
|
||||||
|
{
|
||||||
|
move=m_continueFontOffset/10;
|
||||||
|
if(move==0)
|
||||||
|
{
|
||||||
|
move=1;
|
||||||
|
}
|
||||||
|
m_continueFontOffset-=move;
|
||||||
|
if(m_continueFontOffset<0)
|
||||||
|
{
|
||||||
|
m_continueFontOffset=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Countdown ( wait for text to stop first )
|
||||||
|
if(m_continueTimer)
|
||||||
|
{
|
||||||
|
if(PadGetDown(0)&PAD_CROSS)
|
||||||
|
{
|
||||||
|
m_continueTimer-=m_continueTimer%(GameState::getOneSecondInFrames()*COUNTDOWN_TIME_MODIFIER);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_continueTimer-=_frames;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_continueTimer<=0)
|
||||||
|
{
|
||||||
|
m_continueTimer=0;
|
||||||
|
m_state=STATE__CONTINUE_TIMED_OUT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(m_state==STATE__CONTINUE_TIMED_OUT)
|
||||||
|
{
|
||||||
|
// Slide text back off the screen
|
||||||
|
m_continueFontOffset=m_continueFontOffset-(100<<2);
|
||||||
|
move=m_continueFontOffset/10;
|
||||||
|
if(move==0)
|
||||||
|
{
|
||||||
|
move=1;
|
||||||
|
}
|
||||||
|
m_continueFontOffset-=move;
|
||||||
|
if(m_continueFontOffset>(100<<2))
|
||||||
|
{
|
||||||
|
m_continueFontOffset=0;
|
||||||
|
m_state=STATE__GAME_OVER;
|
||||||
|
}
|
||||||
|
m_continueFontOffset=m_continueFontOffset+(100<<2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change the text size
|
||||||
|
m_continueFontSin=(m_continueFontSin+(_frames*CONTINUE_STROBE_SPEED))&4095;
|
||||||
|
}
|
||||||
|
void CGameOverScene::renderContinue()
|
||||||
|
{
|
||||||
|
if(!CFader::isFading())
|
||||||
|
{
|
||||||
|
int yOfs;
|
||||||
|
char buf[100];
|
||||||
|
|
||||||
|
m_font->setColour(255,255,255);
|
||||||
|
yOfs=m_continueFontOffset>>2;
|
||||||
|
|
||||||
|
sprintf(buf,TranslationDatabase::getString(STR__BACKEND__CONTINUE));
|
||||||
|
m_font->setScale(((msin(m_continueFontSin)*CONTINUE_FONT_SCALE)>>12)+CONTINUE_FONT_BASE_SIZE);
|
||||||
|
m_font->print(256,50-m_font->getStringHeight(buf)-yOfs,buf);
|
||||||
|
|
||||||
|
sprintf(buf,"%d",m_continueTimer/(GameState::getOneSecondInFrames()*COUNTDOWN_TIME_MODIFIER));
|
||||||
|
m_font->setScale(CONTINUE_FONT_SCALE+CONTINUE_FONT_BASE_SIZE);
|
||||||
|
m_font->print(256,80-m_font->getStringHeight(buf)-yOfs,buf);
|
||||||
|
|
||||||
|
if(m_continueFontSin>512&m_state==STATE__CONTINUE)
|
||||||
|
{
|
||||||
|
sprintf(buf,TranslationDatabase::getString(STR__BACKEND__PRESS_START));
|
||||||
|
m_font->setColour(255,0,0);
|
||||||
|
m_font->print(256,200-m_font->getStringHeight(buf),buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CGameOverScene::initGameOver()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void CGameOverScene::thinkGameOver(int _frames)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
int bigscale=510;
|
||||||
|
void CGameOverScene::renderGameOver()
|
||||||
|
{
|
||||||
|
char buf[100],*bufPtr;
|
||||||
|
char letter[]=" \0";
|
||||||
|
int i,len,step,x;
|
||||||
|
|
||||||
|
m_font->setColour(255,255,255);
|
||||||
|
|
||||||
|
sprintf(buf,"PARTIE TERMINEE");//TranslationDatabase::getString(STR__BACKEND__GAME_OVER));
|
||||||
|
m_font->setScale(bigscale);
|
||||||
|
|
||||||
|
bufPtr=buf;
|
||||||
|
len=strlen(buf);
|
||||||
|
step=(400<<2)/len;
|
||||||
|
x=256-(((len*step)/2)>>2);
|
||||||
|
for(i=0;i<strlen(buf);i++)
|
||||||
|
{
|
||||||
|
letter[0]=*bufPtr++;
|
||||||
|
m_font->print(x-(m_font->getStringWidth(letter)/2),100,letter);
|
||||||
|
DrawLine(x,20,x,236,255,255,255,0);
|
||||||
|
x+=step>>2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*===========================================================================
|
/*===========================================================================
|
||||||
end */
|
end */
|
|
@ -42,12 +42,43 @@ public:
|
||||||
void render();
|
void render();
|
||||||
void think(int _frames);
|
void think(int _frames);
|
||||||
int readyToShutdown();
|
int readyToShutdown();
|
||||||
char *getSceneName() {return"GameOver";}
|
char *getSceneName() {return"GameOver/Continue";}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class FontBank *m_font;
|
typedef enum
|
||||||
|
{
|
||||||
|
STATE__CONTINUE,
|
||||||
|
STATE__CONTINUE_TIMED_OUT,
|
||||||
|
STATE__GAME_OVER,
|
||||||
|
} GAMEOVER_STATE;
|
||||||
|
|
||||||
|
|
||||||
|
// Continue
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
CONTINUE_STROBE_SPEED=75,
|
||||||
|
CONTINUE_FONT_SCALE=100,
|
||||||
|
CONTINUE_FONT_BASE_SIZE=400,
|
||||||
|
COUNTDOWN_TIME_MODIFIER=2, // Seconds last this many times longer
|
||||||
|
};
|
||||||
|
void initContinue();
|
||||||
|
void thinkContinue(int _frames);
|
||||||
|
void renderContinue();
|
||||||
|
int m_continueFontOffset;
|
||||||
|
int m_continueFontSin;
|
||||||
|
int m_continueTimer;
|
||||||
|
|
||||||
|
// Game over
|
||||||
|
void initGameOver();
|
||||||
|
void thinkGameOver(int _frames);
|
||||||
|
void renderGameOver();
|
||||||
|
|
||||||
|
|
||||||
|
GAMEOVER_STATE m_state;
|
||||||
|
class ScalableFontBank *m_font;
|
||||||
int m_readyToExit;
|
int m_readyToExit;
|
||||||
|
unsigned char *m_image;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -127,13 +127,22 @@ void CGameSlotManager::eraseGameSlot(unsigned int _slot)
|
||||||
slot->m_lives=INITIAL_LIVES;
|
slot->m_lives=INITIAL_LIVES;
|
||||||
slot->m_continues=INITIAL_CONTINUES;
|
slot->m_continues=INITIAL_CONTINUES;
|
||||||
slot->m_maxLevelCompleted=0;
|
slot->m_maxLevelCompleted=0;
|
||||||
for(i=0;i<NUM_CHAPTERS_WITH_SPATULAS*NUM_LEVELS_WITH_SPATULAS;i++)
|
|
||||||
|
for(i=0;i<NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS;i++)
|
||||||
{
|
{
|
||||||
for(j=0;j<8;j++)
|
for(j=0;j<16;j++)
|
||||||
{
|
{
|
||||||
slot->m_spatulaCollectedFlags[i][j]=0;
|
slot->m_spatulaCollectedFlags[i][j]=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(i=0;i<NUM_CHAPTERS;i++)
|
||||||
|
{
|
||||||
|
for(j=0;j<16;j++)
|
||||||
|
{
|
||||||
|
slot->m_kelpTokenCollectedFlags[i][j]=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,10 +45,8 @@ public:
|
||||||
|
|
||||||
NUM_GAME_SLOTS=4,
|
NUM_GAME_SLOTS=4,
|
||||||
|
|
||||||
NUM_CHAPTERS_WITH_SPATULAS=5,
|
NUM_CHAPTERS=5,
|
||||||
NUM_LEVELS_WITH_SPATULAS=4,
|
NUM_LEVELS_WITH_SPATULAS=4,
|
||||||
NUM_CHAPTERS_WITH_KELP_TOKENS=1,
|
|
||||||
NUM_LEVELS_WITH_KELP_TOKENS=5,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,13 +56,13 @@ public:
|
||||||
unsigned char m_lives;
|
unsigned char m_lives;
|
||||||
unsigned char m_continues;
|
unsigned char m_continues;
|
||||||
unsigned char m_maxLevelCompleted;
|
unsigned char m_maxLevelCompleted;
|
||||||
unsigned char m_spatulaCollectedFlags[NUM_CHAPTERS_WITH_SPATULAS*NUM_LEVELS_WITH_SPATULAS][16]; // Enuf space for 128 spats per level
|
unsigned char m_spatulaCollectedFlags[NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS][16]; // Enuf space for 128 spats per level
|
||||||
unsigned char m_kelpTokenCollectedFlags[NUM_CHAPTERS_WITH_KELP_TOKENS*NUM_LEVELS_WITH_KELP_TOKENS][16]; // Same again..
|
unsigned char m_kelpTokenCollectedFlags[NUM_CHAPTERS][16]; // Same again..
|
||||||
|
|
||||||
// Spat functions..
|
// Spat functions..
|
||||||
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level)
|
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level)
|
||||||
{
|
{
|
||||||
ASSERT(_chapter<=NUM_CHAPTERS_WITH_SPATULAS);
|
ASSERT(_chapter<=NUM_CHAPTERS);
|
||||||
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS);
|
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS);
|
||||||
int i,j,count;
|
int i,j,count;
|
||||||
count=0;
|
count=0;
|
||||||
|
@ -81,14 +79,14 @@ public:
|
||||||
}
|
}
|
||||||
void collectSpatula(unsigned int _chapter,unsigned int _level,unsigned int _spat)
|
void collectSpatula(unsigned int _chapter,unsigned int _level,unsigned int _spat)
|
||||||
{
|
{
|
||||||
ASSERT(_chapter<=NUM_CHAPTERS_WITH_SPATULAS);
|
ASSERT(_chapter<=NUM_CHAPTERS);
|
||||||
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS);
|
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS);
|
||||||
ASSERT(_spat<=128);
|
ASSERT(_spat<=128);
|
||||||
m_spatulaCollectedFlags[(_chapter*NUM_LEVELS_WITH_SPATULAS)+_level][_spat>>3]|=1<<(_spat&7);
|
m_spatulaCollectedFlags[(_chapter*NUM_LEVELS_WITH_SPATULAS)+_level][_spat>>3]|=1<<(_spat&7);
|
||||||
}
|
}
|
||||||
int isSpatulaUncollected(unsigned int _chapter,unsigned int _level,unsigned int _spat)
|
int isSpatulaUncollected(unsigned int _chapter,unsigned int _level,unsigned int _spat)
|
||||||
{
|
{
|
||||||
ASSERT(_chapter<=NUM_CHAPTERS_WITH_SPATULAS);
|
ASSERT(_chapter<=NUM_CHAPTERS);
|
||||||
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS);
|
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS);
|
||||||
ASSERT(_spat<=128);
|
ASSERT(_spat<=128);
|
||||||
return (m_spatulaCollectedFlags[(_chapter*NUM_LEVELS_WITH_SPATULAS)+_level][_spat>>3]>>(_spat&7))&1?false:true;
|
return (m_spatulaCollectedFlags[(_chapter*NUM_LEVELS_WITH_SPATULAS)+_level][_spat>>3]>>(_spat&7))&1?false:true;
|
||||||
|
@ -97,13 +95,13 @@ public:
|
||||||
// Kelp Token functions..
|
// Kelp Token functions..
|
||||||
int getKelpTokenCollectedCount(unsigned int _chapter,unsigned int _level)
|
int getKelpTokenCollectedCount(unsigned int _chapter,unsigned int _level)
|
||||||
{
|
{
|
||||||
ASSERT(_chapter==NUM_CHAPTERS_WITH_SPATULAS);
|
ASSERT(_chapter==NUM_CHAPTERS);
|
||||||
ASSERT(_level<=NUM_LEVELS_WITH_KELP_TOKENS);
|
ASSERT(_level==NUM_LEVELS_WITH_SPATULAS+1);
|
||||||
int i,j,count;
|
int i,j,count;
|
||||||
count=0;
|
count=0;
|
||||||
for(i=0;i<8;i++)
|
for(i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char flags=m_kelpTokenCollectedFlags[(_chapter*NUM_LEVELS_WITH_KELP_TOKENS)+_level][i];
|
unsigned char flags=m_kelpTokenCollectedFlags[_level][i];
|
||||||
for(j=0;j<8;j++)
|
for(j=0;j<8;j++)
|
||||||
{
|
{
|
||||||
if(flags&1)count++;
|
if(flags&1)count++;
|
||||||
|
@ -114,17 +112,17 @@ public:
|
||||||
}
|
}
|
||||||
void collectKelpToken(unsigned int _chapter,unsigned int _level,unsigned int _token)
|
void collectKelpToken(unsigned int _chapter,unsigned int _level,unsigned int _token)
|
||||||
{
|
{
|
||||||
ASSERT(_chapter==NUM_CHAPTERS_WITH_SPATULAS);
|
ASSERT(_chapter==NUM_CHAPTERS);
|
||||||
ASSERT(_level<=NUM_LEVELS_WITH_KELP_TOKENS);
|
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS+1);
|
||||||
ASSERT(_token<=128);
|
ASSERT(_token<=128);
|
||||||
m_kelpTokenCollectedFlags[(_chapter*NUM_LEVELS_WITH_KELP_TOKENS)+_level][_token>>3]|=1<<(_token&7);
|
m_kelpTokenCollectedFlags[_level][_token>>3]|=1<<(_token&7);
|
||||||
}
|
}
|
||||||
int isKelpTokenUncollected(unsigned int _chapter,unsigned int _level,unsigned int _token)
|
int isKelpTokenUncollected(unsigned int _chapter,unsigned int _level,unsigned int _token)
|
||||||
{
|
{
|
||||||
ASSERT(_chapter==NUM_CHAPTERS_WITH_SPATULAS);
|
ASSERT(_chapter==NUM_CHAPTERS);
|
||||||
ASSERT(_level<=NUM_LEVELS_WITH_KELP_TOKENS);
|
ASSERT(_level<=NUM_LEVELS_WITH_SPATULAS+1);
|
||||||
ASSERT(_token<=128);
|
ASSERT(_token<=128);
|
||||||
return (m_kelpTokenCollectedFlags[(_chapter*NUM_LEVELS_WITH_KELP_TOKENS)+_level][_token>>3]>>(_token&7))&1?false:true;
|
return (m_kelpTokenCollectedFlags[_level][_token>>3]>>(_token&7))&1?false:true;
|
||||||
}
|
}
|
||||||
} GameSlot;
|
} GameSlot;
|
||||||
|
|
||||||
|
|
|
@ -211,8 +211,8 @@ void CPauseMenu::select()
|
||||||
m_quitGameFlag=false;
|
m_quitGameFlag=false;
|
||||||
m_guiFrame->select();
|
m_guiFrame->select();
|
||||||
|
|
||||||
chapter=GameScene.getChapterNumber();
|
chapter=GameScene.getChapterNumber()-1;
|
||||||
level=GameScene.getLevelNumber();
|
level=GameScene.getLevelNumber()-1;
|
||||||
m_guiSpatReadout->setSpatCounts(CGameSlotManager::getSlotData()->getSpatulaCollectedCount(chapter,level),
|
m_guiSpatReadout->setSpatCounts(CGameSlotManager::getSlotData()->getSpatulaCollectedCount(chapter,level),
|
||||||
GameScene.getTotalSpatCountForThisLevel());
|
GameScene.getTotalSpatCountForThisLevel());
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,6 +88,10 @@
|
||||||
#include "game\gameslot.h"
|
#include "game\gameslot.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __LOCALE_TEXTDBASE_H__
|
||||||
|
#include "locale\textdbase.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "fx\fx.h"
|
#include "fx\fx.h"
|
||||||
#include "fx\fxfallingtile.h"
|
#include "fx\fxfallingtile.h"
|
||||||
|
|
||||||
|
@ -124,36 +128,35 @@
|
||||||
sLvlTab LvlTable[]=
|
sLvlTab LvlTable[]=
|
||||||
{
|
{
|
||||||
// C1
|
// C1
|
||||||
{1,1, CHAPTER01_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL01_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
|
{1,1, CHAPTER01_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL01_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1, STR__CHAPTER_1,STR__CHAPTER_1_LEVEL_1 },
|
||||||
{1,2, CHAPTER01_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL02_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
|
{1,2, CHAPTER01_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL02_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2, STR__CHAPTER_1,STR__CHAPTER_1_LEVEL_2 },
|
||||||
{1,3, CHAPTER01_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL03_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
|
{1,3, CHAPTER01_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL03_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3, STR__CHAPTER_1,STR__CHAPTER_1_LEVEL_3 },
|
||||||
{1,4, CHAPTER01_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL04_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
|
{1,4, CHAPTER01_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER01_LEVEL04_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4, STR__CHAPTER_1,STR__CHAPTER_1_LEVEL_4 },
|
||||||
|
{1,5, CHAPTER06_LEVEL01_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL01_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER, STR__KELP_WORLD,STR__CHAPTER_6_LEVEL_1 },
|
||||||
// C2
|
// C2
|
||||||
{2,1, CHAPTER02_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL01_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
|
{2,1, CHAPTER02_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL01_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1, STR__CHAPTER_2,STR__CHAPTER_2_LEVEL_1 },
|
||||||
{2,2, CHAPTER02_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL02_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
|
{2,2, CHAPTER02_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL02_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2, STR__CHAPTER_2,STR__CHAPTER_2_LEVEL_2 },
|
||||||
{2,3, CHAPTER02_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL03_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
|
{2,3, CHAPTER02_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL03_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3, STR__CHAPTER_2,STR__CHAPTER_2_LEVEL_3 },
|
||||||
{2,4, CHAPTER02_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL04_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
|
{2,4, CHAPTER02_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER02_LEVEL04_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4, STR__CHAPTER_2,STR__CHAPTER_2_LEVEL_4 },
|
||||||
|
{2,5, CHAPTER06_LEVEL02_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL02_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE, STR__KELP_WORLD,STR__CHAPTER_6_LEVEL_2 },
|
||||||
// C3
|
// C3
|
||||||
{3,1, CHAPTER03_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL01_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
|
{3,1, CHAPTER03_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL01_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1, STR__CHAPTER_3,STR__CHAPTER_3_LEVEL_1 },
|
||||||
{3,2, CHAPTER03_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL02_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
|
{3,2, CHAPTER03_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL02_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2, STR__CHAPTER_3,STR__CHAPTER_3_LEVEL_2 },
|
||||||
{3,3, CHAPTER03_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL03_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
|
{3,3, CHAPTER03_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL03_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3, STR__CHAPTER_3,STR__CHAPTER_3_LEVEL_3 },
|
||||||
{3,4, CHAPTER03_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL04_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
|
{3,4, CHAPTER03_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER03_LEVEL04_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4, STR__CHAPTER_3,STR__CHAPTER_3_LEVEL_4 },
|
||||||
|
{3,5, CHAPTER06_LEVEL03_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL03_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL, STR__KELP_WORLD,STR__CHAPTER_6_LEVEL_3 },
|
||||||
// C4
|
// C4
|
||||||
{4,1, CHAPTER04_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL01_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
|
{4,1, CHAPTER04_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL01_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1, STR__CHAPTER_4,STR__CHAPTER_4_LEVEL_1 },
|
||||||
{4,2, CHAPTER04_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL02_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
|
{4,2, CHAPTER04_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL02_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2, STR__CHAPTER_4,STR__CHAPTER_4_LEVEL_2 },
|
||||||
{4,3, CHAPTER04_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL03_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
|
{4,3, CHAPTER04_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL03_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3, STR__CHAPTER_4,STR__CHAPTER_4_LEVEL_3 },
|
||||||
{4,4, CHAPTER04_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL04_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
|
{4,4, CHAPTER04_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER04_LEVEL04_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4, STR__CHAPTER_4,STR__CHAPTER_4_LEVEL_4 },
|
||||||
|
{4,5, CHAPTER06_LEVEL04_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL04_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE, STR__KELP_WORLD,STR__CHAPTER_6_LEVEL_4 },
|
||||||
// C5
|
// C5
|
||||||
{5,1, CHAPTER05_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL01_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
|
{5,1, CHAPTER05_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL01_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1, STR__CHAPTER_5,STR__CHAPTER_5_LEVEL_1 },
|
||||||
{5,2, CHAPTER05_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL02_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
|
{5,2, CHAPTER05_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL02_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2, STR__CHAPTER_5,STR__CHAPTER_5_LEVEL_2 },
|
||||||
{5,3, CHAPTER05_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL03_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
|
{5,3, CHAPTER05_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL03_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3, STR__CHAPTER_5,STR__CHAPTER_5_LEVEL_3 },
|
||||||
{5,4, CHAPTER05_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL04_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
|
{5,4, CHAPTER05_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, LEVELS_CHAPTER05_LEVEL04_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4, STR__CHAPTER_5,STR__CHAPTER_5_LEVEL_4 },
|
||||||
// C6
|
{5,5, CHAPTER06_LEVEL05_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL05_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE, STR__KELP_WORLD,STR__CHAPTER_6_LEVEL_5 },
|
||||||
{6,1, CHAPTER06_LEVEL01_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL01_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
|
|
||||||
{6,2, CHAPTER06_LEVEL02_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL02_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
|
|
||||||
{6,3, CHAPTER06_LEVEL03_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL03_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
|
|
||||||
{6,4, CHAPTER06_LEVEL04_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL04_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
|
|
||||||
{6,5, CHAPTER06_LEVEL05_INF_TOTAL_ITEM_KELP_TOKEN, LEVELS_CHAPTER06_LEVEL05_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
|
|
||||||
// FMA
|
// FMA
|
||||||
{6,99, 0, 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},
|
||||||
|
|
||||||
|
@ -234,29 +237,29 @@ bool Finished=false;
|
||||||
void CLevel::DisplayLoadingScreen(sLvlTab *lvlTab)
|
void CLevel::DisplayLoadingScreen(sLvlTab *lvlTab)
|
||||||
{
|
{
|
||||||
FontBank font;
|
FontBank font;
|
||||||
char buf[128];
|
char buf[256];
|
||||||
u8 *s_image;
|
u8 *s_image;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
font.initialise(&standardFont);
|
font.initialise(&standardFont);
|
||||||
font.setJustification(FontBank::JUST_CENTRE);
|
font.setJustification(FontBank::JUST_CENTRE);
|
||||||
sprintf(buf,"LOADING CHAPTER %d LEVEL %d",lvlTab->Chapter,lvlTab->Level);
|
sprintf(buf,"%s\n\n%s",TranslationDatabase::getString(lvlTab->ChapterLoadingText),TranslationDatabase::getString(lvlTab->LevelLoadingText));
|
||||||
s_image=CFileIO::loadFile(loadingScreens[lvlTab->Chapter-1]);
|
s_image=CFileIO::loadFile(loadingScreens[lvlTab->Chapter-1]);
|
||||||
ASSERT(s_image);
|
ASSERT(s_image);
|
||||||
SetScreenImage(s_image);
|
SetScreenImage(s_image);
|
||||||
for(i=0;i<2;i++)
|
for(i=0;i<2;i++)
|
||||||
{
|
{
|
||||||
font.setColour(255,255,255);
|
font.setColour(255,255,255);
|
||||||
font.print(256 ,120 ,buf);
|
font.print(256 ,100 ,buf);
|
||||||
font.setColour(0,0,0);
|
font.setColour(0,0,0);
|
||||||
font.print(256-1,120-1,buf);
|
font.print(256-1,100-1,buf);
|
||||||
font.print(256-1,120 ,buf);
|
font.print(256-1,100 ,buf);
|
||||||
font.print(256-1,120+1,buf);
|
font.print(256-1,100+1,buf);
|
||||||
font.print(256 ,120-1,buf);
|
font.print(256 ,100-1,buf);
|
||||||
font.print(256 ,120+1,buf);
|
font.print(256 ,100+1,buf);
|
||||||
font.print(256+1,120-1,buf);
|
font.print(256+1,100-1,buf);
|
||||||
font.print(256+1,120 ,buf);
|
font.print(256+1,100 ,buf);
|
||||||
font.print(256+1,120+1,buf);
|
font.print(256+1,100+1,buf);
|
||||||
PrimDisplay();
|
PrimDisplay();
|
||||||
VSync(0);
|
VSync(0);
|
||||||
VidSwapDraw();
|
VidSwapDraw();
|
||||||
|
@ -424,7 +427,7 @@ void CLevel::initThings(int _respawningLevel)
|
||||||
createThisPickup=true;
|
createThisPickup=true;
|
||||||
|
|
||||||
isSpat=(PICKUP_TYPE)ItemList->Type==PICKUP__SPATULA;
|
isSpat=(PICKUP_TYPE)ItemList->Type==PICKUP__SPATULA;
|
||||||
if(isSpat&&CGameSlotManager::getSlotData()->isSpatulaUncollected(GameScene.getChapterNumber(),GameScene.getLevelNumber(),spatNumber)==false)
|
if(isSpat&&CGameSlotManager::getSlotData()->isSpatulaUncollected(GameScene.getChapterNumber()-1,GameScene.getLevelNumber()-1,spatNumber)==false)
|
||||||
{
|
{
|
||||||
createThisPickup=false;
|
createThisPickup=false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ struct sLvlTab
|
||||||
u8 totalSpatCount;
|
u8 totalSpatCount;
|
||||||
FileEquate LevelFilename,TexFilename;
|
FileEquate LevelFilename,TexFilename;
|
||||||
int songId;
|
int songId;
|
||||||
|
u16 ChapterLoadingText,LevelLoadingText;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -118,40 +118,40 @@ CMapScene MapScene;
|
||||||
|
|
||||||
CMapScene::sMapLevelData CMapScene::s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER]=
|
CMapScene::sMapLevelData CMapScene::s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER]=
|
||||||
{
|
{
|
||||||
// mapFile globalLevelNumber spatularOrTokenCounts questItemFrame kelpWorldLevel
|
// mapFile globalLevelNumber spatulaOrTokenCounts questItemFrame kelpWorldLevel
|
||||||
{
|
{
|
||||||
{ MAP_C1_L1_GFX, 0, CHAPTER01_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L1_QUEST_ITEM, false },
|
{ MAP_C1_L1_GFX, 0, CHAPTER01_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L1_QUEST_ITEM, false },
|
||||||
{ MAP_C1_L2_GFX, 1, CHAPTER01_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L2_QUEST_ITEM, false },
|
{ MAP_C1_L2_GFX, 1, CHAPTER01_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L2_QUEST_ITEM, false },
|
||||||
{ MAP_C1_L3_GFX, 2, CHAPTER01_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L3_QUEST_ITEM, false },
|
{ MAP_C1_L3_GFX, 2, CHAPTER01_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L3_QUEST_ITEM, false },
|
||||||
{ MAP_C1_L4_GFX, 3, CHAPTER01_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L4_QUEST_ITEM, false },
|
{ MAP_C1_L4_GFX, 3, CHAPTER01_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C1_L4_QUEST_ITEM, false },
|
||||||
{ MAP_C1_FAIR_GFX, 20, CHAPTER06_LEVEL01_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
{ MAP_C1_FAIR_GFX, 4, CHAPTER06_LEVEL01_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ MAP_C2_L1_GFX, 4, CHAPTER02_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L1_QUEST_ITEM, false },
|
{ MAP_C2_L1_GFX, 5, CHAPTER02_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L1_QUEST_ITEM, false },
|
||||||
{ MAP_C2_L2_GFX, 5, CHAPTER02_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L2_QUEST_ITEM, false },
|
{ MAP_C2_L2_GFX, 6, CHAPTER02_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L2_QUEST_ITEM, false },
|
||||||
{ MAP_C2_L3_GFX, 6, CHAPTER02_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L3_QUEST_ITEM, false },
|
{ MAP_C2_L3_GFX, 7, CHAPTER02_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L3_QUEST_ITEM, false },
|
||||||
{ MAP_C2_L4_GFX, 7, CHAPTER02_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L4_QUEST_ITEM, false },
|
{ MAP_C2_L4_GFX, 8, CHAPTER02_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C2_L4_QUEST_ITEM, false },
|
||||||
{ MAP_C2_FAIR_GFX, 21, CHAPTER06_LEVEL02_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
{ MAP_C2_FAIR_GFX, 9, CHAPTER06_LEVEL02_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ MAP_C3_L1_GFX, 8, CHAPTER03_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L1_QUEST_ITEM, false },
|
{ MAP_C3_L1_GFX, 10, CHAPTER03_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L1_QUEST_ITEM, false },
|
||||||
{ MAP_C3_L2_GFX, 9, CHAPTER03_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L2_QUEST_ITEM, false },
|
{ MAP_C3_L2_GFX, 11, CHAPTER03_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L2_QUEST_ITEM, false },
|
||||||
{ MAP_C3_L3_GFX, 10, CHAPTER03_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L3_QUEST_ITEM, false },
|
{ MAP_C3_L3_GFX, 12, CHAPTER03_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L3_QUEST_ITEM, false },
|
||||||
{ MAP_C3_L4_GFX, 11, CHAPTER03_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L4_QUEST_ITEM, false },
|
{ MAP_C3_L4_GFX, 13, CHAPTER03_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C3_L4_QUEST_ITEM, false },
|
||||||
{ MAP_C3_FAIR_GFX, 22, CHAPTER06_LEVEL03_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
{ MAP_C3_FAIR_GFX, 14, CHAPTER06_LEVEL03_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ MAP_C4_L1_GFX, 12, CHAPTER04_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
|
{ MAP_C4_L1_GFX, 15, CHAPTER04_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
|
||||||
{ MAP_C4_L2_GFX, 13, CHAPTER04_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
|
{ MAP_C4_L2_GFX, 16, CHAPTER04_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
|
||||||
{ MAP_C4_L3_GFX, 14, CHAPTER04_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
|
{ MAP_C4_L3_GFX, 17, CHAPTER04_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_1, false },
|
||||||
{ MAP_C4_L4_GFX, 15, CHAPTER04_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_2, false },
|
{ MAP_C4_L4_GFX, 18, CHAPTER04_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C4_QUEST_ITEM_2, false },
|
||||||
{ MAP_C4_FAIR_GFX, 23, CHAPTER06_LEVEL04_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
{ MAP_C4_FAIR_GFX, 19, CHAPTER06_LEVEL04_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ MAP_C5_L1_GFX, 16, CHAPTER05_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L1_QUEST_ITEM, false },
|
{ MAP_C5_L1_GFX, 20, CHAPTER05_LEVEL01_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L1_QUEST_ITEM, false },
|
||||||
{ MAP_C5_L2_GFX, 17, CHAPTER05_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L2_QUEST_ITEM, false },
|
{ MAP_C5_L2_GFX, 21, CHAPTER05_LEVEL02_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L2_QUEST_ITEM, false },
|
||||||
{ MAP_C5_L3_GFX, 18, CHAPTER05_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L3_QUEST_ITEM, false },
|
{ MAP_C5_L3_GFX, 22, CHAPTER05_LEVEL03_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L3_QUEST_ITEM, false },
|
||||||
{ MAP_C5_L4_GFX, 19, CHAPTER05_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L4_QUEST_ITEM, false },
|
{ MAP_C5_L4_GFX, 23, CHAPTER05_LEVEL04_INF_TOTAL_ITEM_GOLDEN_SPATULA, FRM__C5_L4_QUEST_ITEM, false },
|
||||||
{ MAP_C5_FAIR_GFX, 24, CHAPTER06_LEVEL05_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
{ MAP_C5_FAIR_GFX, 24, CHAPTER06_LEVEL05_INF_TOTAL_ITEM_KELP_TOKEN, -1, true },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -180,7 +180,6 @@ void CMapScene::init()
|
||||||
{
|
{
|
||||||
m_font=new ("map screen font") FontBank();
|
m_font=new ("map screen font") FontBank();
|
||||||
m_font->initialise(&standardFont);
|
m_font->initialise(&standardFont);
|
||||||
m_font->setJustification(FontBank::JUST_CENTRE);
|
|
||||||
m_font->setOt(10);
|
m_font->setOt(10);
|
||||||
m_font->setJustification(FontBank::JUST_LEFT);
|
m_font->setJustification(FontBank::JUST_LEFT);
|
||||||
|
|
||||||
|
@ -217,12 +216,15 @@ void CMapScene::shutdown()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CMapScene::render()
|
void CMapScene::render()
|
||||||
{
|
{
|
||||||
|
SpriteBank *sb;
|
||||||
sMapLevelData *level;
|
sMapLevelData *level;
|
||||||
int i;
|
int i;
|
||||||
sFrameHdr *fh;
|
sFrameHdr *fh;
|
||||||
DVECTOR pos;
|
DVECTOR pos;
|
||||||
|
POLY_FT4 *ft4;
|
||||||
char buf[100];
|
char buf[100];
|
||||||
|
|
||||||
|
sb=CGameScene::getSpriteBank();
|
||||||
level=&s_mapLevelData[m_currentChapterSelection][0];
|
level=&s_mapLevelData[m_currentChapterSelection][0];
|
||||||
|
|
||||||
// Render spatula/kelp counts and quest items
|
// Render spatula/kelp counts and quest items
|
||||||
|
@ -233,11 +235,10 @@ void CMapScene::render()
|
||||||
if(!level->m_kelpWorldLevel)
|
if(!level->m_kelpWorldLevel)
|
||||||
{
|
{
|
||||||
// Normal level
|
// Normal level
|
||||||
POLY_FT4 *ft4;
|
|
||||||
m_font->setColour(253,251,67);
|
m_font->setColour(253,251,67);
|
||||||
sprintf(buf,"00/%d",level->m_spatularOrTokenCounts);
|
sprintf(buf,"%d/%d",CGameSlotManager::getSlotData()->getSpatulaCollectedCount(m_currentChapterSelection,i),level->m_spatulaOrTokenCounts);
|
||||||
fh=CGameScene::getSpriteBank()->getFrameHeader(level->m_questItemFrame);
|
fh=sb->getFrameHeader(level->m_questItemFrame);
|
||||||
ft4=CGameScene::getSpriteBank()->printFT4(fh,pos.vx+MAP_LEVEL_WIDTH-fh->W,pos.vy+MAP_LEVEL_HEIGHT-fh->H,0,0,10);
|
ft4=sb->printFT4(fh,pos.vx+MAP_LEVEL_WIDTH-fh->W,pos.vy+MAP_LEVEL_HEIGHT-fh->H,0,0,10);
|
||||||
if(!hasQuestItemBeenCollected(m_currentChapterSelection,i))
|
if(!hasQuestItemBeenCollected(m_currentChapterSelection,i))
|
||||||
{
|
{
|
||||||
setRGB0(ft4,50,50,50);
|
setRGB0(ft4,50,50,50);
|
||||||
|
@ -247,7 +248,7 @@ void CMapScene::render()
|
||||||
{
|
{
|
||||||
// Bonuse level
|
// Bonuse level
|
||||||
m_font->setColour(67,251,67);
|
m_font->setColour(67,251,67);
|
||||||
sprintf(buf,"00/%d",level->m_spatularOrTokenCounts);
|
sprintf(buf,"-");//"%d/%d",CGameSlotManager::getSlotData()->getKelpTokenCollectedCount(m_currentChapterSelection,i),level->m_spatulaOrTokenCounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_font->print(pos.vx,pos.vy,buf);
|
m_font->print(pos.vx,pos.vy,buf);
|
||||||
|
@ -255,9 +256,9 @@ void CMapScene::render()
|
||||||
level++;
|
level++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Selection cursor
|
renderPointer();
|
||||||
fh=CGameScene::getSpriteBank()->getFrameHeader(FRM__MAPPOINTER);
|
renderInstructions();
|
||||||
CGameScene::getSpriteBank()->printFT4(fh,m_pointerPos.vx-(fh->W/2),m_pointerPos.vy-(fh->H/2),0,0,9);
|
|
||||||
|
|
||||||
sprintf(buf,"Chapter %d, Level %d",m_currentChapterSelection+1,m_currentLevelSelection+1);
|
sprintf(buf,"Chapter %d, Level %d",m_currentChapterSelection+1,m_currentLevelSelection+1);
|
||||||
m_font->setColour(0,255,0);
|
m_font->setColour(0,255,0);
|
||||||
|
@ -267,6 +268,77 @@ m_font->print(25,25,buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CMapScene::renderPointer()
|
||||||
|
{
|
||||||
|
SpriteBank *sb;
|
||||||
|
sFrameHdr *fh;
|
||||||
|
POLY_FT4 *ft4;
|
||||||
|
|
||||||
|
sb=CGameScene::getSpriteBank();
|
||||||
|
fh=sb->getFrameHeader(FRM__MAPPOINTER);
|
||||||
|
ft4=sb->printFT4(fh,m_pointerPos.vx-(fh->W/2),m_pointerPos.vy-(fh->H/2),0,0,9);
|
||||||
|
if(!m_pointerArrivedAtTarget)
|
||||||
|
{
|
||||||
|
setSemiTrans(ft4,true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CMapScene::renderInstructions()
|
||||||
|
{
|
||||||
|
// Instructions
|
||||||
|
SpriteBank *sb;
|
||||||
|
sFrameHdr *fh1,*fh2;
|
||||||
|
int width;
|
||||||
|
int x,y;
|
||||||
|
|
||||||
|
sb=CGameScene::getSpriteBank();
|
||||||
|
m_font->setColour(MAP_INSTRUCTIONS_TEXT_R,MAP_INSTRUCTIONS_TEXT_G,MAP_INSTRUCTIONS_TEXT_B);
|
||||||
|
|
||||||
|
y=MAP_INSTRUCTIONS_YSTART;
|
||||||
|
fh1=sb->getFrameHeader(FRM__BUTL);
|
||||||
|
fh2=sb->getFrameHeader(FRM__BUTR);
|
||||||
|
width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS+fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(STR__MAP_SCREEN__LEFT_RIGHT_TO_SELECT_LEVEL);
|
||||||
|
x=256-(width/2);
|
||||||
|
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||||
|
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS;
|
||||||
|
sb->printFT4(fh2,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||||
|
x+=fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
||||||
|
m_font->print(x,y,STR__MAP_SCREEN__LEFT_RIGHT_TO_SELECT_LEVEL);
|
||||||
|
|
||||||
|
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||||
|
fh1=sb->getFrameHeader(FRM__BUTU);
|
||||||
|
fh2=sb->getFrameHeader(FRM__BUTD);
|
||||||
|
width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS+fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER);
|
||||||
|
x=256-(width/2);
|
||||||
|
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||||
|
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS;
|
||||||
|
sb->printFT4(fh2,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||||
|
x+=fh2->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
||||||
|
m_font->print(x,y,STR__MAP_SCREEN__UP_DOWN_TO_SELECT_CHAPTER);
|
||||||
|
|
||||||
|
y+=MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES;
|
||||||
|
fh1=sb->getFrameHeader(FRM__BUTX);
|
||||||
|
width=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_font->getStringWidth(STR__MAP_SCREEN__X_TO_START);
|
||||||
|
x=256-(width/2);
|
||||||
|
sb->printFT4(fh1,x,y+MAP_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0);
|
||||||
|
x+=fh1->W+MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT;
|
||||||
|
m_font->print(x,y,STR__MAP_SCREEN__X_TO_START);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
Purpose:
|
Purpose:
|
||||||
|
@ -290,6 +362,7 @@ void CMapScene::think(int _frames)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move cursor
|
// Move cursor
|
||||||
|
int lastLevel=m_currentLevelSelection;
|
||||||
if(PadGetDown(0)&PAD_LEFT)
|
if(PadGetDown(0)&PAD_LEFT)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
|
@ -306,9 +379,17 @@ void CMapScene::think(int _frames)
|
||||||
}
|
}
|
||||||
while(!isLevelOpen(m_currentChapterSelection,m_currentLevelSelection));
|
while(!isLevelOpen(m_currentChapterSelection,m_currentLevelSelection));
|
||||||
}
|
}
|
||||||
|
if(lastLevel!=m_currentLevelSelection)
|
||||||
|
{
|
||||||
|
m_pointerArrivedAtTarget=false;
|
||||||
|
m_pointerSin=0;
|
||||||
|
}
|
||||||
|
|
||||||
// Calc where the pointer should be
|
// Calc where the pointer should be
|
||||||
|
if(m_pointerArrivedAtTarget)
|
||||||
|
{
|
||||||
m_pointerSin=(m_pointerSin+(_frames*70))&4095;
|
m_pointerSin=(m_pointerSin+(_frames*70))&4095;
|
||||||
|
}
|
||||||
m_pointerTarget=getPointerTargetPosition();
|
m_pointerTarget=getPointerTargetPosition();
|
||||||
|
|
||||||
// Move the pointer
|
// Move the pointer
|
||||||
|
@ -319,31 +400,38 @@ void CMapScene::think(int _frames)
|
||||||
delta=m_pointerTarget.vx-m_pointerPos.vx;
|
delta=m_pointerTarget.vx-m_pointerPos.vx;
|
||||||
if(delta<0)
|
if(delta<0)
|
||||||
{
|
{
|
||||||
delta/=2;
|
delta/=3;
|
||||||
if(!delta)delta=-1;
|
if(!delta)delta=-1;
|
||||||
}
|
}
|
||||||
else if(delta>0)
|
else if(delta>0)
|
||||||
{
|
{
|
||||||
delta/=2;
|
delta/=3;
|
||||||
if(!delta)delta=+1;
|
if(!delta)delta=+1;
|
||||||
}
|
}
|
||||||
m_pointerPos.vx+=delta;
|
m_pointerPos.vx+=delta;
|
||||||
|
|
||||||
delta=m_pointerTarget.vy-m_pointerPos.vy;
|
delta=(m_pointerTarget.vy+(msin(m_pointerSin)*4>>12))-m_pointerPos.vy;
|
||||||
if(delta<0)
|
if(delta<0)
|
||||||
{
|
{
|
||||||
delta/=2;
|
delta/=3;
|
||||||
if(!delta)delta=-1;
|
if(!delta)delta=-1;
|
||||||
}
|
}
|
||||||
else if(delta>0)
|
else if(delta>0)
|
||||||
{
|
{
|
||||||
delta/=2;
|
delta/=3;
|
||||||
if(!delta)delta=+1;
|
if(!delta)delta=+1;
|
||||||
}
|
}
|
||||||
m_pointerPos.vy+=delta;
|
m_pointerPos.vy+=delta;
|
||||||
|
|
||||||
|
if(!m_pointerArrivedAtTarget&&
|
||||||
|
m_pointerTarget.vx==m_pointerPos.vx&&m_pointerTarget.vy==m_pointerPos.vy)
|
||||||
|
{
|
||||||
|
m_pointerArrivedAtTarget=true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(PadGetDown(0)&(PAD_CROSS|PAD_START))
|
if(m_pointerArrivedAtTarget&&
|
||||||
|
PadGetDown(0)&PAD_CROSS)
|
||||||
{
|
{
|
||||||
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection][m_currentLevelSelection].m_globalLevelNumber;
|
s_globalLevelSelectThing=s_mapLevelData[m_currentChapterSelection][m_currentLevelSelection].m_globalLevelNumber;
|
||||||
m_readyToExit=true;
|
m_readyToExit=true;
|
||||||
|
@ -376,7 +464,6 @@ void CMapScene::generateMapScreenImage()
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
||||||
m_currentLevelSelection=0;
|
m_currentLevelSelection=0;
|
||||||
memset(m_screenImage,0,512*256*2);
|
memset(m_screenImage,0,512*256*2);
|
||||||
copyImageToScreen(MAP_MAP_BACKGROUND_GFX,MAP_PARCHMENT_START_X,MAP_PARCHMENT_START_Y,MAP_PARCHMENT_WIDTH,MAP_PARCHMENT_HEIGHT);
|
copyImageToScreen(MAP_MAP_BACKGROUND_GFX,MAP_PARCHMENT_START_X,MAP_PARCHMENT_START_Y,MAP_PARCHMENT_WIDTH,MAP_PARCHMENT_HEIGHT);
|
||||||
|
@ -389,6 +476,7 @@ void CMapScene::generateMapScreenImage()
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pointerPos=getPointerTargetPosition();
|
m_pointerPos=getPointerTargetPosition();
|
||||||
|
m_pointerArrivedAtTarget=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -430,7 +518,7 @@ DVECTOR CMapScene::getPointerTargetPosition()
|
||||||
|
|
||||||
pos=s_mapLevelPositions[m_currentLevelSelection];
|
pos=s_mapLevelPositions[m_currentLevelSelection];
|
||||||
pos.vx+=(MAP_LEVEL_WIDTH/2);
|
pos.vx+=(MAP_LEVEL_WIDTH/2);
|
||||||
pos.vy+=MAP_LEVEL_HEIGHT+(msin(m_pointerSin)*4>>12);
|
pos.vy+=MAP_LEVEL_HEIGHT;//+(msin(m_pointerSin)*4>>12);
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
@ -452,18 +540,6 @@ int CMapScene::getSpatulaCollectedCount(unsigned int _chapter,unsigned int _lev
|
||||||
return CGameSlotManager::getSlotData()->getSpatulaCollectedCount(_chapter,_level);
|
return CGameSlotManager::getSlotData()->getSpatulaCollectedCount(_chapter,_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMapScene::getSpatulaAvailableCount(unsigned int _chapter,unsigned int _level)
|
|
||||||
{
|
|
||||||
ASSERT(!s_mapLevelData[_chapter][_level].m_kelpWorldLevel);
|
|
||||||
return s_mapLevelData[_chapter][_level].m_spatularOrTokenCounts;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CMapScene::getKelpTokenAvailableCount(unsigned int _chapter,unsigned int _level)
|
|
||||||
{
|
|
||||||
ASSERT(s_mapLevelData[_chapter][_level].m_kelpWorldLevel);
|
|
||||||
return s_mapLevelData[_chapter][_level].m_spatularOrTokenCounts;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CMapScene::hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level)
|
int CMapScene::hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level)
|
||||||
{
|
{
|
||||||
return _level&1;
|
return _level&1;
|
||||||
|
|
|
@ -59,12 +59,15 @@ private:
|
||||||
|
|
||||||
MAP_LEVEL_WIDTH=140,
|
MAP_LEVEL_WIDTH=140,
|
||||||
MAP_LEVEL_HEIGHT=60,
|
MAP_LEVEL_HEIGHT=60,
|
||||||
MAP_LEVEL_TOP_BORDER=20,
|
|
||||||
|
|
||||||
|
MAP_INSTRUCTIONS_YSTART=173,
|
||||||
MAP_INSTRUCTIONS_WIDTH=416,
|
MAP_INSTRUCTIONS_BUTTON_Y_OFFSET=3,
|
||||||
MAP_INSTRUCTIONS_HEIGHT=32,
|
MAP_INSTRUCTIONS_TEXT_R=128,
|
||||||
MAP_INSTRUCTIONS_BOTTOM_OFFSET=40,
|
MAP_INSTRUCTIONS_TEXT_G=64,
|
||||||
|
MAP_INSTRUCTIONS_TEXT_B=64,
|
||||||
|
MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS=5,
|
||||||
|
MAP_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT=10,
|
||||||
|
MAP_INSTRUCTIONS_Y_SPACE_BETWEEN_LINES=15,
|
||||||
|
|
||||||
MAP_NUM_CHAPTERS=5,
|
MAP_NUM_CHAPTERS=5,
|
||||||
MAP_NUM_LEVELS_PER_CHAPTER=5,
|
MAP_NUM_LEVELS_PER_CHAPTER=5,
|
||||||
|
@ -74,19 +77,21 @@ private:
|
||||||
{
|
{
|
||||||
int m_mapFile;
|
int m_mapFile;
|
||||||
int m_globalLevelNumber;
|
int m_globalLevelNumber;
|
||||||
int m_spatularOrTokenCounts;
|
int m_spatulaOrTokenCounts;
|
||||||
int m_questItemFrame;
|
int m_questItemFrame;
|
||||||
int m_kelpWorldLevel;
|
int m_kelpWorldLevel;
|
||||||
} sMapLevelData;
|
} sMapLevelData;
|
||||||
|
|
||||||
|
|
||||||
|
void renderPointer();
|
||||||
|
void renderInstructions();
|
||||||
|
|
||||||
|
|
||||||
void generateMapScreenImage();
|
void generateMapScreenImage();
|
||||||
void copyImageToScreen(int _file,int _x,int _y,int _w,int _h);
|
void copyImageToScreen(int _file,int _x,int _y,int _w,int _h);
|
||||||
DVECTOR getPointerTargetPosition();
|
DVECTOR getPointerTargetPosition();
|
||||||
int isLevelOpen(unsigned int _chapter,unsigned int _level);
|
int isLevelOpen(unsigned int _chapter,unsigned int _level);
|
||||||
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level);
|
int getSpatulaCollectedCount(unsigned int _chapter,unsigned int _level);
|
||||||
int getSpatulaAvailableCount(unsigned int _chapter,unsigned int _level);
|
|
||||||
int getKelpTokenAvailableCount(unsigned int _chapter,unsigned int _level);
|
|
||||||
int hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level);
|
int hasQuestItemBeenCollected(unsigned int _chapter,unsigned int _level);
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,6 +105,7 @@ private:
|
||||||
DVECTOR m_pointerPos;
|
DVECTOR m_pointerPos;
|
||||||
DVECTOR m_pointerTarget;
|
DVECTOR m_pointerTarget;
|
||||||
int m_pointerSin;
|
int m_pointerSin;
|
||||||
|
int m_pointerArrivedAtTarget;
|
||||||
|
|
||||||
static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER];
|
static sMapLevelData s_mapLevelData[MAP_NUM_CHAPTERS][MAP_NUM_LEVELS_PER_CHAPTER];
|
||||||
static DVECTOR s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER];
|
static DVECTOR s_mapLevelPositions[MAP_NUM_LEVELS_PER_CHAPTER];
|
||||||
|
|
|
@ -110,7 +110,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(GameScene.getChapterNumber(),GameScene.getLevelNumber(),m_spatulaNumber);
|
CGameSlotManager::getSlotData()->collectSpatula(GameScene.getChapterNumber()-1,GameScene.getLevelNumber()-1,m_spatulaNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue