diff --git a/makefile.gaz b/makefile.gaz index 7bb22bded..43f77f387 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -181,6 +181,8 @@ frontend_src := credits \ scrollbg \ start +fma_src := fma + fmv_src := fmv game_src := convo \ diff --git a/source/fma/fma.cpp b/source/fma/fma.cpp index 90aa0f1ef..417c64cae 100644 --- a/source/fma/fma.cpp +++ b/source/fma/fma.cpp @@ -18,6 +18,22 @@ #include "fma\fma.h" +#ifndef __LEVEL_LEVEL_H__ +#include "level\level.h" +#endif + +#ifndef __THING_THING_H__ +#include "thing\thing.h" +#endif + +#ifndef __GAME_CONVO_H__ +#include "game\convo.h" +#endif + +#ifndef __MAP_MAP_H__ +#include "map\map.h" +#endif + /* Std Lib ------- */ @@ -44,14 +60,34 @@ CFmaScene FmaScene; + + + + + +// tmp +#include "pad\pads.h" +// tmp + + /*---------------------------------------------------------------------- Function: Purpose: Params: Returns: ---------------------------------------------------------------------- */ -void CFmaScene::init() +void CFmaScene::init() { + CThingManager::init(); + CConversation::init(); + + CConversation::registerConversationScript(SCRIPTS_CH1L1_01_DAT); + + m_level=new ("FMALevel") CLevel(); + m_level->init(25); + + m_cameraPos.vx=m_cameraPos.vy=0; + m_readyToShutdown=false; } @@ -61,8 +97,12 @@ void CFmaScene::init() Params: Returns: ---------------------------------------------------------------------- */ -void CFmaScene::shutdown() +void CFmaScene::shutdown() { + m_level->shutdown(); delete m_level; + + CConversation::shutdown(); + CThingManager::shutdown(); } @@ -72,8 +112,11 @@ void CFmaScene::shutdown() Params: Returns: ---------------------------------------------------------------------- */ -void CFmaScene::render() +void CFmaScene::render() { + CThingManager::renderAllThings(); + CConversation::render(); + m_level->render(); } @@ -83,8 +126,35 @@ void CFmaScene::render() Params: Returns: ---------------------------------------------------------------------- */ -void CFmaScene::think(int _frames) +void CFmaScene::think(int _frames) { +// tmp + if(PadGetHeld(0)&PAD_UP) + { + m_cameraPos.vy-=10*_frames; + } + else if(PadGetHeld(0)&PAD_DOWN) + { + m_cameraPos.vy+=10*_frames; + } + else if(PadGetHeld(0)&PAD_LEFT) + { + m_cameraPos.vx-=10*_frames; + } + else if(PadGetHeld(0)&PAD_RIGHT) + { + m_cameraPos.vx+=10*_frames; + } + else if(PadGetDown(0)&PAD_START) + { + startShutdown(); + } +// tmp + + CThingManager::thinkAllThings(_frames); + CConversation::think(_frames); + m_level->setCameraCentre(m_cameraPos); + m_level->think(_frames); } @@ -94,9 +164,22 @@ void CFmaScene::think(int _frames) Params: Returns: ---------------------------------------------------------------------- */ -int CFmaScene::readyToShutdown() +int CFmaScene::readyToShutdown() { - return false; + return m_readyToShutdown; +} + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CFmaScene::startShutdown() +{ + GameState::setNextScene(&MapScene); + m_readyToShutdown=true; } diff --git a/source/fma/fma.h b/source/fma/fma.h index f3dcfe318..1c843ee66 100644 --- a/source/fma/fma.h +++ b/source/fma/fma.h @@ -22,6 +22,10 @@ #include "system\gstate.h" #endif +#ifndef _GLOBAL_HEADER_ +#include "system\global.h" +#endif + /* Std Lib ------- */ @@ -44,6 +48,17 @@ public: int readyToShutdown(); char *getSceneName() {return"FMA";} +private: + void startShutdown(); + + + + class CLevel *m_level; + + DVECTOR m_cameraPos; + + int m_readyToShutdown; + }; diff --git a/source/level/level.cpp b/source/level/level.cpp index ed49b3c6c..3bbc99e52 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -162,19 +162,19 @@ {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,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 }, // FMA - {6,99, 0, LEVELS_FMA_SHADYSHOALS_LVL,LEVELS_FMA_SHADYSHOALS_TEX, CSoundMediator::SONG_TITLE}, + {6,0, 0, LEVELS_FMA_SHADYSHOALS_LVL,LEVELS_FMA_SHADYSHOALS_TEX, CSoundMediator::SONG_TITLE, STR__NOW_LOADING,STR__NOW_LOADING }, }; const int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab); -const FileEquate loadingScreens[6]= +const FileEquate loadingScreens[7]= { - LOADINGSCREENS_PINEAPPLE_GFX, - LOADINGSCREENS_CULTURE_GFX, - LOADINGSCREENS_PICKLES_GFX, - LOADINGSCREENS_MONITOR_GFX, - LOADINGSCREENS_KARATE_GFX, - LOADINGSCREENS_PIZZA_GFX, + LOADINGSCREENS_PINEAPPLE_GFX, // Chapter 1 + LOADINGSCREENS_CULTURE_GFX, // Chapter 2 + LOADINGSCREENS_PICKLES_GFX, // Chapter 3 + LOADINGSCREENS_MONITOR_GFX, // Chapter 4 + LOADINGSCREENS_KARATE_GFX, // Chapter 5 + LOADINGSCREENS_PIZZA_GFX, // Fma }; /*****************************************************************************/ diff --git a/source/paul/scenesel.cpp b/source/paul/scenesel.cpp index 2ae883b56..a3a73d8a9 100644 --- a/source/paul/scenesel.cpp +++ b/source/paul/scenesel.cpp @@ -43,6 +43,10 @@ #include "game\game.h" #endif +#ifndef __FMA_FMA_H__ +#include "fma\fma.h" +#endif + #ifndef __BACKEND_GAMEOVER_H__ #include "backend\gameover.h" #endif @@ -88,6 +92,7 @@ CScene *CSceneSelector::s_sceneList[]= &FrontEndScene, &GameOverScene, &GameCompletedScene, + &FmaScene, &MapScene, }; int CSceneSelector::s_sceneCount=sizeof(s_sceneList)/sizeof(CScene*);