battle enemy face stuff
This commit is contained in:
@@ -22,6 +22,8 @@
|
|||||||
#include "CombinedLifeMeterEnemy.h"
|
#include "CombinedLifeMeterEnemy.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
|
#include "ScreenManager.h"
|
||||||
|
#include "ScreenGameplay.h"
|
||||||
|
|
||||||
|
|
||||||
const float SECONDS_TO_SHOW_FACE = 1.5f;
|
const float SECONDS_TO_SHOW_FACE = 1.5f;
|
||||||
@@ -88,8 +90,7 @@ void CombinedLifeMeterEnemy::Update( float fDelta )
|
|||||||
m_sprHealthStream.SetGlow( RageColor(1,1,1,0) );
|
m_sprHealthStream.SetGlow( RageColor(1,1,1,0) );
|
||||||
m_fLastSeenHealthPercent = GAMESTATE->m_fOpponentHealthPercent;
|
m_fLastSeenHealthPercent = GAMESTATE->m_fOpponentHealthPercent;
|
||||||
|
|
||||||
m_sprFace.SetState( damage );
|
SetFace( damage );
|
||||||
m_fSecondsUntilReturnToNormalFace = SECONDS_TO_SHOW_FACE;
|
|
||||||
|
|
||||||
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
|
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
|
||||||
{
|
{
|
||||||
@@ -97,8 +98,95 @@ void CombinedLifeMeterEnemy::Update( float fDelta )
|
|||||||
m_sprFrame.SetDiffuse( RageColor(0.5f,0.5f,0.5f,1) );
|
m_sprFrame.SetDiffuse( RageColor(0.5f,0.5f,0.5f,1) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// launch enemy attacks to human players
|
||||||
|
//
|
||||||
|
|
||||||
|
// Don't apply any attacks if the enemy is already defeated
|
||||||
|
if( GAMESTATE->m_fOpponentHealthPercent>0 )
|
||||||
|
{
|
||||||
|
|
||||||
|
static const CString sPossibleModifiers[NUM_ATTACK_LEVELS][3] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"1.5x",
|
||||||
|
"dizzy",
|
||||||
|
"drunk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sudden",
|
||||||
|
"hidden",
|
||||||
|
"wave",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"expand",
|
||||||
|
"tornado",
|
||||||
|
"flip"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#define CROSSED_SONG_SECONDS( s ) ((GAMESTATE->m_fMusicSeconds-fDelta) < s && (GAMESTATE->m_fMusicSeconds) >= s )
|
||||||
|
|
||||||
|
if( CROSSED_SONG_SECONDS(10) ||
|
||||||
|
CROSSED_SONG_SECONDS(30) ||
|
||||||
|
CROSSED_SONG_SECONDS(50) ||
|
||||||
|
CROSSED_SONG_SECONDS(70) ||
|
||||||
|
CROSSED_SONG_SECONDS(90) ||
|
||||||
|
CROSSED_SONG_SECONDS(110) )
|
||||||
|
{
|
||||||
|
SetFace( attack );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( CROSSED_SONG_SECONDS(20) || CROSSED_SONG_SECONDS(40) )
|
||||||
|
{
|
||||||
|
GameState::Attack a;
|
||||||
|
a.fSecsRemaining = 10;
|
||||||
|
a.level = ATTACK_LEVEL_1;
|
||||||
|
a.sModifier = sPossibleModifiers[a.level][rand()%3];
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
if( GAMESTATE->IsHumanPlayer(p) )
|
||||||
|
GAMESTATE->LaunchAttack( (PlayerNumber)p, a );
|
||||||
|
SCREENMAN->SendMessageToTopScreen( SM_BattleTrickLevel1 );
|
||||||
|
SetFace( attack );
|
||||||
|
}
|
||||||
|
if( CROSSED_SONG_SECONDS(60) || CROSSED_SONG_SECONDS(80) )
|
||||||
|
{
|
||||||
|
GameState::Attack a;
|
||||||
|
a.fSecsRemaining = 10;
|
||||||
|
a.level = ATTACK_LEVEL_2;
|
||||||
|
a.sModifier = sPossibleModifiers[a.level][rand()%3];
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
if( GAMESTATE->IsHumanPlayer(p) )
|
||||||
|
GAMESTATE->LaunchAttack( (PlayerNumber)p, a );
|
||||||
|
SCREENMAN->SendMessageToTopScreen( SM_BattleTrickLevel2 );
|
||||||
|
SetFace( attack );
|
||||||
|
}
|
||||||
|
if( CROSSED_SONG_SECONDS(100) )
|
||||||
|
{
|
||||||
|
GameState::Attack a;
|
||||||
|
a.fSecsRemaining = 10;
|
||||||
|
a.level = ATTACK_LEVEL_3;
|
||||||
|
a.sModifier = sPossibleModifiers[a.level][rand()%3];
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
if( GAMESTATE->IsHumanPlayer(p) )
|
||||||
|
GAMESTATE->LaunchAttack( (PlayerNumber)p, a );
|
||||||
|
SCREENMAN->SendMessageToTopScreen( SM_BattleTrickLevel3 );
|
||||||
|
SetFace( attack );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CombinedLifeMeterEnemy::SetFace( Face face )
|
||||||
|
{
|
||||||
|
m_sprFace.SetState( face );
|
||||||
|
m_fSecondsUntilReturnToNormalFace = SECONDS_TO_SHOW_FACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CombinedLifeMeterEnemy::OnTaunt()
|
||||||
|
{
|
||||||
|
SetFace( taunt );
|
||||||
|
}
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
#include "LifeMeter.h"
|
#include "LifeMeter.h"
|
||||||
#include "Sprite.h"
|
#include "Sprite.h"
|
||||||
#include "MeterDisplay.h"
|
|
||||||
|
|
||||||
|
|
||||||
class CombinedLifeMeterEnemy : public CombinedLifeMeter
|
class CombinedLifeMeterEnemy : public CombinedLifeMeter
|
||||||
@@ -33,8 +32,11 @@ public:
|
|||||||
virtual bool IsHot( PlayerNumber pn ) { return false; };
|
virtual bool IsHot( PlayerNumber pn ) { return false; };
|
||||||
virtual bool IsFailing( PlayerNumber pn ) { return false; };
|
virtual bool IsFailing( PlayerNumber pn ) { return false; };
|
||||||
virtual bool FailedEarlier( PlayerNumber pn ) { return false; };
|
virtual bool FailedEarlier( PlayerNumber pn ) { return false; };
|
||||||
|
virtual void OnTaunt();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void SetFace( Face face );
|
||||||
|
|
||||||
Sprite m_sprHealthStream;
|
Sprite m_sprHealthStream;
|
||||||
Sprite m_sprHealthBackground;
|
Sprite m_sprHealthBackground;
|
||||||
float m_fLastSeenHealthPercent;
|
float m_fLastSeenHealthPercent;
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ public:
|
|||||||
virtual bool IsHot( PlayerNumber pn ) = 0;
|
virtual bool IsHot( PlayerNumber pn ) = 0;
|
||||||
virtual bool IsFailing( PlayerNumber pn ) = 0;
|
virtual bool IsFailing( PlayerNumber pn ) = 0;
|
||||||
virtual bool FailedEarlier( PlayerNumber pn ) = 0;
|
virtual bool FailedEarlier( PlayerNumber pn ) = 0;
|
||||||
|
virtual void OnTaunt() {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1130,6 +1130,8 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
if( OneIsHot() ) m_announcerHot.PlayRandom();
|
if( OneIsHot() ) m_announcerHot.PlayRandom();
|
||||||
else if( AllAreInDanger() ) m_announcerDanger.PlayRandom();
|
else if( AllAreInDanger() ) m_announcerDanger.PlayRandom();
|
||||||
else m_announcerGood.PlayRandom();
|
else m_announcerGood.PlayRandom();
|
||||||
|
if( m_pCombinedLifeMeter )
|
||||||
|
m_pCombinedLifeMeter->OnTaunt();
|
||||||
break;
|
break;
|
||||||
case PLAY_MODE_NONSTOP:
|
case PLAY_MODE_NONSTOP:
|
||||||
case PLAY_MODE_ONI:
|
case PLAY_MODE_ONI:
|
||||||
@@ -1146,75 +1148,6 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
|
|
||||||
if( GAMESTATE->m_SongOptions.m_bAssistTick && IsTimeToPlayTicks())
|
if( GAMESTATE->m_SongOptions.m_bAssistTick && IsTimeToPlayTicks())
|
||||||
m_soundAssistTick.Play();
|
m_soundAssistTick.Play();
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// launch enemy attacks to human players
|
|
||||||
//
|
|
||||||
switch( GAMESTATE->m_PlayMode )
|
|
||||||
{
|
|
||||||
case PLAY_MODE_CPU_BATTLE:
|
|
||||||
|
|
||||||
// Don't apply any attacks if the enemy is already defeated
|
|
||||||
if( GAMESTATE->m_fOpponentHealthPercent==0 )
|
|
||||||
break;
|
|
||||||
|
|
||||||
static const CString sPossibleModifiers[NUM_ATTACK_LEVELS][3] =
|
|
||||||
{
|
|
||||||
{
|
|
||||||
"1.5x",
|
|
||||||
"dizzy",
|
|
||||||
"drunk"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"sudden",
|
|
||||||
"hidden",
|
|
||||||
"wave",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"expand",
|
|
||||||
"tornado",
|
|
||||||
"flip"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define CROSSED_SONG_SECONDS( s ) ((GAMESTATE->m_fMusicSeconds-fDeltaTime) < s && (GAMESTATE->m_fMusicSeconds) >= s )
|
|
||||||
|
|
||||||
if( CROSSED_SONG_SECONDS(20) || CROSSED_SONG_SECONDS(40) )
|
|
||||||
{
|
|
||||||
GameState::Attack a;
|
|
||||||
a.fSecsRemaining = 10;
|
|
||||||
a.level = ATTACK_LEVEL_1;
|
|
||||||
a.sModifier = sPossibleModifiers[a.level][rand()%3];
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
if( GAMESTATE->IsHumanPlayer(p) )
|
|
||||||
GAMESTATE->LaunchAttack( (PlayerNumber)p, a );
|
|
||||||
this->HandleScreenMessage( SM_BattleTrickLevel1 );
|
|
||||||
}
|
|
||||||
if( CROSSED_SONG_SECONDS(60) || CROSSED_SONG_SECONDS(80) )
|
|
||||||
{
|
|
||||||
GameState::Attack a;
|
|
||||||
a.fSecsRemaining = 10;
|
|
||||||
a.level = ATTACK_LEVEL_2;
|
|
||||||
a.sModifier = sPossibleModifiers[a.level][rand()%3];
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
if( GAMESTATE->IsHumanPlayer(p) )
|
|
||||||
GAMESTATE->LaunchAttack( (PlayerNumber)p, a );
|
|
||||||
this->HandleScreenMessage( SM_BattleTrickLevel2 );
|
|
||||||
}
|
|
||||||
if( CROSSED_SONG_SECONDS(100) )
|
|
||||||
{
|
|
||||||
GameState::Attack a;
|
|
||||||
a.fSecsRemaining = 10;
|
|
||||||
a.level = ATTACK_LEVEL_3;
|
|
||||||
a.sModifier = sPossibleModifiers[a.level][rand()%3];
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
if( GAMESTATE->IsHumanPlayer(p) )
|
|
||||||
GAMESTATE->LaunchAttack( (PlayerNumber)p, a );
|
|
||||||
this->HandleScreenMessage( SM_BattleTrickLevel3 );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -45,12 +45,12 @@ const ScreenMessage SM_900Combo = ScreenMessage(SM_User+208);
|
|||||||
const ScreenMessage SM_1000Combo = ScreenMessage(SM_User+209);
|
const ScreenMessage SM_1000Combo = ScreenMessage(SM_User+209);
|
||||||
const ScreenMessage SM_ComboStopped = ScreenMessage(SM_User+210);
|
const ScreenMessage SM_ComboStopped = ScreenMessage(SM_User+210);
|
||||||
|
|
||||||
const ScreenMessage SM_BattleTrickLevel1 = ScreenMessage(SM_User+300);
|
const ScreenMessage SM_BattleTrickLevel1 = ScreenMessage(SM_User+301);
|
||||||
const ScreenMessage SM_BattleTrickLevel2 = ScreenMessage(SM_User+301);
|
const ScreenMessage SM_BattleTrickLevel2 = ScreenMessage(SM_User+302);
|
||||||
const ScreenMessage SM_BattleTrickLevel3 = ScreenMessage(SM_User+302);
|
const ScreenMessage SM_BattleTrickLevel3 = ScreenMessage(SM_User+303);
|
||||||
const ScreenMessage SM_BattleDamageLevel1 = ScreenMessage(SM_User+303);
|
const ScreenMessage SM_BattleDamageLevel1 = ScreenMessage(SM_User+304);
|
||||||
const ScreenMessage SM_BattleDamageLevel2 = ScreenMessage(SM_User+304);
|
const ScreenMessage SM_BattleDamageLevel2 = ScreenMessage(SM_User+305);
|
||||||
const ScreenMessage SM_BattleDamageLevel3 = ScreenMessage(SM_User+305);
|
const ScreenMessage SM_BattleDamageLevel3 = ScreenMessage(SM_User+306);
|
||||||
|
|
||||||
class LyricsLoader;
|
class LyricsLoader;
|
||||||
class ScreenGameplay : public Screen
|
class ScreenGameplay : public Screen
|
||||||
|
|||||||
Reference in New Issue
Block a user