This commit is contained in:
Paul 2001-06-22 20:06:39 +00:00
parent b8acfaa783
commit 135a2ae31b
10 changed files with 135 additions and 187 deletions

View File

@ -46,6 +46,10 @@ FX
#include "gfx\actor.h" #include "gfx\actor.h"
#endif #endif
#ifndef __GFX_FADER_H__
#include "gfx\fader.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -160,112 +164,11 @@ typedef struct
CFmaScene FmaScene; CFmaScene FmaScene;
/*****************************************************************************/
// Ch1 FMA
int s_testScript[]=
{
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_00_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_01_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_02_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_03_DAT,
// Scene 1 - Shade Shoals
SC_SNAP_CAMERA_TO, 4*16,16*16,
SC_WAIT_ON_TIMER, 30,
// Scene 2 - SB arrives outside Shady Shoals
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16,
SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1,
SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true,
SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,16*16,30*16,96,
SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,
SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_00_DAT,
// Scene 3 - SB Fixing TV
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE,
SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,224*16,30*16,
SC_SET_ACTOR_FACING, FMA_ACTOR_MM,1,
SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE,
SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,220*16,30*16,
SC_SET_ACTOR_FACING, FMA_ACTOR_BB,1,
SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true,
SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,208*16,30*16,
SC_SNAP_CAMERA_TO, 197*16,16*16,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_WAIT_ON_TIMER, 10,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,
SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0,
SC_WAIT_ON_TIMER, 10,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_WAIT_ON_TIMER, 10,
SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,
SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_01_DAT,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_WAIT_ON_TIMER, 10,
SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,
SC_WAIT_ON_TIMER, 10,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_WAIT_ON_TIMER, 10,
SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,
// Scene 4 - Goes to BB, and collects his prize
SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,216*16,30*16,16,
SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,
SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_02_DAT,
SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,154,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB,
// Scene 5 - SB leaves Shady Shoals
SC_SNAP_CAMERA_TO, 4*16,16*16,
SC_WAIT_ON_TIMER, 30,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,
SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,4*16,30*16,
SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0,
SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16,144,
SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB,
// Scene 6 - Back in shady
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE,
SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,207*16,30*16,
SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0,
SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE,
SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,212*16,30*16,
SC_SET_ACTOR_FACING, FMA_ACTOR_BB,1,
SC_SNAP_CAMERA_TO, 197*16,16*16,
SC_WAIT_ON_TIMER, 60,
// Scene 7 - TV goes pop
// Scene 8 - Outside, MM & BB SCREEEEEEEEEEEEEEEAM
SC_SNAP_CAMERA_TO, 4*16,16*16,
SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_03_DAT,
SC_STOP
};
/*****************************************************************************/ /*****************************************************************************/
/*** Intro FMA ***************************************************************/ /*** Intro FMA ***************************************************************/
/*****************************************************************************/ /*****************************************************************************/
int s_FMAIntroScript[]= static const int s_FMAIntroScript[]=
{ {
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH1_00_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH1_00_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH1_01_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH1_01_DAT,
@ -350,7 +253,7 @@ int s_FMAIntroScript[]=
/*****************************************************************************/ /*****************************************************************************/
/*** C1 End FMA **************************************************************/ /*** C1 End FMA **************************************************************/
/*****************************************************************************/ /*****************************************************************************/
int s_FMAC1EndScript[]= static const int s_FMAC1EndScript[]=
{ {
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH2_00_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH2_00_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH2_01_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH2_01_DAT,
@ -423,7 +326,7 @@ int s_FMAC1EndScript[]=
/*****************************************************************************/ /*****************************************************************************/
/*** C2 End FMA **************************************************************/ /*** C2 End FMA **************************************************************/
/*****************************************************************************/ /*****************************************************************************/
int s_FMAC2EndScript[]= static const int s_FMAC2EndScript[]=
{ {
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH3_00_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH3_00_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH3_01_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH3_01_DAT,
@ -484,7 +387,7 @@ int s_FMAC2EndScript[]=
/*****************************************************************************/ /*****************************************************************************/
/*** C3 End FMA **************************************************************/ /*** C3 End FMA **************************************************************/
/*****************************************************************************/ /*****************************************************************************/
int s_FMAC3EndScript[]= static const int s_FMAC3EndScript[]=
{ {
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH4_00_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH4_00_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH4_01_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH4_01_DAT,
@ -556,7 +459,7 @@ int s_FMAC3EndScript[]=
/*****************************************************************************/ /*****************************************************************************/
/*** C4 End FMA **************************************************************/ /*** C4 End FMA **************************************************************/
/*****************************************************************************/ /*****************************************************************************/
int s_FMAC4EndScript[]= static const int s_FMAC4EndScript[]=
{ {
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH5_00_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH5_00_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH5_01_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH5_01_DAT,
@ -632,7 +535,7 @@ int s_FMAC4EndScript[]=
/*** C5 End FMA **************************************************************/ /*** C5 End FMA **************************************************************/
/*****************************************************************************/ /*****************************************************************************/
int s_FMAC5EndScript[]= static const int s_FMAC5EndScript[]=
{ {
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_00_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_00_DAT,
SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_01_DAT, SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_01_DAT,
@ -731,37 +634,9 @@ int s_FMAC5EndScript[]=
SC_STOP SC_STOP
}; };
/*****************************************************************************/
// A test script..
/*
int s_testScriptold[]=
{
SC_REGISTER_CONVERSATION, SCRIPTS_CH1L1_01_DAT,
SC_SNAP_CAMERA_TO, 0,0,
SC_SET_ACTOR_VISIBILITY, ACTOR_SPONGEBOB,true,
SC_SET_ACTOR_POSITION, ACTOR_SPONGEBOB,100,100,
SC_MOVE_CAMERA_TO, 100,100,150+(60*2),
SC_WALK_ACTOR_TO_POSITION, ACTOR_SPONGEBOB,200,100,10,
SC_WAIT_ON_CAMERA_STOP,
SC_WAIT_ON_CONVERSATION, SCRIPTS_CH1L1_01_DAT,
SC_WAIT_ON_TIMER, 60,
SC_SET_ACTOR_ANIM_STATE, ACTOR_SPONGEBOB,ANIM_WALK,
SC_SET_ACTOR_FACING, ACTOR_SPONGEBOB,1,
SC_WALK_ACTOR_TO_POSITION, ACTOR_SPONGEBOB,250,200,5,
SC_WAIT_ON_ACTOR_STOP, ACTOR_SPONGEBOB,
SC_WAIT_ON_TIMER, 60*5,
SC_STOP
};
*/
// Actor graphics data // Actor graphics data
const ACTOR_GRAPHICS_DATA s_actorGraphicsData[FMA_NUM_ACTORS]= static const ACTOR_GRAPHICS_DATA s_actorGraphicsData[FMA_NUM_ACTORS]=
{ {
{ ACTORS_SPONGEBOB_SBK, { ANIM_SPONGEBOB_IDLEBREATH, ANIM_SPONGEBOB_RUN } }, // ACTOR_SPONGEBOB { ACTORS_SPONGEBOB_SBK, { ANIM_SPONGEBOB_IDLEBREATH, ANIM_SPONGEBOB_RUN } }, // ACTOR_SPONGEBOB
{ ACTORS_MERMAIDMAN_SBK, { ANIM_MERMAIDMAN_IDLEBREATHE, ANIM_MERMAIDMAN_IDLEBREATHE } }, // ACTOR_MM { ACTORS_MERMAIDMAN_SBK, { ANIM_MERMAIDMAN_IDLEBREATHE, ANIM_MERMAIDMAN_IDLEBREATHE } }, // ACTOR_MM
@ -773,6 +648,20 @@ const ACTOR_GRAPHICS_DATA s_actorGraphicsData[FMA_NUM_ACTORS]=
ACTOR_DATA m_actorData[FMA_NUM_ACTORS]; ACTOR_DATA m_actorData[FMA_NUM_ACTORS];
static const int *s_fmaScripts[CFmaScene::NUM_FMA_SCRIPTS]=
{
s_FMAIntroScript,
s_FMAC1EndScript,
s_FMAC2EndScript,
s_FMAC3EndScript,
s_FMAC4EndScript,
s_FMAC5EndScript,
};
static CFmaScene::FMA_SCRIPT_NUMBER s_chosenScript=CFmaScene::FMA_SCRIPT__INTRO;
#include "pad\pads.h" #include "pad\pads.h"
#include "gfx\font.h" #include "gfx\font.h"
@ -820,7 +709,9 @@ void CFmaScene::init()
m_frameCount=0; m_frameCount=0;
m_scriptRunning=true; m_scriptRunning=true;
m_pc=s_testScript; m_pc=s_fmaScripts[s_chosenScript];
CFader::setFadingIn();
} }
@ -916,7 +807,7 @@ void CFmaScene::think(int _frames)
m_cameraPos.vx+=16; m_cameraPos.vx+=16;
} }
#endif #endif
if(m_scriptRunning==false&&PadGetDown(0)&(PAD_CROSS|PAD_START)) if(m_scriptRunning==false&&!m_readyToShutdown)
{ {
startShutdown(); startShutdown();
} }
@ -1021,7 +912,19 @@ void CFmaScene::think(int _frames)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
int CFmaScene::readyToShutdown() int CFmaScene::readyToShutdown()
{ {
return m_readyToShutdown; return m_readyToShutdown&&!CFader::isFading();
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CFmaScene::selectFma(FMA_SCRIPT_NUMBER _fma)
{
s_chosenScript=_fma;
} }
@ -1033,6 +936,7 @@ int CFmaScene::readyToShutdown()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CFmaScene::startShutdown() void CFmaScene::startShutdown()
{ {
CFader::setFadingOut();
GameState::setNextScene(&MapScene); GameState::setNextScene(&MapScene);
m_readyToShutdown=true; m_readyToShutdown=true;
} }

View File

@ -38,9 +38,22 @@
Structure defintions Structure defintions
-------------------- */ -------------------- */
class CFmaScene: public CScene class CFmaScene : public CScene
{ {
public: public:
typedef enum
{
FMA_SCRIPT__INTRO,
FMA_SCRIPT__CH1FINISHED,
FMA_SCRIPT__CH2FINISHED,
FMA_SCRIPT__CH3FINISHED,
FMA_SCRIPT__CH4FINISHED,
FMA_SCRIPT__CH5FINISHED,
NUM_FMA_SCRIPTS,
FMA_SCRIPT__NONE,
}FMA_SCRIPT_NUMBER;
void init(); void init();
void shutdown(); void shutdown();
void render(); void render();
@ -48,6 +61,8 @@ public:
int readyToShutdown(); int readyToShutdown();
char *getSceneName() {return"FMA";} char *getSceneName() {return"FMA";}
static void selectFma(FMA_SCRIPT_NUMBER _fma);
private: private:
void startShutdown(); void startShutdown();
@ -66,7 +81,7 @@ private:
int m_endCameraFrame; int m_endCameraFrame;
DVECTOR m_endCameraPos; DVECTOR m_endCameraPos;
int *m_pc; int const *m_pc;
int m_scriptRunning; int m_scriptRunning;
int m_stillProcessingCommand; int m_stillProcessingCommand;
int m_doOtherProcessing; int m_doOtherProcessing;

View File

@ -70,6 +70,10 @@
#include "game\gameslot.h" #include "game\gameslot.h"
#endif #endif
#ifndef __FMA_FMA_H__
#include "fma\fma.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -278,10 +282,23 @@ void CFrontEndScene::setMode(FrontEndMode _newMode)
} }
// Open new mode // Open new mode
if(_newMode==MODE__EXIT_TO_MAP) if(_newMode==MODE__EXIT_TO_GAME)
{ {
CGameSlotManager::GameSlot *gameSlot;
gameSlot=CGameSlotManager::getSlotData();
if(gameSlot->m_hasSeenOpeningFMA)
{
GameState::setNextScene(&MapScene);
}
else
{
CFmaScene::selectFma(CFmaScene::FMA_SCRIPT__INTRO);
GameState::setNextScene(&FmaScene);
gameSlot->m_hasSeenOpeningFMA=true;
}
m_exitToGame=true; m_exitToGame=true;
GameState::setNextScene(&MapScene);
} }
else else

View File

@ -55,7 +55,7 @@ public:
MODE__NONE, MODE__NONE,
MODE__EXIT_TO_MAP, MODE__EXIT_TO_GAME,
} FrontEndMode; } FrontEndMode;
enum enum

View File

@ -555,7 +555,7 @@ int CFrontEndStart::isReadyToExit()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
CFrontEndScene::FrontEndMode CFrontEndStart::getNextMode() CFrontEndScene::FrontEndMode CFrontEndStart::getNextMode()
{ {
return m_state==STATE_EXITING_TO_GAME?CFrontEndScene::MODE__EXIT_TO_MAP:CFrontEndScene::MODE__MAIN_TITLES; return m_state==STATE_EXITING_TO_GAME?CFrontEndScene::MODE__EXIT_TO_GAME:CFrontEndScene::MODE__MAIN_TITLES;
} }
/*=========================================================================== /*===========================================================================

View File

@ -429,8 +429,11 @@ void CGameScene::think_playing(int _frames)
} }
// Level finished - go to map or fma // Level finished - go to map or fma
if(level==4) CFmaScene::FMA_SCRIPT_NUMBER fma;
fma=Level.getFMAToFollow();
if(fma!=CFmaScene::FMA_SCRIPT__NONE)
{ {
FmaScene.selectFma(fma);
GameState::setNextScene(&FmaScene); GameState::setNextScene(&FmaScene);
} }
else if(level==5) else if(level==5)

View File

@ -156,6 +156,8 @@ void CGameSlotManager::eraseGameSlot(unsigned int _slot)
slot->m_isInUse=false; slot->m_isInUse=false;
slot->m_lives=INITIAL_LIVES; slot->m_lives=INITIAL_LIVES;
slot->m_continues=INITIAL_CONTINUES; slot->m_continues=INITIAL_CONTINUES;
slot->m_hasSeenOpeningFMA=false;
// Clear spatula and kelp token flags // Clear spatula and kelp token flags
for(i=0;i<NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS;i++) for(i=0;i<NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS;i++)

View File

@ -68,6 +68,7 @@ public:
unsigned char m_isInUse; unsigned char m_isInUse;
unsigned char m_lives; unsigned char m_lives;
unsigned char m_continues; unsigned char m_continues;
unsigned char m_hasSeenOpeningFMA;
unsigned char m_spatulaCollectedCounts[NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS]; unsigned char m_spatulaCollectedCounts[NUM_CHAPTERS*NUM_LEVELS_WITH_SPATULAS];
unsigned char m_kelpTokenCollectedFlags[NUM_CHAPTERS][16]; // Enuf space for 128 tokens per level unsigned char m_kelpTokenCollectedFlags[NUM_CHAPTERS][16]; // Enuf space for 128 tokens per level
unsigned char m_kelpTokensHeld; unsigned char m_kelpTokensHeld;

View File

@ -132,38 +132,38 @@
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, STR__CHAPTER_1,STR__CHAPTER_1_LEVEL_1 }, {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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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 }, {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, CFmaScene::FMA_SCRIPT__CH1FINISHED },
// C2 // C2
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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 }, {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, CFmaScene::FMA_SCRIPT__CH2FINISHED },
// C3 // C3
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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 }, {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, CFmaScene::FMA_SCRIPT__CH3FINISHED },
// C4 // C4
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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 }, {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, CFmaScene::FMA_SCRIPT__CH4FINISHED },
// C5 // C5
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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,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, CFmaScene::FMA_SCRIPT__NONE },
{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 }, {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, CFmaScene::FMA_SCRIPT__NONE },
{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 }, {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, CFmaScene::FMA_SCRIPT__CH5FINISHED },
// FMA // FMA
{6,0, 0, LEVELS_FMA_SHADYSHOALS_LVL,LEVELS_FMA_SHADYSHOALS_TEX, CSoundMediator::SONG_TITLE, STR__NOW_LOADING,STR__NOW_LOADING }, {6,0, 0, LEVELS_FMA_SHADYSHOALS_LVL,LEVELS_FMA_SHADYSHOALS_TEX, CSoundMediator::SONG_TITLE, STR__NOW_LOADING,STR__NOW_LOADING , CFmaScene::FMA_SCRIPT__NONE },
{6,0, 0, LEVELS_FMA_CONTROLROOM_LVL,LEVELS_FMA_CONTROLROOM_TEX, CSoundMediator::SONG_TITLE, STR__NOW_LOADING,STR__NOW_LOADING }, {6,0, 0, LEVELS_FMA_CONTROLROOM_LVL,LEVELS_FMA_CONTROLROOM_TEX, CSoundMediator::SONG_TITLE, STR__NOW_LOADING,STR__NOW_LOADING , CFmaScene::FMA_SCRIPT__NONE },
}; };
const int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab); const int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab);

View File

@ -5,6 +5,10 @@
#ifndef __LEVEL_LEVEL_H__ #ifndef __LEVEL_LEVEL_H__
#define __LEVEL_LEVEL_H__ #define __LEVEL_LEVEL_H__
#ifndef __FMA_FMA_H__
#include "fma\fma.h"
#endif
#include "system\global.h" #include "system\global.h"
#include "level/layertile.h" #include "level/layertile.h"
#include "level/layercollision.h" #include "level/layercollision.h"
@ -12,11 +16,12 @@
/*****************************************************************************/ /*****************************************************************************/
struct sLvlTab struct sLvlTab
{ {
u16 Chapter,Level; u16 Chapter,Level;
u8 totalSpatCount; u8 totalSpatCount;
FileEquate LevelFilename,TexFilename; FileEquate LevelFilename,TexFilename;
int songId; int songId;
u16 ChapterLoadingText,LevelLoadingText; u16 ChapterLoadingText,LevelLoadingText;
CFmaScene::FMA_SCRIPT_NUMBER FMAToFollow;
}; };
/*****************************************************************************/ /*****************************************************************************/
@ -39,11 +44,12 @@ public:
static DVECTOR const &getCameraPos() {return MapPos;} static DVECTOR const &getCameraPos() {return MapPos;}
static DVECTOR const &getPlayerSpawnPos() {return s_playerSpawnPos;} static DVECTOR const &getPlayerSpawnPos() {return s_playerSpawnPos;}
static int getCurrentChapter() {return LvlTable[s_globalLevelSelectThing].Chapter;} static int getCurrentChapter() {return LvlTable[s_globalLevelSelectThing].Chapter;}
static int getCurrentChapterLevel() {return LvlTable[s_globalLevelSelectThing].Level;} static int getCurrentChapterLevel() {return LvlTable[s_globalLevelSelectThing].Level;}
static int getTotalSpatCount() {return LvlTable[s_globalLevelSelectThing].totalSpatCount;} static int getTotalSpatCount() {return LvlTable[s_globalLevelSelectThing].totalSpatCount;}
static int getChapterLoadingText() {return LvlTable[s_globalLevelSelectThing].ChapterLoadingText;} static int getChapterLoadingText() {return LvlTable[s_globalLevelSelectThing].ChapterLoadingText;}
static int getLevelLoadingText() {return LvlTable[s_globalLevelSelectThing].LevelLoadingText;} static int getLevelLoadingText() {return LvlTable[s_globalLevelSelectThing].LevelLoadingText;}
static CFmaScene::FMA_SCRIPT_NUMBER getFMAToFollow() {return LvlTable[s_globalLevelSelectThing].FMAToFollow;}
void destroyMapArea(DVECTOR const &Pos); void destroyMapArea(DVECTOR const &Pos);
void destroyMapTile(DVECTOR const &Pos); void destroyMapTile(DVECTOR const &Pos);