new battle layout
This commit is contained in:
@@ -21,3 +21,4 @@ HoldTailAnimationIsNoteColor=0
|
|||||||
StartDrawingHoldBodyOffsetFromHead=0
|
StartDrawingHoldBodyOffsetFromHead=0
|
||||||
StopDrawingHoldBodyOffsetFromTail=-32 // top of tail
|
StopDrawingHoldBodyOffsetFromTail=-32 // top of tail
|
||||||
HoldNGGrayPercent=0.25
|
HoldNGGrayPercent=0.25
|
||||||
|
UseLighting=0
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
#include "global.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: EnemyFace
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "EnemyFace.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
|
#include "GameConstantsAndTypes.h"
|
||||||
|
#include "MusicWheel.h"
|
||||||
|
#include "EnemyFace.h"
|
||||||
|
#include "RageTimer.h"
|
||||||
|
#include <math.h>
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
|
||||||
|
|
||||||
|
const float SECONDS_TO_SHOW_FACE = 1.5f;
|
||||||
|
|
||||||
|
|
||||||
|
EnemyFace::EnemyFace()
|
||||||
|
{
|
||||||
|
Load( THEME->GetPathToG("EnemyFace 2x3") );
|
||||||
|
ASSERT( this->GetNumStates() >= NUM_FACES );
|
||||||
|
StopAnimating();
|
||||||
|
SetFace( normal );
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnemyFace::Update( float fDelta )
|
||||||
|
{
|
||||||
|
if( m_fSecondsUntilReturnToNormal > 0 )
|
||||||
|
{
|
||||||
|
m_fSecondsUntilReturnToNormal -= fDelta;
|
||||||
|
|
||||||
|
if( m_fSecondsUntilReturnToNormal < 0 )
|
||||||
|
{
|
||||||
|
m_fSecondsUntilReturnToNormal = 0;
|
||||||
|
this->SetState( normal );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
|
||||||
|
this->SetState( defeated );
|
||||||
|
|
||||||
|
Sprite::Update( fDelta );
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnemyFace::SetFace( Face face )
|
||||||
|
{
|
||||||
|
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
this->SetState( face );
|
||||||
|
m_fSecondsUntilReturnToNormal = SECONDS_TO_SHOW_FACE;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#ifndef EnemyFace_H
|
||||||
|
#define EnemyFace_H
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: EnemyFace
|
||||||
|
|
||||||
|
Desc: A little graphic to the left of the song's text banner in the MusicWheel.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "Sprite.h"
|
||||||
|
|
||||||
|
|
||||||
|
class EnemyFace : public Sprite
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
EnemyFace();
|
||||||
|
|
||||||
|
virtual void Update( float fDelta );
|
||||||
|
|
||||||
|
enum Face { normal=0, taunt, attack, damage, defeated, NUM_FACES };
|
||||||
|
void SetFace( Face face );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
float m_fSecondsUntilReturnToNormal;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#include "global.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: EnemyHealth
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "EnemyHealth.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
|
||||||
|
|
||||||
|
EnemyHealth::EnemyHealth() :
|
||||||
|
MeterDisplay(
|
||||||
|
THEME->GetPathToG("EnemyHealth stream"),
|
||||||
|
THEME->GetPathToG("EnemyHealth frame"),
|
||||||
|
464 )
|
||||||
|
{
|
||||||
|
m_fLastSeenHealthPercent = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnemyHealth::Update( float fDelta )
|
||||||
|
{
|
||||||
|
if( m_fLastSeenHealthPercent != GAMESTATE->m_fOpponentHealthPercent )
|
||||||
|
{
|
||||||
|
this->SetPercent( GAMESTATE->m_fOpponentHealthPercent );
|
||||||
|
m_fLastSeenHealthPercent = GAMESTATE->m_fOpponentHealthPercent;
|
||||||
|
}
|
||||||
|
|
||||||
|
MeterDisplay::Update( fDelta );
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#ifndef EnemyHealth_H
|
||||||
|
#define EnemyHealth_H
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: EnemyHealth
|
||||||
|
|
||||||
|
Desc: A little graphic to the left of the song's text banner in the MusicWheel.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "MeterDisplay.h"
|
||||||
|
|
||||||
|
|
||||||
|
class EnemyHealth : public MeterDisplay
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
EnemyHealth();
|
||||||
|
|
||||||
|
virtual void Update( float fDelta );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
float m_fLastSeenHealthPercent;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
+15
-31
@@ -122,33 +122,6 @@ void GameState::Update( float fDelta )
|
|||||||
|
|
||||||
if( m_bActiveAttackEndedThisUpdate[p] )
|
if( m_bActiveAttackEndedThisUpdate[p] )
|
||||||
RebuildPlayerOptionsFromActiveAttacks( (PlayerNumber)p );
|
RebuildPlayerOptionsFromActiveAttacks( (PlayerNumber)p );
|
||||||
|
|
||||||
/* if( m_PlayerOptions[p].m_bUseScrollBPM && m_pCurSong )
|
|
||||||
{
|
|
||||||
float fTargetBPM = m_PlayerOptions[p].m_fScrollBPM;
|
|
||||||
float fConstBPS = fTargetBPM/60.f;
|
|
||||||
|
|
||||||
// Optimization opportunity: take fewer samples where the weight is less
|
|
||||||
|
|
||||||
const int iNumBPSSamples = 100;
|
|
||||||
const float fSampleStep = 0.08f; // sample over the next 8 beats
|
|
||||||
float fSumBPS = 0;
|
|
||||||
int iSumWeight = 0;
|
|
||||||
for( int i=0; i<iNumBPSSamples; i++ )
|
|
||||||
{
|
|
||||||
int iWeight = iNumBPSSamples - i;
|
|
||||||
float fBeatsAheadToSample = i*fSampleStep;
|
|
||||||
float fBPS = m_pCurSong->GetBPMAtBeat( m_fSongBeat+fBeatsAheadToSample )/60.f;
|
|
||||||
// Don't allow super low bps values, or else the scroll speed goes crazy at a stop
|
|
||||||
CLAMP( fBPS, 60.f/60.f, 10000 );
|
|
||||||
fSumBPS += fBPS * iWeight;
|
|
||||||
iSumWeight += iWeight;
|
|
||||||
}
|
|
||||||
float fAvgBPS = fSumBPS / iSumWeight;
|
|
||||||
|
|
||||||
m_PlayerOptions[p].m_fScrollSpeed = fConstBPS / fAvgBPS;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,6 +143,8 @@ void GameState::ResetMusicStatistics()
|
|||||||
m_fCurBPS = 10;
|
m_fCurBPS = 10;
|
||||||
m_bFreeze = false;
|
m_bFreeze = false;
|
||||||
m_bPastHereWeGo = false;
|
m_bPastHereWeGo = false;
|
||||||
|
|
||||||
|
m_fOpponentHealthPercent = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameState::UpdateSongPosition(float fPositionSeconds)
|
void GameState::UpdateSongPosition(float fPositionSeconds)
|
||||||
@@ -376,10 +351,18 @@ PlayerNumber GameState::GetWinner()
|
|||||||
|
|
||||||
BattleResult GameState::GetBattleResult( PlayerNumber pn )
|
BattleResult GameState::GetBattleResult( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
PlayerNumber winner = GetWinner();
|
// PlayerNumber winner = GetWinner();
|
||||||
if( winner == PLAYER_INVALID )
|
// if( winner == PLAYER_INVALID )
|
||||||
return RESULT_DRAW;
|
// return RESULT_DRAW;
|
||||||
return (winner==pn) ? RESULT_WIN : RESULT_LOSE;
|
// return (winner==pn) ? RESULT_WIN : RESULT_LOSE;
|
||||||
|
switch( GAMESTATE->m_PlayMode )
|
||||||
|
{
|
||||||
|
case PLAY_MODE_BATTLE:
|
||||||
|
return (m_fOpponentHealthPercent==0)?RESULT_WIN:RESULT_LOSE;
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
return RESULT_WIN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameState::GetFinalEvalStatsAndSongs( StageStats& statsOut, vector<Song*>& vSongsOut )
|
void GameState::GetFinalEvalStatsAndSongs( StageStats& statsOut, vector<Song*>& vSongsOut )
|
||||||
@@ -446,6 +429,7 @@ void GameState::LaunchAttack( PlayerNumber target, Attack a )
|
|||||||
if( m_ActiveAttacks[target][s].fSecsRemaining <= 0 )
|
if( m_ActiveAttacks[target][s].fSecsRemaining <= 0 )
|
||||||
{
|
{
|
||||||
m_ActiveAttacks[target][s] = a;
|
m_ActiveAttacks[target][s] = a;
|
||||||
|
GAMESTATE->RebuildPlayerOptionsFromActiveAttacks( target );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ public:
|
|||||||
|
|
||||||
// used in PLAY_MODE_BATTLE
|
// used in PLAY_MODE_BATTLE
|
||||||
Attack m_Inventory[NUM_PLAYERS][NUM_INVENTORY_SLOTS];
|
Attack m_Inventory[NUM_PLAYERS][NUM_INVENTORY_SLOTS];
|
||||||
|
float m_fOpponentHealthPercent;
|
||||||
|
|
||||||
bool m_bActiveAttackEndedThisUpdate[NUM_PLAYERS]; // flag for other objects to watch (play sounds)
|
bool m_bActiveAttackEndedThisUpdate[NUM_PLAYERS]; // flag for other objects to watch (play sounds)
|
||||||
void LaunchAttack( PlayerNumber target, Attack aa );
|
void LaunchAttack( PlayerNumber target, Attack aa );
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
#include "RageTimer.h"
|
#include "RageTimer.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
#include "song.h"
|
#include "song.h"
|
||||||
|
#include "ScreenManager.h"
|
||||||
|
#include "ScreenGameplay.h"
|
||||||
|
|
||||||
|
|
||||||
#define NUM_ITEM_TYPES THEME->GetMetricF("Inventory","NumItemTypes")
|
#define NUM_ITEM_TYPES THEME->GetMetricF("Inventory","NumItemTypes")
|
||||||
@@ -56,6 +58,13 @@ Inventory::Inventory()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Inventory::~Inventory()
|
||||||
|
{
|
||||||
|
for( unsigned i=0; i<m_vpSoundUseItem.size(); i++ )
|
||||||
|
delete m_vpSoundUseItem[i];
|
||||||
|
m_vpSoundUseItem.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void Inventory::Load( PlayerNumber pn )
|
void Inventory::Load( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
ITEM_USE_RATE_SECONDS.Refresh();
|
ITEM_USE_RATE_SECONDS.Refresh();
|
||||||
@@ -67,13 +76,16 @@ void Inventory::Load( PlayerNumber pn )
|
|||||||
|
|
||||||
// don't load battle sounds if they're not going to be used
|
// don't load battle sounds if they're not going to be used
|
||||||
if( GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE )
|
if( GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE )
|
||||||
{
|
|
||||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
|
||||||
{
|
{
|
||||||
m_soundAcquireItem.Load( THEME->GetPathToS("Inventory aquire item") );
|
m_soundAcquireItem.Load( THEME->GetPathToS("Inventory aquire item") );
|
||||||
m_soundUseItem.Load( THEME->GetPathToS("Inventory use item") );
|
for( unsigned i=0; i<g_Items.size(); i++ )
|
||||||
m_soundItemEnding.Load( THEME->GetPathToS("Inventory item ending") );
|
{
|
||||||
|
RageSound* pSound = new RageSound;
|
||||||
|
CString sPath = THEME->GetPathToS( ssprintf("Inventory use item %u",i+1) );
|
||||||
|
pSound->Load( sPath );
|
||||||
|
m_vpSoundUseItem.push_back( pSound );
|
||||||
}
|
}
|
||||||
|
m_soundItemEnding.Load( THEME->GetPathToS("Inventory item ending") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,10 +184,17 @@ void Inventory::UseItem( int iSlot )
|
|||||||
PlayerNumber pnToAttack = OPPOSITE_PLAYER[m_PlayerNumber];
|
PlayerNumber pnToAttack = OPPOSITE_PLAYER[m_PlayerNumber];
|
||||||
GameState::Attack a = asInventory[iSlot];
|
GameState::Attack a = asInventory[iSlot];
|
||||||
|
|
||||||
GAMESTATE->LaunchAttack( pnToAttack, a );
|
// GAMESTATE->LaunchAttack( pnToAttack, a );
|
||||||
GAMESTATE->RebuildPlayerOptionsFromActiveAttacks( pnToAttack );
|
// GAMESTATE->RebuildPlayerOptionsFromActiveAttacks( pnToAttack );
|
||||||
|
|
||||||
|
float fPercentHealthToDrain = (a.level+1) / 10.f;
|
||||||
|
ASSERT( fPercentHealthToDrain > 0 );
|
||||||
|
GAMESTATE->m_fOpponentHealthPercent -= fPercentHealthToDrain;
|
||||||
|
CLAMP( GAMESTATE->m_fOpponentHealthPercent, 0.f, 1.f );
|
||||||
|
|
||||||
// remove the item
|
// remove the item
|
||||||
asInventory[iSlot].MakeBlank();
|
asInventory[iSlot].MakeBlank();
|
||||||
m_soundUseItem.Play();
|
m_vpSoundUseItem[a.level]->Play();
|
||||||
|
|
||||||
|
SCREENMAN->SendMessageToTopScreen( (ScreenMessage)(SM_BattleDamageLevel1+a.level) );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ class Inventory : public Actor
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Inventory();
|
Inventory();
|
||||||
|
~Inventory();
|
||||||
void Load( PlayerNumber pn );
|
void Load( PlayerNumber pn );
|
||||||
|
|
||||||
virtual void Update( float fDelta );
|
virtual void Update( float fDelta );
|
||||||
@@ -34,7 +35,7 @@ protected:
|
|||||||
int m_iLastSeenCombo;
|
int m_iLastSeenCombo;
|
||||||
|
|
||||||
RageSound m_soundAcquireItem;
|
RageSound m_soundAcquireItem;
|
||||||
RageSound m_soundUseItem;
|
vector<RageSound*> m_vpSoundUseItem;
|
||||||
RageSound m_soundItemEnding;
|
RageSound m_soundItemEnding;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
#include "global.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
File: MeterDisplay.h
|
||||||
|
|
||||||
|
Desc: The song's MeterDisplay displayed in SelectSong.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "MeterDisplay.h"
|
||||||
|
|
||||||
|
|
||||||
|
MeterDisplay::MeterDisplay(
|
||||||
|
CString sSteamPath,
|
||||||
|
CString sFramePath,
|
||||||
|
float fStreamWidth )
|
||||||
|
{
|
||||||
|
m_fStreamWidth = fStreamWidth;
|
||||||
|
|
||||||
|
m_sprStream.Load( sSteamPath );
|
||||||
|
m_sprStream.SetZoomX( fStreamWidth / m_sprStream.GetUnzoomedWidth() );
|
||||||
|
|
||||||
|
m_quad.SetZoomY( m_sprStream.GetUnzoomedHeight() );
|
||||||
|
m_quad.SetX( m_fStreamWidth/2 );
|
||||||
|
m_quad.SetHorizAlign( Actor::align_right );
|
||||||
|
m_quad.SetDiffuse( RageColor(0,0,0,1) );
|
||||||
|
|
||||||
|
m_sprFrame.Load( sFramePath );
|
||||||
|
|
||||||
|
m_fTrailingPercent = 0;
|
||||||
|
|
||||||
|
SetPercent( 0.5f );
|
||||||
|
}
|
||||||
|
|
||||||
|
MeterDisplay::~MeterDisplay()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeterDisplay::Update( float fDelta )
|
||||||
|
{
|
||||||
|
fapproach( m_fTrailingPercent, m_fPercent, 0.2f*fDelta );
|
||||||
|
m_quad.SetZoomX( m_fStreamWidth * (1-m_fTrailingPercent) );
|
||||||
|
|
||||||
|
m_sprStream.Update( fDelta );
|
||||||
|
m_quad.Update( fDelta );
|
||||||
|
m_sprFrame.Update( fDelta );
|
||||||
|
|
||||||
|
Actor::Update( fDelta );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeterDisplay::DrawPrimitives()
|
||||||
|
{
|
||||||
|
m_sprStream.Draw();
|
||||||
|
m_quad.Draw();
|
||||||
|
m_sprFrame.Draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeterDisplay::SetPercent( float fPercent )
|
||||||
|
{
|
||||||
|
ASSERT( fPercent >= 0 && fPercent <= 1 );
|
||||||
|
|
||||||
|
m_fPercent = fPercent;
|
||||||
|
|
||||||
|
m_sprFrame.Command( "glow,1,1,1,1;linear,0.5;glow,1,1,1,0" );
|
||||||
|
m_sprStream.Command( "glow,1,1,1,1;linear,0.5;glow,1,1,1,0" );
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#ifndef MeterDisplay_H
|
||||||
|
#define MeterDisplay_H
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
File: MeterDisplay.h
|
||||||
|
|
||||||
|
Desc:
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Actor.h"
|
||||||
|
#include "Sprite.h"
|
||||||
|
#include "Quad.h"
|
||||||
|
|
||||||
|
|
||||||
|
class MeterDisplay : public Actor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MeterDisplay(
|
||||||
|
CString sSteamPath,
|
||||||
|
CString sFramePath,
|
||||||
|
float fStreamWidth );
|
||||||
|
virtual ~MeterDisplay();
|
||||||
|
virtual void Update( float fDelta );
|
||||||
|
virtual void DrawPrimitives();
|
||||||
|
|
||||||
|
void SetPercent( float fPercent );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
float m_fStreamWidth;
|
||||||
|
float m_fPercent;
|
||||||
|
float m_fTrailingPercent;
|
||||||
|
Sprite m_sprStream;
|
||||||
|
Quad m_quad;
|
||||||
|
Sprite m_sprFrame;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -65,6 +65,7 @@ Actor* MakeModelOrSprite( CString sFile )
|
|||||||
#define START_DRAWING_HOLD_BODY_OFFSET_FROM_HEAD NOTESKIN->GetMetricI(pn,name,"StartDrawingHoldBodyOffsetFromHead")
|
#define START_DRAWING_HOLD_BODY_OFFSET_FROM_HEAD NOTESKIN->GetMetricI(pn,name,"StartDrawingHoldBodyOffsetFromHead")
|
||||||
#define STOP_DRAWING_HOLD_BODY_OFFSET_FROM_TAIL NOTESKIN->GetMetricI(pn,name,"StopDrawingHoldBodyOffsetFromTail")
|
#define STOP_DRAWING_HOLD_BODY_OFFSET_FROM_TAIL NOTESKIN->GetMetricI(pn,name,"StopDrawingHoldBodyOffsetFromTail")
|
||||||
#define HOLD_NG_GRAY_PERCENT NOTESKIN->GetMetricF(pn,name,"HoldNGGrayPercent")
|
#define HOLD_NG_GRAY_PERCENT NOTESKIN->GetMetricF(pn,name,"HoldNGGrayPercent")
|
||||||
|
#define USE_LIGHTING NOTESKIN->GetMetricB(pn,name,"UseLighting")
|
||||||
|
|
||||||
// cache
|
// cache
|
||||||
struct NoteMetricCache_t {
|
struct NoteMetricCache_t {
|
||||||
@@ -90,6 +91,7 @@ struct NoteMetricCache_t {
|
|||||||
int m_iStartDrawingHoldBodyOffsetFromHead;
|
int m_iStartDrawingHoldBodyOffsetFromHead;
|
||||||
int m_iStopDrawingHoldBodyOffsetFromTail;
|
int m_iStopDrawingHoldBodyOffsetFromTail;
|
||||||
float m_fHoldNGGrayPercent;
|
float m_fHoldNGGrayPercent;
|
||||||
|
bool m_bUseLighting;
|
||||||
|
|
||||||
void Load(PlayerNumber pn, const CString &name);
|
void Load(PlayerNumber pn, const CString &name);
|
||||||
} *NoteMetricCache;
|
} *NoteMetricCache;
|
||||||
@@ -118,6 +120,7 @@ void NoteMetricCache_t::Load(PlayerNumber pn, const CString &name)
|
|||||||
m_iStartDrawingHoldBodyOffsetFromHead = START_DRAWING_HOLD_BODY_OFFSET_FROM_HEAD;
|
m_iStartDrawingHoldBodyOffsetFromHead = START_DRAWING_HOLD_BODY_OFFSET_FROM_HEAD;
|
||||||
m_iStopDrawingHoldBodyOffsetFromTail = STOP_DRAWING_HOLD_BODY_OFFSET_FROM_TAIL;
|
m_iStopDrawingHoldBodyOffsetFromTail = STOP_DRAWING_HOLD_BODY_OFFSET_FROM_TAIL;
|
||||||
m_fHoldNGGrayPercent = HOLD_NG_GRAY_PERCENT;
|
m_fHoldNGGrayPercent = HOLD_NG_GRAY_PERCENT;
|
||||||
|
m_bUseLighting = USE_LIGHTING;
|
||||||
}
|
}
|
||||||
|
|
||||||
NoteDisplay::NoteDisplay()
|
NoteDisplay::NoteDisplay()
|
||||||
@@ -700,7 +703,8 @@ void NoteDisplay::DrawTap( const int iCol, const float fBeat, const bool bOnSame
|
|||||||
pActor->SetDiffuse( diffuse );
|
pActor->SetDiffuse( diffuse );
|
||||||
pActor->SetGlow( glow );
|
pActor->SetGlow( glow );
|
||||||
|
|
||||||
|
if( cache->m_bUseLighting )
|
||||||
|
{
|
||||||
DISPLAY->EnableLighting( true );
|
DISPLAY->EnableLighting( true );
|
||||||
DISPLAY->SetLightDirectional(
|
DISPLAY->SetLightDirectional(
|
||||||
0,
|
0,
|
||||||
@@ -708,11 +712,15 @@ void NoteDisplay::DrawTap( const int iCol, const float fBeat, const bool bOnSame
|
|||||||
RageColor(1,1,1,1),
|
RageColor(1,1,1,1),
|
||||||
RageColor(1,1,1,1),
|
RageColor(1,1,1,1),
|
||||||
RageVector3(1, 0, +1) );
|
RageVector3(1, 0, +1) );
|
||||||
|
}
|
||||||
|
|
||||||
pActor->Draw();
|
pActor->Draw();
|
||||||
|
|
||||||
|
if( cache->m_bUseLighting )
|
||||||
|
{
|
||||||
DISPLAY->SetLightOff( 0 );
|
DISPLAY->SetLightOff( 0 );
|
||||||
DISPLAY->EnableLighting( false );
|
DISPLAY->EnableLighting( false );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ bool RageSound::Load(CString sSoundFilePath, int precache)
|
|||||||
|
|
||||||
SoundReader_SDL_Sound *NewSample = new SoundReader_SDL_Sound;
|
SoundReader_SDL_Sound *NewSample = new SoundReader_SDL_Sound;
|
||||||
if(!NewSample->Open(sSoundFilePath.c_str()))
|
if(!NewSample->Open(sSoundFilePath.c_str()))
|
||||||
RageException::Throw( "RageSoundManager::RageSoundManager: error opening sound %s: %s",
|
RageException::Throw( "RageSoundManager::RageSoundManager: error opening sound '%s': '%s'",
|
||||||
sSoundFilePath.c_str(), NewSample->GetError().c_str());
|
sSoundFilePath.c_str(), NewSample->GetError().c_str());
|
||||||
Sample = NewSample;
|
Sample = NewSample;
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ bool RandomSample::LoadSoundDir( CString sDir, int iMaxToLoad )
|
|||||||
GetDirListing( sDir + "*.ogg", arraySoundFiles );
|
GetDirListing( sDir + "*.ogg", arraySoundFiles );
|
||||||
GetDirListing( sDir + "*.wav", arraySoundFiles );
|
GetDirListing( sDir + "*.wav", arraySoundFiles );
|
||||||
|
|
||||||
|
random_shuffle( arraySoundFiles.begin(), arraySoundFiles.end() );
|
||||||
arraySoundFiles.resize( min( arraySoundFiles.size(), (unsigned)iMaxToLoad ) );
|
arraySoundFiles.resize( min( arraySoundFiles.size(), (unsigned)iMaxToLoad ) );
|
||||||
|
|
||||||
for( unsigned i=0; i<arraySoundFiles.size(); i++ )
|
for( unsigned i=0; i<arraySoundFiles.size(); i++ )
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ void RaveHelper::LaunchAttack( AttackLevel al )
|
|||||||
a.sModifier = sAttackToGive;
|
a.sModifier = sAttackToGive;
|
||||||
|
|
||||||
GAMESTATE->LaunchAttack( pnToAttack, a );
|
GAMESTATE->LaunchAttack( pnToAttack, a );
|
||||||
GAMESTATE->RebuildPlayerOptionsFromActiveAttacks( pnToAttack );
|
|
||||||
|
|
||||||
m_soundLaunchAttack.Play();
|
m_soundLaunchAttack.Play();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ const CreditLine CREDIT_LINES[] =
|
|||||||
{0,"Mauro Panichella"},
|
{0,"Mauro Panichella"},
|
||||||
{0,"Griever (Julian)"},
|
{0,"Griever (Julian)"},
|
||||||
{0,"Miguel Moore"},
|
{0,"Miguel Moore"},
|
||||||
|
{0,"Dj 'AeON ExOdus' Washington"},
|
||||||
{0,""},
|
{0,""},
|
||||||
{0,""},
|
{0,""},
|
||||||
{0,""},
|
{0,""},
|
||||||
|
|||||||
@@ -664,8 +664,22 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) : Screen(sCl
|
|||||||
switch( m_Type )
|
switch( m_Type )
|
||||||
{
|
{
|
||||||
case stage:
|
case stage:
|
||||||
|
switch( GAMESTATE->m_PlayMode )
|
||||||
|
{
|
||||||
|
case PLAY_MODE_BATTLE:
|
||||||
|
{
|
||||||
|
bool bWon = GAMESTATE->GetBattleResult(GAMESTATE->m_MasterPlayerNumber) == RESULT_WIN;
|
||||||
|
if( bWon )
|
||||||
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation win") );
|
||||||
|
else
|
||||||
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation lose") );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToString(max_grade)) );
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToString(max_grade)) );
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case course:
|
case course:
|
||||||
case summary:
|
case summary:
|
||||||
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToString(max_grade)) );
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToString(max_grade)) );
|
||||||
|
|||||||
@@ -37,7 +37,8 @@
|
|||||||
#include "ActorUtil.h"
|
#include "ActorUtil.h"
|
||||||
#include "NoteSkinManager.h"
|
#include "NoteSkinManager.h"
|
||||||
#include "RageTextureManager.h"
|
#include "RageTextureManager.h"
|
||||||
|
#include "EnemyHealth.h"
|
||||||
|
#include "EnemyFace.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Defines
|
// Defines
|
||||||
@@ -242,6 +243,19 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay")
|
|||||||
this->AddChild( &m_sprOniGameOver[p] );
|
this->AddChild( &m_sprOniGameOver[p] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE )
|
||||||
|
{
|
||||||
|
m_pEnemyFace = new EnemyFace;
|
||||||
|
m_pEnemyFace->SetName( "EnemyFace" );
|
||||||
|
this->AddChild( m_pEnemyFace );
|
||||||
|
SET_XY( *m_pEnemyFace );
|
||||||
|
|
||||||
|
m_pEnemyHealth = new EnemyHealth;
|
||||||
|
m_pEnemyHealth->SetName( "EnemyHealth" );
|
||||||
|
this->AddChild( m_pEnemyHealth );
|
||||||
|
SET_XY( *m_pEnemyHealth );
|
||||||
|
}
|
||||||
|
|
||||||
this->AddChild(&m_TimingAssist);
|
this->AddChild(&m_TimingAssist);
|
||||||
|
|
||||||
this->AddChild( &m_NextSongIn );
|
this->AddChild( &m_NextSongIn );
|
||||||
@@ -530,6 +544,19 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay")
|
|||||||
m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") );
|
m_announcer1000Combo.Load( ANNOUNCER->GetPathTo("gameplay 1000 combo") );
|
||||||
m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") );
|
m_announcerComboStopped.Load( ANNOUNCER->GetPathTo("gameplay combo stopped") );
|
||||||
m_soundAssistTick.Load( THEME->GetPathToS("ScreenGameplay assist tick") );
|
m_soundAssistTick.Load( THEME->GetPathToS("ScreenGameplay assist tick") );
|
||||||
|
|
||||||
|
if( GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE )
|
||||||
|
{
|
||||||
|
m_announcerBattleTrickLevel1.Load( ANNOUNCER->GetPathTo("gameplay battle trick level1") );
|
||||||
|
m_announcerBattleTrickLevel2.Load( ANNOUNCER->GetPathTo("gameplay battle trick level2") );
|
||||||
|
m_announcerBattleTrickLevel3.Load( ANNOUNCER->GetPathTo("gameplay battle trick level3") );
|
||||||
|
m_soundBattleTrickLevel1.Load( THEME->GetPathToS("ScreenGameplay battle trick level1") );
|
||||||
|
m_soundBattleTrickLevel2.Load( THEME->GetPathToS("ScreenGameplay battle trick level2") );
|
||||||
|
m_soundBattleTrickLevel3.Load( THEME->GetPathToS("ScreenGameplay battle trick level3") );
|
||||||
|
m_announcerBattleDamageLevel1.Load( ANNOUNCER->GetPathTo("gameplay battle damage level1") );
|
||||||
|
m_announcerBattleDamageLevel2.Load( ANNOUNCER->GetPathTo("gameplay battle damage level2") );
|
||||||
|
m_announcerBattleDamageLevel3.Load( ANNOUNCER->GetPathTo("gameplay battle damage level3") );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the transitions rolling on the first update.
|
// Get the transitions rolling on the first update.
|
||||||
@@ -548,6 +575,9 @@ ScreenGameplay::~ScreenGameplay()
|
|||||||
SAFE_DELETE( m_pScoreKeeper[p] );
|
SAFE_DELETE( m_pScoreKeeper[p] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete m_pEnemyHealth;
|
||||||
|
delete m_pEnemyFace;
|
||||||
|
|
||||||
m_soundMusic.StopPlaying();
|
m_soundMusic.StopPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -956,6 +986,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_pEnemyFace )
|
||||||
|
m_pEnemyFace->SetFace( EnemyFace::taunt );
|
||||||
break;
|
break;
|
||||||
case PLAY_MODE_NONSTOP:
|
case PLAY_MODE_NONSTOP:
|
||||||
case PLAY_MODE_ONI:
|
case PLAY_MODE_ONI:
|
||||||
@@ -994,6 +1026,67 @@ 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 battle attacks
|
||||||
|
|
||||||
|
if( GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE )
|
||||||
|
{
|
||||||
|
#define CROSSED_SONG_SECONDS( s ) ((GAMESTATE->m_fMusicSeconds-fDeltaTime) < s && (GAMESTATE->m_fMusicSeconds) >= s )
|
||||||
|
|
||||||
|
static const CString sPossibleModifiers[NUM_ATTACK_LEVELS][3] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"1.5x",
|
||||||
|
"dizzy",
|
||||||
|
"drunk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sudden",
|
||||||
|
"hidden",
|
||||||
|
"wave",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"expand",
|
||||||
|
"tornado",
|
||||||
|
"flip"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
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->IsPlayerEnabled(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->IsPlayerEnabled(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->IsPlayerEnabled(p) )
|
||||||
|
GAMESTATE->LaunchAttack( (PlayerNumber)p, a );
|
||||||
|
this->HandleScreenMessage( SM_BattleTrickLevel3 );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1408,84 +1501,138 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
m_Toasty.StartTransitioning();
|
m_Toasty.StartTransitioning();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#define SECS_SINCE_LAST_COMMENT (SECONDS_BETWEEN_COMMENTS-m_fTimeLeftBeforeDancingComment)
|
||||||
case SM_100Combo:
|
case SM_100Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer100Combo.PlayRandom();
|
m_announcer100Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_200Combo:
|
case SM_200Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer200Combo.PlayRandom();
|
m_announcer200Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_300Combo:
|
case SM_300Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer300Combo.PlayRandom();
|
m_announcer300Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_400Combo:
|
case SM_400Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer400Combo.PlayRandom();
|
m_announcer400Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_500Combo:
|
case SM_500Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer500Combo.PlayRandom();
|
m_announcer500Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_600Combo:
|
case SM_600Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer600Combo.PlayRandom();
|
m_announcer600Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_700Combo:
|
case SM_700Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer700Combo.PlayRandom();
|
m_announcer700Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_800Combo:
|
case SM_800Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer800Combo.PlayRandom();
|
m_announcer800Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_900Combo:
|
case SM_900Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer900Combo.PlayRandom();
|
m_announcer900Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_1000Combo:
|
case SM_1000Combo:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcer1000Combo.PlayRandom();
|
m_announcer1000Combo.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SM_ComboStopped:
|
case SM_ComboStopped:
|
||||||
if( m_fTimeLeftBeforeDancingComment < 12 )
|
if( SECS_SINCE_LAST_COMMENT > 10 )
|
||||||
{
|
{
|
||||||
m_announcerComboStopped.PlayRandom();
|
m_announcerComboStopped.PlayRandom();
|
||||||
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SM_BattleTrickLevel1:
|
||||||
|
if( SECS_SINCE_LAST_COMMENT > 5 )
|
||||||
|
{
|
||||||
|
m_announcerBattleTrickLevel1.PlayRandom();
|
||||||
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
|
}
|
||||||
|
m_soundBattleTrickLevel1.PlayRandom();
|
||||||
|
m_pEnemyFace->SetFace( EnemyFace::attack );
|
||||||
|
break;
|
||||||
|
case SM_BattleTrickLevel2:
|
||||||
|
if( SECS_SINCE_LAST_COMMENT > 5 )
|
||||||
|
{
|
||||||
|
m_announcerBattleTrickLevel2.PlayRandom();
|
||||||
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
|
}
|
||||||
|
m_soundBattleTrickLevel2.PlayRandom();
|
||||||
|
m_pEnemyFace->SetFace( EnemyFace::attack );
|
||||||
|
break;
|
||||||
|
case SM_BattleTrickLevel3:
|
||||||
|
if( SECS_SINCE_LAST_COMMENT > 5 )
|
||||||
|
{
|
||||||
|
m_announcerBattleTrickLevel3.PlayRandom();
|
||||||
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
|
}
|
||||||
|
m_soundBattleTrickLevel3.PlayRandom();
|
||||||
|
m_pEnemyFace->SetFace( EnemyFace::attack );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SM_BattleDamageLevel1:
|
||||||
|
if( SECS_SINCE_LAST_COMMENT > 5 )
|
||||||
|
{
|
||||||
|
m_announcerBattleDamageLevel1.PlayRandom();
|
||||||
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
|
}
|
||||||
|
m_pEnemyFace->SetFace( EnemyFace::damage );
|
||||||
|
break;
|
||||||
|
case SM_BattleDamageLevel2:
|
||||||
|
if( SECS_SINCE_LAST_COMMENT > 5 )
|
||||||
|
{
|
||||||
|
m_announcerBattleDamageLevel2.PlayRandom();
|
||||||
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
|
}
|
||||||
|
m_pEnemyFace->SetFace( EnemyFace::damage );
|
||||||
|
break;
|
||||||
|
case SM_BattleDamageLevel3:
|
||||||
|
if( SECS_SINCE_LAST_COMMENT > 5 )
|
||||||
|
{
|
||||||
|
m_announcerBattleDamageLevel3.PlayRandom();
|
||||||
|
m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS;
|
||||||
|
}
|
||||||
|
m_pEnemyFace->SetFace( EnemyFace::damage );
|
||||||
|
break;
|
||||||
|
|
||||||
case SM_SaveChangedBeforeGoingBack:
|
case SM_SaveChangedBeforeGoingBack:
|
||||||
if( m_bChangedOffsetOrBPM )
|
if( m_bChangedOffsetOrBPM )
|
||||||
{
|
{
|
||||||
@@ -1595,6 +1742,10 @@ void ScreenGameplay::TweenOnScreen()
|
|||||||
ON_COMMAND( m_textPlayerOptions[p] );
|
ON_COMMAND( m_textPlayerOptions[p] );
|
||||||
ON_COMMAND( m_DifficultyIcon[p] );
|
ON_COMMAND( m_DifficultyIcon[p] );
|
||||||
}
|
}
|
||||||
|
if( m_pEnemyFace )
|
||||||
|
ON_COMMAND( *m_pEnemyFace );
|
||||||
|
if( m_pEnemyHealth )
|
||||||
|
ON_COMMAND( *m_pEnemyHealth );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenGameplay::TweenOffScreen()
|
void ScreenGameplay::TweenOffScreen()
|
||||||
@@ -1613,6 +1764,10 @@ void ScreenGameplay::TweenOffScreen()
|
|||||||
OFF_COMMAND( m_textPlayerOptions[p] );
|
OFF_COMMAND( m_textPlayerOptions[p] );
|
||||||
OFF_COMMAND( m_DifficultyIcon[p] );
|
OFF_COMMAND( m_DifficultyIcon[p] );
|
||||||
}
|
}
|
||||||
|
if( m_pEnemyFace )
|
||||||
|
OFF_COMMAND( *m_pEnemyFace );
|
||||||
|
if( m_pEnemyHealth )
|
||||||
|
OFF_COMMAND( *m_pEnemyHealth );
|
||||||
|
|
||||||
if(m_textDebug.GetTweenTimeLeft() > 1/8.f)
|
if(m_textDebug.GetTweenTimeLeft() > 1/8.f)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
//#include "BeginnerHelper.h" // uncomment once it's checked in
|
//#include "BeginnerHelper.h" // uncomment once it's checked in
|
||||||
#include "LyricDisplay.h"
|
#include "LyricDisplay.h"
|
||||||
#include "TimingAssist.h"
|
#include "TimingAssist.h"
|
||||||
|
class EnemyHealth;
|
||||||
|
class EnemyFace;
|
||||||
|
|
||||||
|
|
||||||
// messages sent by Combo
|
// messages sent by Combo
|
||||||
@@ -47,6 +49,13 @@ 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_BattleTrickLevel2 = ScreenMessage(SM_User+301);
|
||||||
|
const ScreenMessage SM_BattleTrickLevel3 = ScreenMessage(SM_User+302);
|
||||||
|
const ScreenMessage SM_BattleDamageLevel1 = ScreenMessage(SM_User+303);
|
||||||
|
const ScreenMessage SM_BattleDamageLevel2 = ScreenMessage(SM_User+304);
|
||||||
|
const ScreenMessage SM_BattleDamageLevel3 = ScreenMessage(SM_User+305);
|
||||||
|
|
||||||
class LyricsLoader;
|
class LyricsLoader;
|
||||||
class ScreenGameplay : public Screen
|
class ScreenGameplay : public Screen
|
||||||
{
|
{
|
||||||
@@ -139,6 +148,8 @@ protected:
|
|||||||
// used in PLAY_MODE_BATTLE
|
// used in PLAY_MODE_BATTLE
|
||||||
Inventory m_Inventory[NUM_PLAYERS];
|
Inventory m_Inventory[NUM_PLAYERS];
|
||||||
ActiveItemList m_ActiveItemList[NUM_PLAYERS];
|
ActiveItemList m_ActiveItemList[NUM_PLAYERS];
|
||||||
|
EnemyHealth* m_pEnemyHealth;
|
||||||
|
EnemyFace* m_pEnemyFace;
|
||||||
|
|
||||||
// used in PLAY_MODE_RAVE
|
// used in PLAY_MODE_RAVE
|
||||||
RaveHelper m_RaveHelper[NUM_PLAYERS];
|
RaveHelper m_RaveHelper[NUM_PLAYERS];
|
||||||
@@ -169,6 +180,15 @@ protected:
|
|||||||
RandomSample m_announcer900Combo;
|
RandomSample m_announcer900Combo;
|
||||||
RandomSample m_announcer1000Combo;
|
RandomSample m_announcer1000Combo;
|
||||||
RandomSample m_announcerComboStopped;
|
RandomSample m_announcerComboStopped;
|
||||||
|
RandomSample m_announcerBattleTrickLevel1;
|
||||||
|
RandomSample m_announcerBattleTrickLevel2;
|
||||||
|
RandomSample m_announcerBattleTrickLevel3;
|
||||||
|
RandomSample m_soundBattleTrickLevel1;
|
||||||
|
RandomSample m_soundBattleTrickLevel2;
|
||||||
|
RandomSample m_soundBattleTrickLevel3;
|
||||||
|
RandomSample m_announcerBattleDamageLevel1;
|
||||||
|
RandomSample m_announcerBattleDamageLevel2;
|
||||||
|
RandomSample m_announcerBattleDamageLevel3;
|
||||||
|
|
||||||
bool m_bZeroDeltaOnNextUpdate;
|
bool m_bZeroDeltaOnNextUpdate;
|
||||||
bool m_bDemonstration;
|
bool m_bDemonstration;
|
||||||
|
|||||||
@@ -1096,6 +1096,14 @@ SOURCE=.\FadingBanner.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\MeterDisplay.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\MeterDisplay.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\Transition.cpp
|
SOURCE=.\Transition.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -1148,6 +1156,22 @@ SOURCE=.\DancingCharacters.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\EnemyFace.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\EnemyFace.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\EnemyHealth.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\EnemyHealth.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\GhostArrow.cpp
|
SOURCE=.\GhostArrow.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|||||||
Reference in New Issue
Block a user