This commit is contained in:
Paul 2001-06-25 21:47:22 +00:00
parent d0c3c5dad1
commit 61a94e2065
11 changed files with 112 additions and 2 deletions

View File

@ -310,6 +310,7 @@ system_src := main \
thing_src := thing
triggers_src := trigger \
tboss \
tcamlock \
tlevexit \
tlook \

View File

@ -164,6 +164,7 @@ int CGameScene::s_skipToNextLevel;
#endif
int CGameScene::s_restartLevel;
int CGameScene::s_bossHasBeenKilled;
int CGameScene::s_justHitBossArenaTrigger;
/*****************************************************************************/
@ -242,8 +243,13 @@ void CGameScene::render()
render_showing_lives();
break;
case GAMESTATE_PLAYING:
case GAMESTATE_FADING_INTO_BOSS_INTRO:
render_playing();
break;
case GAMESTATE_BOSS_INTRO:
case GAMESTATE_FADING_OUT_OF_BOSS_INTRO:
render_boss_intro();
break;
}
}
@ -329,6 +335,34 @@ void CGameScene::render_playing()
CActorPool::CleanUpCache();
}
/*****************************************************************************/
void CGameScene::render_boss_intro()
{
POLY_G4 *g4;
// Black background
g4=GetPrimG4();
setXYWH(g4,0,0,512,256);
setRGB0(g4,70,50,60);
setRGB1(g4,70,50,60);
setRGB2(g4,50,60,70);
setRGB3(g4,50,60,70);
AddPrimToList(g4,5);
// Instructions..
m_scalableFont->setColour(255,255,255);
m_scalableFont->setTrans(0);
m_scalableFont->setSMode(0);
m_scalableFont->setScale(300);
m_scalableFont->setJustification(FontBank::JUST_CENTRE);
m_scalableFont->print(256,30,"HOW TO BEAT THE BOSS...");
s_genericFont->setColour(255,255,255);
s_genericFont->setTrans(0);
s_genericFont->setSMode(0);
s_genericFont->print(256,70,"Blah\nBlah\nBlah");
}
/*****************************************************************************/
void CGameScene::think(int _frames)
{
@ -340,6 +374,23 @@ void CGameScene::think(int _frames)
case GAMESTATE_PLAYING:
think_playing(_frames);
break;
case GAMESTATE_FADING_INTO_BOSS_INTRO:
if(!CFader::isFading())
{
m_gamestate=GAMESTATE_BOSS_INTRO;
CFader::setFadingIn();
}
break;
case GAMESTATE_BOSS_INTRO:
think_boss_intro(_frames);
break;
case GAMESTATE_FADING_OUT_OF_BOSS_INTRO:
if(!CFader::isFading())
{
m_gamestate=GAMESTATE_PLAYING;
CFader::setFadingIn();
}
break;
}
}
@ -381,6 +432,14 @@ void CGameScene::think_playing(int _frames)
return;
}
if(s_justHitBossArenaTrigger)
{
m_gamestate=GAMESTATE_FADING_INTO_BOSS_INTRO;
CFader::setFadingOut();
s_justHitBossArenaTrigger=false;
}
// Auto-timer stuff
if(m_levelHasTimer)
{
@ -512,6 +571,18 @@ void CGameScene::think_playing(int _frames)
}
}
/*****************************************************************************/
void CGameScene::think_boss_intro(int _frames)
{
if(PadGetDown(0)&PAD_CROSS)
{
m_gamestate=GAMESTATE_FADING_OUT_OF_BOSS_INTRO;
CFader::setFadingOut();
}
}
/*****************************************************************************/
int CGameScene::readyToShutdown()
{
@ -564,6 +635,11 @@ void CGameScene::setReadyToExit()
CFader::setFadingOut();
}
/*****************************************************************************/
void CGameScene::hitBossArenaTrigger()
{
s_justHitBossArenaTrigger=true;
}
/*****************************************************************************/
void CGameScene::initLevel()
@ -592,6 +668,7 @@ void CGameScene::initLevel()
m_player->setCameraBox(camBox);
s_bossHasBeenKilled=false;
s_justHitBossArenaTrigger=false;
if(getLevelNumber()==5&&getChapterNumber()==2)
{

View File

@ -50,10 +50,14 @@ virtual int canPause();
void sendEvent( GAME_EVENT evt, class CThing *sourceThing );
static void setReadyToExit();
static void hitBossArenaTrigger();
static void levelFinished() {s_levelFinished=true;}
static void restartlevel() {s_restartLevel=true;}
CLevel &GetLevel() {return(Level);}
// static MATRIX &GetCamMtx() {return(CamMtx);}
static ACTOR_TYPE getActorType( int actorNum ) {return actorType[actorNum];}
@ -68,6 +72,9 @@ private:
{
GAMESTATE_SHOWING_LIVES,
GAMESTATE_PLAYING,
GAMESTATE_FADING_INTO_BOSS_INTRO,
GAMESTATE_BOSS_INTRO,
GAMESTATE_FADING_OUT_OF_BOSS_INTRO,
}GAMESTATE;
enum
@ -78,11 +85,14 @@ private:
GAMESTATE m_gamestate;
int m_showingLivesTimer;
static int s_justHitBossArenaTrigger;
void think_showing_lives(int _frames);
void think_playing(int _frames);
void think_boss_intro(int _frames);
void render_showing_lives();
void render_playing();
void render_boss_intro();
protected:

View File

@ -58,6 +58,9 @@ void CBossArenaTrigger::collidedWith(CThing *_thisThing)
{
case TYPE_PLAYER:
{
CGameScene::hitBossArenaTrigger();
shutdown();
delete this;
break;
}

View File

@ -151,6 +151,10 @@
#include "triggers\toilgeyser.h"
#endif
#ifndef __TRIGGERS_TBOSS_H__
#include "triggers\tboss.h"
#endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
@ -334,7 +338,10 @@ CTrigger *trigger;
case TRIGGER_OIL_GEYSER:
trigger = (COilGeyserTrigger*)new("OilGeyserTrigger") COilGeyserTrigger();
break;
// Boss Arena
case TRIGGER_BOSS_ARENA:
trigger = (COilGeyserTrigger*)new("BossArenaTrigger") CBossArenaTrigger();
break;
default:
trigger=NULL;
}

View File

@ -56,6 +56,7 @@ enum TRIGGER_TYPE
TRIGGER_WIND_LEFT,
TRIGGER_WIND_RIGHT,
TRIGGER_OIL_GEYSER,
TRIGGER_BOSS_ARENA,
// Code based triggers
TRIGGER_PLATFORM,

View File

@ -162,6 +162,7 @@ WindDown=29
WindLeft=30
WindRight=31
OilGeyser=32
BossArena=33
################################################
# FX

View File

@ -71,4 +71,6 @@ HasBox=1
[WindRight]
[OilGeyser]
[OilGeyser]
[BossArena]

View File

@ -2205,6 +2205,14 @@ SOURCE=..\..\..\source\triggers\tbgeyser.h
# End Source File
# Begin Source File
SOURCE=..\..\..\source\triggers\tboss.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\source\triggers\tboss.h
# End Source File
# Begin Source File
SOURCE=..\..\..\source\triggers\tcamlock.cpp
# End Source File
# Begin Source File