From a13f0d8e4f7718c89a096721a4901a937561cde0 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 12 Feb 2001 17:18:17 +0000 Subject: [PATCH] --- source/game/game.cpp | 16 +++++++++++++++- source/game/game.h | 5 ++++- source/game/pause.cpp | 31 +++++++++++++++++++++---------- source/game/pause.h | 2 ++ source/level/level.cpp | 29 ++++++++++------------------- source/level/level.h | 3 --- 6 files changed, 52 insertions(+), 34 deletions(-) diff --git a/source/game/game.cpp b/source/game/game.cpp index 6ca079bd5..926da2875 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -51,6 +51,11 @@ #include "game\pause.h" #endif +#ifndef __FRONTEND_FRONTEND_H__ +#include "frontend\frontend.h" +#endif + + int GX=248; int GY=129; @@ -65,6 +70,7 @@ MATRIX CGameScene::CamMtx; /*****************************************************************************/ int s_globalLevelSelectThing=0; +int CGameScene::s_readyToExit; /*****************************************************************************/ @@ -104,6 +110,8 @@ void CGameScene::init() SetGeomOffset( GX, GY ); SetGeomScreen(GH); + + s_readyToExit=false; } /*****************************************************************************/ @@ -172,12 +180,18 @@ void CGameScene::think(int _frames) Level.setCameraCentre(camPos); Level.think(_frames); } + + if(s_readyToExit) + { + // Temporarily.. exiting game scene always goes back to the front end (pkg) + GameState::setNextScene(&FrontEndScene); + } } /*****************************************************************************/ int CGameScene::readyToShutdown() { - return false; + return s_readyToExit; } /*****************************************************************************/ diff --git a/source/game/game.h b/source/game/game.h index 99127e4a8..f00449f53 100644 --- a/source/game/game.h +++ b/source/game/game.h @@ -37,6 +37,8 @@ virtual void createPlayer(); static MATRIX *GetCamMtx() {return(&CamMtx);} class CPlayer *getPlayer(); void sendEvent( GAME_EVENT evt, CThing *sourceThing ); + + static void setReadyToExit() {s_readyToExit=true;} protected: @@ -45,7 +47,8 @@ protected: class CPlayer *m_player; static FontBank *s_genericFont; static MATRIX CamMtx; -//static class SpriteBank *s_sprites; <-- Was causing compile error, sorry + + static int s_readyToExit; }; diff --git a/source/game/pause.cpp b/source/game/pause.cpp index be24d624c..f88f3b8f6 100644 --- a/source/game/pause.cpp +++ b/source/game/pause.cpp @@ -73,7 +73,6 @@ #define TEXT_BOX_WIDTH 300 #define TEXT_BOX_HEIGHT 20 #define OT_POS 5 -int m_exitFlag; extern int newmode; void CPauseMenu::init() { @@ -86,27 +85,33 @@ void CPauseMenu::init() CGUIFactory::createValueButtonFrame(m_guiFrame, (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,10,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__PAUSE_MENU__CONTINUE, - &m_exitFlag,true); + &m_exitPauseMenuFlag,true); CGUIFactory::createValueButtonFrame(m_guiFrame, - (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,40,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, + (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,30,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, + STR__PAUSE_MENU__QUIT, + &m_quitGameFlag,true); +#ifdef __USER_paul__ + CGUIFactory::createValueButtonFrame(m_guiFrame, + (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,60,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__DEBUG__BASICUNARMED_MODE, &newmode,0); CGUIFactory::createValueButtonFrame(m_guiFrame, - (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,60,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, + (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,80,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__DEBUG__FULLUNARMED_MODE, &newmode,1); CGUIFactory::createValueButtonFrame(m_guiFrame, - (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,80,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, + (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,100,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__DEBUG__SQUEAKYBOOTS_MODE, &newmode,2); CGUIFactory::createValueButtonFrame(m_guiFrame, - (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,100,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, + (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,120,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__DEBUG__NET_MODE, &newmode,3); CGUIFactory::createValueButtonFrame(m_guiFrame, - (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,120,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, + (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,140,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__DEBUG__CORALBLOWER_MODE, &newmode,4); +#endif m_active=false; } @@ -133,7 +138,8 @@ void CPauseMenu::shutdown() void CPauseMenu::select() { m_active=true; - m_exitFlag=false; + m_exitPauseMenuFlag=false; + m_quitGameFlag=false; m_guiFrame->select(); } @@ -147,7 +153,6 @@ void CPauseMenu::select() void CPauseMenu::unselect() { m_active=false; - m_exitFlag=false; m_guiFrame->unselect(); } /*---------------------------------------------------------------------- @@ -163,8 +168,14 @@ void CPauseMenu::think(int _frames) if(m_active) { m_guiFrame->think(_frames); - if(m_exitFlag||newmode!=-1) + if(m_exitPauseMenuFlag|| + m_quitGameFlag|| + newmode!=-1) { + if(m_quitGameFlag) + { + CGameScene::setReadyToExit(); + } unselect(); } } diff --git a/source/game/pause.h b/source/game/pause.h index 3cdef9ca3..f71306ee9 100644 --- a/source/game/pause.h +++ b/source/game/pause.h @@ -45,6 +45,8 @@ public: private: int m_active; + int m_exitPauseMenuFlag; + int m_quitGameFlag; class CGUIControlFrame *m_guiFrame; diff --git a/source/level/level.cpp b/source/level/level.cpp index 1b6e27248..c3324f4e4 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -22,33 +22,15 @@ DVECTOR CLevel::MapPos; /*****************************************************************************/ -CLevel::CLevel() +void CLevel::init() { for (int i=0; ishutdown(); - delete TileLayers[i]; - } - } -} - -/*****************************************************************************/ -void CLevel::init() -{ TileBankHdr=(sTileBankHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL04_TBK,"Tile Bank Data"); LevelHdr=(sLvlHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL0401_LVL,"Level Data"); m_levelTPage=TPLoadTex(LEVELS_CHAPTER02_LEVEL04_TEX); @@ -114,6 +96,15 @@ sTile *TileList=(sTile*)MakePtr(TileBankHdr,TileBankHdr->TileList); /*****************************************************************************/ void CLevel::shutdown() { + for (int i=0; ishutdown(); + delete TileLayers[i]; + } + } + TPFree(m_levelTPage); CollisionLayer->shutdown(); MemFree(CollisionLayer); MemFree(TileBankHdr); diff --git a/source/level/level.h b/source/level/level.h index 0a3325dd0..8b2048256 100644 --- a/source/level/level.h +++ b/source/level/level.h @@ -14,9 +14,6 @@ class CLayer; class CLevel { public: - CLevel(); - virtual ~CLevel(); - // Scene Handlers void init(); void shutdown();