diff --git a/stepmania/Themes/default/Graphics/CombinedLifeMeterTug frame.png b/stepmania/Themes/default/Graphics/CombinedLifeMeterTug frame.png new file mode 100644 index 0000000000..18503f1675 Binary files /dev/null and b/stepmania/Themes/default/Graphics/CombinedLifeMeterTug frame.png differ diff --git a/stepmania/Themes/default/Graphics/CombinedLifeMeterTug stream p1.png b/stepmania/Themes/default/Graphics/CombinedLifeMeterTug stream p1.png new file mode 100644 index 0000000000..f1477ca235 Binary files /dev/null and b/stepmania/Themes/default/Graphics/CombinedLifeMeterTug stream p1.png differ diff --git a/stepmania/Themes/default/Graphics/CombinedLifeMeterTug stream p2.png b/stepmania/Themes/default/Graphics/CombinedLifeMeterTug stream p2.png new file mode 100644 index 0000000000..478b4cc3aa Binary files /dev/null and b/stepmania/Themes/default/Graphics/CombinedLifeMeterTug stream p2.png differ diff --git a/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level1.png b/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level1.png new file mode 100644 index 0000000000..f1477ca235 Binary files /dev/null and b/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level1.png differ diff --git a/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level2.png b/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level2.png new file mode 100644 index 0000000000..67832eab60 Binary files /dev/null and b/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level2.png differ diff --git a/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level3.png b/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level3.png new file mode 100644 index 0000000000..478b4cc3aa Binary files /dev/null and b/stepmania/Themes/default/Graphics/ScoreDisplayRave stream level3.png differ diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 50aecc1b62..0eb86939de 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -223,8 +223,7 @@ NextScreen=ScreenSelectGroup HelpText= [ScreenSelectDifficulty] -Choices=arcade-beginner,arcade-easy,arcade-medium,arcade-hard,nonstop,oni,endless -#,rave +Choices=arcade-beginner,arcade-easy,arcade-medium,arcade-hard,nonstop,oni,endless,rave NumChoicesOnPage1=4 HelpText=Use &LEFT; &RIGHT; to select, then press START TimerSeconds=40 @@ -774,6 +773,10 @@ LifeP2ExtraX=500 LifeP2ExtraY=450 LifeP2ExtraOnCommand=addy,100;sleep,0.5;linear,1;addy,-100 LifeP2ExtraOffCommand=linear,1;addy,100 +CombinedLifeX=320 +CombinedLifeY=28 +CombinedLifeOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 +CombinedLifeOffCommand=linear,1;addy,-100 StageX=320 StageY=54 StageOnCommand=addy,-100;sleep,0.5;linear,1;addy,100 @@ -1801,9 +1804,8 @@ BannerHeight=184 InCommand=diffusealpha,0;zoomy,0;spring,0.20;zoomy,1;diffusealpha,1 OutCommand=linear,0.20;zoomy,0;diffusealpha,1 -[RaveHelper] -NumItemTypes=0 -AttackDurationSeconds=0 +[ScoreKeeperRave] +AttackDurationSeconds=5 [ScreenInputOptions] HelpText=&UP; &DOWN; to change line &LEFT; &RIGHT; to select between options::START to accept changes BACK to discard changes diff --git a/stepmania/src/Character.h b/stepmania/src/Character.h index 3d70d09fe1..070e8f0ed6 100644 --- a/stepmania/src/Character.h +++ b/stepmania/src/Character.h @@ -32,7 +32,15 @@ public: CString m_sCharDir; CString m_sName; + + // All the stuff below will be filled in if this character is playable in Rave mode + bool m_bUsableInRave; + CString m_sAttacks[NUM_ATTACK_LEVELS][NUM_ATTACKS_PER_LEVEL]; + + CString GetNormalHeadPath(); + CString GetHappyHeadPath(); + CString GetAngryHeadPath(); }; diff --git a/stepmania/src/CombinedLifeMeterEnemy.cpp b/stepmania/src/CombinedLifeMeterEnemy.cpp new file mode 100644 index 0000000000..1d2e56782d --- /dev/null +++ b/stepmania/src/CombinedLifeMeterEnemy.cpp @@ -0,0 +1,79 @@ +#include "global.h" +/* +----------------------------------------------------------------------------- + Class: CombinedLifeMeterEnemy + + Desc: See header. + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford +----------------------------------------------------------------------------- +*/ + +#include "CombinedLifeMeterEnemy.h" +#include "RageUtil.h" +#include "GameConstantsAndTypes.h" +#include "MusicWheel.h" +#include "CombinedLifeMeterEnemy.h" +#include "RageTimer.h" +#include +#include "ThemeManager.h" +#include "GameState.h" +#include "CombinedLifeMeterEnemy.h" +#include "ThemeManager.h" +#include "GameState.h" + + +const float SECONDS_TO_SHOW_FACE = 1.5f; + + +CombinedLifeMeterEnemy::CombinedLifeMeterEnemy() +{ + m_sprFace.Load( THEME->GetPathToG("CombinedLifeMeterEnemy face 2x3") ); + ASSERT( m_sprFace.GetNumStates() >= NUM_FACES ); + m_sprFace.StopAnimating(); + + m_meterHealth.Load( THEME->GetPathToG("CombinedLifeMeterEnemy stream"), 464 ); + m_fLastSeenHealthPercent = -1; + +} + +void CombinedLifeMeterEnemy::Update( float fDelta ) +{ + if( m_fSecondsUntilReturnToNormalFace > 0 ) + { + m_fSecondsUntilReturnToNormalFace -= fDelta; + + if( m_fSecondsUntilReturnToNormalFace < 0 ) + { + m_fSecondsUntilReturnToNormalFace = 0; + this->SetState( normal ); + } + } + + if( GAMESTATE->m_fOpponentHealthPercent == 0 ) + this->SetState( defeated ); + + m_sprFace.Update( fDelta ); + + if( m_fLastSeenHealthPercent != GAMESTATE->m_fOpponentHealthPercent ) + { + m_meterHealth.SetPercent( GAMESTATE->m_fOpponentHealthPercent ); + m_fLastSeenHealthPercent = GAMESTATE->m_fOpponentHealthPercent; + } + + + /* + SetFace( Face face ) + + if( GAMESTATE->m_fOpponentHealthPercent == 0 ) + return; + + this->SetState( face ); + m_fSecondsUntilReturnToNormalFace = SECONDS_TO_SHOW_FACE; + */ +} + + + + diff --git a/stepmania/src/CombinedLifeMeterEnemy.h b/stepmania/src/CombinedLifeMeterEnemy.h new file mode 100644 index 0000000000..708545acd9 --- /dev/null +++ b/stepmania/src/CombinedLifeMeterEnemy.h @@ -0,0 +1,46 @@ +#ifndef CombinedLifeMeterEnemy_H +#define CombinedLifeMeterEnemy_H +/* +----------------------------------------------------------------------------- + Class: CombinedLifeMeterEnemy + + 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 "LifeMeter.h" +#include "Sprite.h" +#include "MeterDisplay.h" + + +class CombinedLifeMeterEnemy : public CombinedLifeMeter +{ +public: + CombinedLifeMeterEnemy(); + + virtual void Update( float fDelta ); + + enum Face { normal=0, taunt, attack, damage, defeated, NUM_FACES }; + + virtual void ChangeLife( PlayerNumber pn, TapNoteScore score ) {}; + virtual void ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore ) {}; + virtual void OnDancePointsChange( PlayerNumber pn ) {}; + virtual bool IsInDanger( PlayerNumber pn ) { return false; }; + virtual bool IsHot( PlayerNumber pn ) { return false; }; + virtual bool IsFailing( PlayerNumber pn ) { return false; }; + virtual bool FailedEarlier( PlayerNumber pn ) { return false; }; + +protected: + MeterDisplay m_meterHealth; + float m_fLastSeenHealthPercent; + + Sprite m_sprFace; + float m_fSecondsUntilReturnToNormalFace; +}; + + +#endif diff --git a/stepmania/src/CombinedLifeMeterTug.cpp b/stepmania/src/CombinedLifeMeterTug.cpp new file mode 100644 index 0000000000..d263173fee --- /dev/null +++ b/stepmania/src/CombinedLifeMeterTug.cpp @@ -0,0 +1,65 @@ +#include "global.h" +/* +----------------------------------------------------------------------------- + File: CombinedLifeMeterTug.h + + Desc: The song's CombinedLifeMeterTug displayed in SelectSong. + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. +----------------------------------------------------------------------------- +*/ + +#include "CombinedLifeMeterTug.h" +#include "ThemeManager.h" +#include "GameState.h" + + +CombinedLifeMeterTug::CombinedLifeMeterTug() +{ + for( int p=0; pGetPathToG(ssprintf("CombinedLifeMeterTug stream p%d",p+1)), 600 ); + this->AddChild( &m_Stream[p] ); + } + m_Stream[PLAYER_2].SetZoomX( -1 ); + + m_sprFrame.Load( THEME->GetPathToG(ssprintf("CombinedLifeMeterTug frame")) ); + this->AddChild( &m_sprFrame ); +} + +void CombinedLifeMeterTug::Update( float fDelta ) +{ + m_Stream[PLAYER_1].SetPercent( GAMESTATE->m_fTugLifePercentP1 ); + m_Stream[PLAYER_2].SetPercent( 1-GAMESTATE->m_fTugLifePercentP1 ); + + ActorFrame::Update( fDelta ); +} + +void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, TapNoteScore score ) +{ + float fPercentToMove; + switch( score ) + { + case TNS_MARVELOUS: fPercentToMove = +0.02f; break; + case TNS_PERFECT: fPercentToMove = +0.02f; break; + case TNS_GREAT: fPercentToMove = +0.01f; break; + case TNS_GOOD: fPercentToMove = +0.00f; break; + case TNS_BOO: fPercentToMove = -0.02f; break; + case TNS_MISS: fPercentToMove = -0.04f; break; + default: ASSERT(0); fPercentToMove = +0.00f; break; + } + + switch( pn ) + { + case PLAYER_1: GAMESTATE->m_fTugLifePercentP1 += fPercentToMove; break; + case PLAYER_2: GAMESTATE->m_fTugLifePercentP1 -= fPercentToMove; break; + default: ASSERT(0); + } + + CLAMP( GAMESTATE->m_fTugLifePercentP1, 0, 1 ); +} + +void CombinedLifeMeterTug::ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore ) +{ + +} diff --git a/stepmania/src/CombinedLifeMeterTug.h b/stepmania/src/CombinedLifeMeterTug.h new file mode 100644 index 0000000000..782774769f --- /dev/null +++ b/stepmania/src/CombinedLifeMeterTug.h @@ -0,0 +1,39 @@ +#ifndef CombinedLifeMeterTug_H +#define CombinedLifeMeterTug_H +/* +----------------------------------------------------------------------------- + File: CombinedLifeMeterTug.h + + Desc: + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford +----------------------------------------------------------------------------- +*/ + +#include "LifeMeter.h" +#include "Sprite.h" +#include "MeterDisplay.h" + + +class CombinedLifeMeterTug : public CombinedLifeMeter +{ +public: + CombinedLifeMeterTug(); + virtual void Update( float fDelta ); + + virtual void ChangeLife( PlayerNumber pn, TapNoteScore score ); + virtual void ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore ); + virtual void OnDancePointsChange( PlayerNumber pn ) {}; + virtual bool IsInDanger( PlayerNumber pn ) { return false; }; + virtual bool IsHot( PlayerNumber pn ) { return false; }; + virtual bool IsFailing( PlayerNumber pn ) { return false; }; + virtual bool FailedEarlier( PlayerNumber pn ) { return false; }; + +protected: + + MeterDisplay m_Stream[NUM_PLAYERS]; + Sprite m_sprFrame; +}; + +#endif diff --git a/stepmania/src/EnemyFace.cpp b/stepmania/src/EnemyFace.cpp deleted file mode 100644 index 06b0909bd0..0000000000 --- a/stepmania/src/EnemyFace.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#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 -#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; -} - diff --git a/stepmania/src/EnemyFace.h b/stepmania/src/EnemyFace.h deleted file mode 100644 index 6e1be1caf7..0000000000 --- a/stepmania/src/EnemyFace.h +++ /dev/null @@ -1,32 +0,0 @@ -#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 diff --git a/stepmania/src/EnemyHealth.cpp b/stepmania/src/EnemyHealth.cpp deleted file mode 100644 index 3a1c113a36..0000000000 --- a/stepmania/src/EnemyHealth.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#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 ); -} diff --git a/stepmania/src/EnemyHealth.h b/stepmania/src/EnemyHealth.h deleted file mode 100644 index 969193362b..0000000000 --- a/stepmania/src/EnemyHealth.h +++ /dev/null @@ -1,29 +0,0 @@ -#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 diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 47fd9ebd1e..2dde07cae3 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -208,6 +208,14 @@ const int MIN_SKILL = 0; const int MAX_SKILL = 10; +enum StageResult +{ + RESULT_WIN, + RESULT_LOSE, + RESULT_DRAW +}; + + // // Battle stuff // @@ -222,15 +230,6 @@ enum AttackLevel const int NUM_ATTACKS_PER_LEVEL = 3; const int ITEM_NONE = -1; -enum BattleResult -{ - RESULT_WIN, - RESULT_LOSE, - RESULT_DRAW -}; - - - #define BG_ANIMS_DIR CString("BGAnimations/") #define VISUALIZATIONS_DIR CString("Visualizations/") diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 0d47143c89..ba3f1f4dd6 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -102,10 +102,17 @@ void GameState::Reset() for( p=0; pm_PlayMode ) { case PLAY_MODE_BATTLE: return (m_fOpponentHealthPercent==0)?RESULT_WIN:RESULT_LOSE; default: - ASSERT(0); - return RESULT_WIN; + return (GetWinner()==pn)?RESULT_WIN:RESULT_LOSE; } } diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index b4caad8fd0..ef8c9dbc63 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -92,8 +92,15 @@ public: } PlayerController m_PlayerController[NUM_PLAYERS]; + + // Used in Battle and Rave int m_iCpuSkill[NUM_PLAYERS]; // only used when m_PlayerController is PC_CPU - float m_fSuperMeterGrowth[NUM_PLAYERS]; // between 0.0 and 1.0 + + // Used in Rave + float m_fTugLifePercentP1; + float m_fSuperMeter[NUM_PLAYERS]; // between 0 and NUM_ATTACK_LEVELS + float m_fSuperMeterGrowthScale[NUM_PLAYERS]; + bool IsCourseMode() const; @@ -198,7 +205,7 @@ public: bool HasEarnedExtraStage(); PlayerNumber GetWinner(); - BattleResult GetBattleResult( PlayerNumber pn ); + StageResult GetStageResult( PlayerNumber pn ); bool m_bAllow2ndExtraStage; //only used when "Allow Selection of Extra Stage is on" diff --git a/stepmania/src/LifeMeter.cpp b/stepmania/src/LifeMeter.cpp deleted file mode 100644 index 052f5c404a..0000000000 --- a/stepmania/src/LifeMeter.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "global.h" -/* ------------------------------------------------------------------------------ - Class: LifeMeter - - Desc: See header. - - Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. - Chris Danford ------------------------------------------------------------------------------ -*/ - -#include "LifeMeter.h" - - diff --git a/stepmania/src/LifeMeter.h b/stepmania/src/LifeMeter.h index 1b44a55cb0..724f510358 100644 --- a/stepmania/src/LifeMeter.h +++ b/stepmania/src/LifeMeter.h @@ -2,7 +2,7 @@ #define LIFEMETER_H /* ----------------------------------------------------------------------------- - Class: LifeMeterBar + Class: LifeMeter Desc: A graphic displayed in the LifeMeterBar during Dancing. @@ -16,9 +16,6 @@ #include "ActorFrame.h" -class Song; - - class LifeMeter : public ActorFrame { public: @@ -26,8 +23,6 @@ public: virtual ~LifeMeter() {}; virtual void Load( PlayerNumber pn ) { m_PlayerNumber = pn; } - virtual void Update( float fDeltaTime ) { ActorFrame::Update(fDeltaTime); }; - virtual void OnSongEnded() {}; /* Change life after receiving a tap note grade. This *is* called for * the head of hold notes. */ @@ -42,7 +37,29 @@ public: virtual bool FailedEarlier() = 0; protected: - PlayerNumber m_PlayerNumber; + PlayerNumber m_PlayerNumber; }; +class CombinedLifeMeter : public ActorFrame +{ +public: + CombinedLifeMeter() {}; + virtual ~CombinedLifeMeter() {}; + + virtual void OnSongEnded() {}; + /* Change life after receiving a tap note grade. This *is* called for + * the head of hold notes. */ + virtual void ChangeLife( PlayerNumber pn, TapNoteScore score ) = 0; + /* Change life after receiving a hold note grade. tscore is the score + * received for the initial tap note. */ + virtual void ChangeLife( PlayerNumber pn, HoldNoteScore score, TapNoteScore tscore ) = 0; + virtual void OnDancePointsChange( PlayerNumber pn ) = 0; // look in GAMESTATE and update the display + virtual bool IsInDanger( PlayerNumber pn ) = 0; + virtual bool IsHot( PlayerNumber pn ) = 0; + virtual bool IsFailing( PlayerNumber pn ) = 0; + virtual bool FailedEarlier( PlayerNumber pn ) = 0; +}; + + + #endif diff --git a/stepmania/src/MeterDisplay.cpp b/stepmania/src/MeterDisplay.cpp index 8a2996e878..c00cad6083 100644 --- a/stepmania/src/MeterDisplay.cpp +++ b/stepmania/src/MeterDisplay.cpp @@ -12,40 +12,24 @@ #include "MeterDisplay.h" -MeterDisplay::MeterDisplay( - CString sSteamPath, - CString sFramePath, - float fStreamWidth ) +MeterDisplay::MeterDisplay() +{ + +} + +void MeterDisplay::Load( CString sSteamPath, 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 ); } @@ -53,16 +37,11 @@ void MeterDisplay::Update( float 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" ); + m_sprStream.SetCropRight( 1-fPercent ); } diff --git a/stepmania/src/MeterDisplay.h b/stepmania/src/MeterDisplay.h index 1b8ff4276d..4c3518c717 100644 --- a/stepmania/src/MeterDisplay.h +++ b/stepmania/src/MeterDisplay.h @@ -19,24 +19,17 @@ class MeterDisplay : public Actor { public: - MeterDisplay( - CString sSteamPath, - CString sFramePath, - float fStreamWidth ); - virtual ~MeterDisplay(); + MeterDisplay(); + void Load( CString sSteamPath, float fStreamWidth ); 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; + Sprite m_sprStream; }; #endif diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 72c5a96db0..44b8cd2522 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -57,8 +57,10 @@ Player::Player() m_bShowJudgment = true; m_pLifeMeter = NULL; + m_pCombinedLifeMeter = NULL; m_pScore = NULL; - m_pScoreKeeper = NULL; + m_pPrimaryScoreKeeper = NULL; + m_pSecondaryScoreKeeper = NULL; m_pInventory = NULL; m_iOffsetSample = 0; @@ -79,15 +81,17 @@ Player::~Player() { } -void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pScoreKeeper ) +void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper ) { //LOG->Trace( "Player::Load()", ); m_PlayerNumber = pn; m_pLifeMeter = pLM; + m_pCombinedLifeMeter = pCombinedLM; m_pScore = pScore; m_pInventory = pInventory; - m_pScoreKeeper = pScoreKeeper; + m_pPrimaryScoreKeeper = pPrimaryScoreKeeper; + m_pSecondaryScoreKeeper = pSecondaryScoreKeeper; m_iRowLastCrossed = BeatToNoteRowNotRounded( GAMESTATE->m_fSongBeat ) - 1; // m_iRowLastCrossed = -1; @@ -660,8 +664,11 @@ void Player::HandleTapRowScore( unsigned row ) if( NoCheating && GAMESTATE->m_PlayerController[m_PlayerNumber] == PC_AUTOPLAY ) return; - if(m_pScoreKeeper) - m_pScoreKeeper->HandleTapRowScore(scoreOfLastTap, iNumTapsInRow, m_pInventory); + if(m_pPrimaryScoreKeeper) + m_pPrimaryScoreKeeper->HandleTapRowScore(scoreOfLastTap, iNumTapsInRow ); + + if(m_pSecondaryScoreKeeper) + m_pSecondaryScoreKeeper->HandleTapRowScore(scoreOfLastTap, iNumTapsInRow ); if (m_pScore) m_pScore->SetScore(GAMESTATE->m_CurStageStats.iScore[m_PlayerNumber]); @@ -670,6 +677,10 @@ void Player::HandleTapRowScore( unsigned row ) m_pLifeMeter->ChangeLife( scoreOfLastTap ); m_pLifeMeter->OnDancePointsChange(); // update oni life meter } + if( m_pCombinedLifeMeter ) { + m_pCombinedLifeMeter->ChangeLife( m_PlayerNumber, scoreOfLastTap ); + m_pCombinedLifeMeter->OnDancePointsChange( m_PlayerNumber ); // update oni life meter + } } @@ -686,8 +697,10 @@ void Player::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ) if( NoCheating && GAMESTATE->m_PlayerController[m_PlayerNumber] == PC_AUTOPLAY ) return; - if(m_pScoreKeeper) - m_pScoreKeeper->HandleHoldScore(holdScore, tapScore); + if(m_pPrimaryScoreKeeper) + m_pPrimaryScoreKeeper->HandleHoldScore(holdScore, tapScore); + if(m_pSecondaryScoreKeeper) + m_pSecondaryScoreKeeper->HandleHoldScore(holdScore, tapScore); if (m_pScore) m_pScore->SetScore(GAMESTATE->m_CurStageStats.iScore[m_PlayerNumber]); @@ -696,6 +709,10 @@ void Player::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ) m_pLifeMeter->ChangeLife( holdScore, tapScore ); m_pLifeMeter->OnDancePointsChange(); } + if( m_pCombinedLifeMeter ) { + m_pCombinedLifeMeter->ChangeLife( m_PlayerNumber, holdScore, tapScore ); + m_pCombinedLifeMeter->OnDancePointsChange( m_PlayerNumber ); + } } float Player::GetMaxStepDistanceSeconds() diff --git a/stepmania/src/Player.h b/stepmania/src/Player.h index 1c4ced6b76..acdf9eccfc 100644 --- a/stepmania/src/Player.h +++ b/stepmania/src/Player.h @@ -32,6 +32,7 @@ #include "ArrowBackdrop.h" class ScoreDisplay; class LifeMeter; +class CombinedLifeMeter; class ScoreKeeper; class Inventory; @@ -47,7 +48,7 @@ public: virtual void DrawPrimitives(); ~Player(); - void Load( PlayerNumber player_no, NoteData* pNoteData, LifeMeter* pLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pScoreKeeper ); + void Load( PlayerNumber player_no, NoteData* pNoteData, LifeMeter* pLM, CombinedLifeMeter* pCombinedLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pPrimaryScoreKeeper, ScoreKeeper* pSecondaryScoreKeeper ); void CrossedRow( int iNoteRow ); void Step( int col ); void RandomiseNotes( int iNoteRow ); @@ -83,8 +84,10 @@ protected: Combo m_Combo; LifeMeter* m_pLifeMeter; + CombinedLifeMeter* m_pCombinedLifeMeter; ScoreDisplay* m_pScore; - ScoreKeeper* m_pScoreKeeper; + ScoreKeeper* m_pPrimaryScoreKeeper; + ScoreKeeper* m_pSecondaryScoreKeeper; Inventory* m_pInventory; CString m_sLastSeenNoteSkin; diff --git a/stepmania/src/RaveHelper.cpp b/stepmania/src/RaveHelper.cpp deleted file mode 100644 index 1418f9127d..0000000000 --- a/stepmania/src/RaveHelper.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "global.h" -/* ------------------------------------------------------------------------------ - Class: RaveHelper - - Desc: See header. - - Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. - Chris Danford ------------------------------------------------------------------------------ -*/ - -#include "RaveHelper.h" -#include "ThemeManager.h" -#include "RageUtil.h" -#include "GameState.h" -#include "Character.h" - -CachedThemeMetricF ATTACK_DURATION_SECONDS ("RaveHelper","AttackDurationSeconds"); - -const PlayerNumber OPPOSITE_PLAYER[NUM_PLAYERS] = { PLAYER_2, PLAYER_1 }; - - -RaveHelper::RaveHelper() -{ - ATTACK_DURATION_SECONDS.Refresh(); -} - -void RaveHelper::Load( PlayerNumber pn ) -{ - m_PlayerNumber = pn; - - // don't load sounds if they're not going to be used - if( GAMESTATE->m_PlayMode == PLAY_MODE_RAVE ) - { - for( int p=0; pGetPathToS(ssprintf("RaveHelper launch attack p%d",p+1)) ); - m_soundAttackEnding.Load( THEME->GetPathToS(ssprintf("RaveHelper attack end p%d",p+1)) ); - } - } -} - -void RaveHelper::Update( float fDelta ) -{ - if( GAMESTATE->m_PlayMode != PLAY_MODE_RAVE ) - return; - - if( GAMESTATE->m_bActiveAttackEndedThisUpdate[m_PlayerNumber] ) - m_soundAttackEnding.Play(); - -// PlayerNumber pn = m_PlayerNumber; - - // TODO: Award item based on Super meter -/* - // check to see if they deserve a new item - if( GAMESTATE->m_CurStageStats.iCurCombo[pn] != m_iLastSeenCombo ) - { - int iOldCombo = m_iLastSeenCombo; - m_iLastSeenCombo = GAMESTATE->m_CurStageStats.iCurCombo[pn]; - int iNewCombo = m_iLastSeenCombo; - - int iLevelOfOldCombo = (iOldCombo/COMBO_PER_ATTACK_LEVEL) - 1; - int iLevelOfNewCombo = (iNewCombo/COMBO_PER_ATTACK_LEVEL) - 1; - - if( iLevelOfOldCombo < iLevelOfNewCombo && // combo increasing - iLevelOfNewCombo >= ATTACK_LEVEL_1 ) // attack level not negative - { - // they deserve a new item - CLAMP( iLevelOfNewCombo, 0, GAMESTATE->m_MaxAttackLevel[pn] ); - AttackLevel al = (AttackLevel)iLevelOfNewCombo; - AwardItem( al ); - } - } - */ -} - -void RaveHelper::LaunchAttack( AttackLevel al ) -{ - CString* asAttacks = GAMESTATE->m_pCurCharacters[m_PlayerNumber]->m_sAttacks[al]; // [NUM_ATTACKS_PER_LEVEL] - CString sAttackToGive = asAttacks[ rand()%NUM_ATTACKS_PER_LEVEL ]; - PlayerNumber pnToAttack = OPPOSITE_PLAYER[m_PlayerNumber]; - - GameState::Attack a; - a.level = al; - a.fSecsRemaining = ATTACK_DURATION_SECONDS; - a.sModifier = sAttackToGive; - - GAMESTATE->LaunchAttack( pnToAttack, a ); - - m_soundLaunchAttack.Play(); -} diff --git a/stepmania/src/RaveHelper.h b/stepmania/src/RaveHelper.h deleted file mode 100644 index d971f448ef..0000000000 --- a/stepmania/src/RaveHelper.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RaveHelper_H -#define RaveHelper_H -/* ------------------------------------------------------------------------------ - Class: RaveHelper - - Desc: Launches attacks in PLAY_MODE_RAVE. - - Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. - Chris Danford ------------------------------------------------------------------------------ -*/ - -#include "Actor.h" -#include "PlayerNumber.h" -#include "RageSound.h" -#include "GameConstantsAndTypes.h" - - -class RaveHelper : public Actor -{ -public: - RaveHelper(); - void Load( PlayerNumber pn ); - - virtual void Update( float fDelta ); - virtual void DrawPrimitives() {}; - -protected: - void LaunchAttack( AttackLevel al ); - - PlayerNumber m_PlayerNumber; - - RageSound m_soundLaunchAttack; - RageSound m_soundAttackEnding; -}; - -#endif diff --git a/stepmania/src/ScoreDisplayRave.cpp b/stepmania/src/ScoreDisplayRave.cpp index c0c2024eae..e9516e95de 100644 --- a/stepmania/src/ScoreDisplayRave.cpp +++ b/stepmania/src/ScoreDisplayRave.cpp @@ -18,38 +18,41 @@ #include "GameState.h" #include "ThemeManager.h" + +const float LEVEL_WIDTH = 50; + + ScoreDisplayRave::ScoreDisplayRave() { LOG->Trace( "ScoreDisplayRave::ScoreDisplayRave()" ); - m_sprFrame.Load( THEME->GetPathToG("ScoreDisplayRave frame") ); - this->AddChild( &m_sprFrame ); + for( int i=0; iGetPathToG(ssprintf("ScoreDisplayRave stream level%d",i+1)), LEVEL_WIDTH ); + float fSpan = (NUM_ATTACK_LEVELS-1)*LEVEL_WIDTH; + float fX = SCALE(i,0.f,NUM_ATTACK_LEVELS-1.f, -fSpan/2, fSpan/2 ); + m_LevelStream[i].SetX( fX ); + this->AddChild( &m_LevelStream[i] ); + } - m_textCurrentAttack.LoadFromFont( THEME->GetPathToF("Common normal") ); - this->AddChild( &m_textCurrentAttack ); + this->AddChild( &m_sprFrame ); } void ScoreDisplayRave::Init( PlayerNumber pn ) { ScoreDisplay::Init( pn ); + + m_sprFrame.Load( THEME->GetPathToG(ssprintf("ScoreDisplayRave frame p%d",pn+1)) ); } void ScoreDisplayRave::Update( float fDelta ) { ScoreDisplay::Update( fDelta ); - CString sNewAttack = GAMESTATE->m_ActiveAttacks[m_PlayerNumber][0].sModifier; - - if( sNewAttack != m_sLastSeenAttack ) + for( int i=0; im_fSuperMeter[m_PlayerNumber] - i; + CLAMP( fLevelPercent, 0 ,1 ); + m_LevelStream[i].SetPercent( fLevelPercent ); } } diff --git a/stepmania/src/ScoreDisplayRave.h b/stepmania/src/ScoreDisplayRave.h index b16579a51b..cf8fe544c4 100644 --- a/stepmania/src/ScoreDisplayRave.h +++ b/stepmania/src/ScoreDisplayRave.h @@ -14,6 +14,7 @@ #include "ScoreDisplay.h" #include "GameConstantsAndTypes.h" #include "OptionIcon.h" +#include "MeterDisplay.h" class ScoreDisplayRave : public ScoreDisplay @@ -25,10 +26,9 @@ public: virtual void Update( float fDelta ); protected: - Sprite m_sprFrame; - BitmapText m_textCurrentAttack; - - CString m_sLastSeenAttack; + MeterDisplay m_LevelStream[NUM_ATTACK_LEVELS]; + Sprite m_sprFrame; + BitmapText m_LevelNumber; }; #endif diff --git a/stepmania/src/ScoreKeeper.cpp b/stepmania/src/ScoreKeeper.cpp deleted file mode 100644 index c66ac97fbb..0000000000 --- a/stepmania/src/ScoreKeeper.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "global.h" -#include "ScoreKeeper.h" - diff --git a/stepmania/src/ScoreKeeper.h b/stepmania/src/ScoreKeeper.h index 1ed8a6ee55..6343097426 100644 --- a/stepmania/src/ScoreKeeper.h +++ b/stepmania/src/ScoreKeeper.h @@ -40,10 +40,11 @@ protected: public: ScoreKeeper(PlayerNumber pn) { m_PlayerNumber=pn; } virtual void DrawPrimitives() { } + virtual void Update( float fDelta ) { } virtual void OnNextSong( int iSongInCourseIndex, Notes* pNotes ) = 0; // before a song plays (called multiple times if course) - virtual void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow, Inventory* pInventory ) = 0; + virtual void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow ) = 0; virtual void HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ) = 0; virtual int TapNoteScoreToDancePoints( TapNoteScore tns ) = 0; diff --git a/stepmania/src/ScoreKeeperMAX2.cpp b/stepmania/src/ScoreKeeperMAX2.cpp index e5e92f3063..8af458f1c4 100644 --- a/stepmania/src/ScoreKeeperMAX2.cpp +++ b/stepmania/src/ScoreKeeperMAX2.cpp @@ -222,7 +222,7 @@ void ScoreKeeperMAX2::AddScore( TapNoteScore score ) GAMESTATE->m_CurStageStats.iScore[m_PlayerNumber] = m_iScore; } -void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow, Inventory* pInventory ) +void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow ) { ASSERT( iNumTapsInRow >= 1 ); diff --git a/stepmania/src/ScoreKeeperMAX2.h b/stepmania/src/ScoreKeeperMAX2.h index 8a4adcc402..7599e86dc9 100644 --- a/stepmania/src/ScoreKeeperMAX2.h +++ b/stepmania/src/ScoreKeeperMAX2.h @@ -37,7 +37,7 @@ public: void OnNextSong( int iSongInCourseIndex, Notes* pNotes ); // before a song plays (called multiple times if course) - void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow, Inventory* pInventory ); + void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow ); void HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ); int TapNoteScoreToDancePoints( TapNoteScore tns ); diff --git a/stepmania/src/ScoreKeeperRave.cpp b/stepmania/src/ScoreKeeperRave.cpp new file mode 100644 index 0000000000..47f522f227 --- /dev/null +++ b/stepmania/src/ScoreKeeperRave.cpp @@ -0,0 +1,96 @@ +#include "global.h" +/* +----------------------------------------------------------------------------- + Class: ScoreKeeperRave + + Desc: See header. + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford +----------------------------------------------------------------------------- +*/ + +#include "ScoreKeeperRave.h" +#include "ThemeManager.h" +#include "RageUtil.h" +#include "GameState.h" +#include "Character.h" + +CachedThemeMetricF ATTACK_DURATION_SECONDS ("ScoreKeeperRave","AttackDurationSeconds"); + +const PlayerNumber OPPOSITE_PLAYER[NUM_PLAYERS] = { PLAYER_2, PLAYER_1 }; + + +ScoreKeeperRave::ScoreKeeperRave(PlayerNumber pn) : ScoreKeeper(pn) +{ + ATTACK_DURATION_SECONDS.Refresh(); + + m_soundLaunchAttack.Load( THEME->GetPathToS(ssprintf("ScoreKeeperRave launch attack p%d",pn+1)) ); + m_soundAttackEnding.Load( THEME->GetPathToS(ssprintf("ScoreKeeperRave attack end p%d",pn+1)) ); +} + +void ScoreKeeperRave::OnNextSong( int iSongInCourseIndex, Notes* pNotes ) +{ + +} + +#define CROSSED( val ) (fOld < val && fNew >= val) +#define CROSSED_ATTACK_LEVEL( level ) CROSSED(1.f/NUM_ATTACK_LEVELS*(level+1)) +void ScoreKeeperRave::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow ) +{ + AttackLevel oldAL = (AttackLevel)(int)GAMESTATE->m_fSuperMeter[m_PlayerNumber]; + + float fPercentToMove; + switch( scoreOfLastTap ) + { + case TNS_MARVELOUS: fPercentToMove = +0.02f; break; + case TNS_PERFECT: fPercentToMove = +0.02f; break; + case TNS_GREAT: fPercentToMove = +0.01f; break; + case TNS_GOOD: fPercentToMove = +0.00f; break; + case TNS_BOO: fPercentToMove = -0.02f; break; + case TNS_MISS: fPercentToMove = -0.04f; break; + default: ASSERT(0); fPercentToMove = +0.00f; break; + } + + GAMESTATE->m_fSuperMeter[m_PlayerNumber] += fPercentToMove * GAMESTATE->m_fSuperMeterGrowthScale[m_PlayerNumber]; + CLAMP( GAMESTATE->m_fSuperMeter[m_PlayerNumber], 0.f, NUM_ATTACK_LEVELS ); + + AttackLevel newAL = (AttackLevel)(int)GAMESTATE->m_fSuperMeter[m_PlayerNumber]; + + if( newAL > oldAL ) + { + if( newAL == NUM_ATTACK_LEVELS ) // hit upper bounds of meter + { + GAMESTATE->m_fSuperMeter[m_PlayerNumber] -= 1.f; + newAL = (AttackLevel)(NUM_ATTACK_LEVELS-1); + } + LaunchAttack( newAL ); + } +} + +void ScoreKeeperRave::HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ) +{ + +} + +void ScoreKeeperRave::Update( float fDelta ) +{ + if( GAMESTATE->m_bActiveAttackEndedThisUpdate[m_PlayerNumber] ) + m_soundAttackEnding.Play(); +} + +void ScoreKeeperRave::LaunchAttack( AttackLevel al ) +{ + CString* asAttacks = GAMESTATE->m_pCurCharacters[m_PlayerNumber]->m_sAttacks[al]; // [NUM_ATTACKS_PER_LEVEL] + CString sAttackToGive = asAttacks[ rand()%NUM_ATTACKS_PER_LEVEL ]; + PlayerNumber pnToAttack = OPPOSITE_PLAYER[m_PlayerNumber]; + + GameState::Attack a; + a.level = al; + a.fSecsRemaining = ATTACK_DURATION_SECONDS; + a.sModifier = sAttackToGive; + + GAMESTATE->LaunchAttack( pnToAttack, a ); + + m_soundLaunchAttack.Play(); +} diff --git a/stepmania/src/ScoreKeeperRave.h b/stepmania/src/ScoreKeeperRave.h new file mode 100644 index 0000000000..0e4fb5fde3 --- /dev/null +++ b/stepmania/src/ScoreKeeperRave.h @@ -0,0 +1,39 @@ +#ifndef ScoreKeeperRave_H +#define ScoreKeeperRave_H +/* +----------------------------------------------------------------------------- + Class: ScoreKeeperRave + + Desc: Launches attacks in PLAY_MODE_RAVE. + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford +----------------------------------------------------------------------------- +*/ + +#include "ScoreKeeper.h" +#include "RageSound.h" +#include "GameConstantsAndTypes.h" + + +class ScoreKeeperRave : public ScoreKeeper +{ +public: + // Overrides + ScoreKeeperRave(PlayerNumber pn); + virtual void Update( float fDelta ); + virtual void OnNextSong( int iSongInCourseIndex, Notes* pNotes ); // before a song plays (called multiple times if course) + virtual void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow ); + virtual void HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ); + virtual int TapNoteScoreToDancePoints( TapNoteScore tns ) { return 0; }; + virtual int HoldNoteScoreToDancePoints( HoldNoteScore hns ) { return 0; }; + virtual int GetPossibleDancePoints( const NoteData* pNoteData ) { return 0; }; + +protected: + void LaunchAttack( AttackLevel al ); + + RageSound m_soundLaunchAttack; + RageSound m_soundAttackEnding; +}; + +#endif diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index fb3a852972..636503d352 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -269,7 +269,7 @@ ScreenEdit::ScreenEdit() : Screen("ScreenEdit") GAMESTATE->m_PlayerOptions[PLAYER_1].m_sNoteSkin = "default"; // change noteskin back to default before loading player - m_Player.Load( PLAYER_1, ¬eData, NULL, NULL, NULL, NULL ); + m_Player.Load( PLAYER_1, ¬eData, NULL, NULL, NULL, NULL, NULL, NULL ); GAMESTATE->m_PlayerController[PLAYER_1] = PC_HUMAN; m_Player.SetXY( PLAYER_X, PLAYER_Y ); @@ -1465,7 +1465,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers ) * where we're starting. */ GAMESTATE->m_fSongBeat = m_NoteFieldEdit.m_fBeginMarker - 4; - m_Player.Load( PLAYER_1, (NoteData*)&m_NoteFieldEdit, NULL, NULL, NULL, NULL ); + m_Player.Load( PLAYER_1, (NoteData*)&m_NoteFieldEdit, NULL, NULL, NULL, NULL, NULL, NULL ); GAMESTATE->m_PlayerController[PLAYER_1] = PREFSMAN->m_bAutoPlay?PC_AUTOPLAY:PC_HUMAN; m_rectRecordBack.StopTweening(); diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index 5cee1135f5..d02fb4b460 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -515,7 +515,7 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) : Screen(sCl m_sprWin[p].Load( THEME->GetPathToG("ScreenEvaluation win 2x3") ); m_sprWin[p].StopAnimating(); - int iFrame = GAMESTATE->GetBattleResult( (PlayerNumber)p )*2 + p; + int iFrame = GAMESTATE->GetStageResult( (PlayerNumber)p )*2 + p; m_sprWin[p].SetState( iFrame ); m_sprWin[p].SetName( ssprintf("WinP%d",p+1) ); UtilSetXYAndOnCommand( m_sprWin[p], "ScreenEvaluation" ); @@ -674,7 +674,7 @@ ScreenEvaluation::ScreenEvaluation( CString sClassName, Type type ) : Screen(sCl { case PLAY_MODE_BATTLE: { - bool bWon = GAMESTATE->GetBattleResult(GAMESTATE->m_MasterPlayerNumber) == RESULT_WIN; + bool bWon = GAMESTATE->GetStageResult(GAMESTATE->m_MasterPlayerNumber) == RESULT_WIN; if( bWon ) SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation win") ); else diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index f2cd2e93d5..c99ac8b8e5 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -32,13 +32,14 @@ #include "ThemeManager.h" #include "RageTimer.h" #include "ScoreKeeperMAX2.h" +#include "ScoreKeeperRave.h" #include "NoteFieldPositioning.h" #include "LyricsLoader.h" #include "ActorUtil.h" #include "NoteSkinManager.h" #include "RageTextureManager.h" -#include "EnemyHealth.h" -#include "EnemyFace.h" +#include "CombinedLifeMeterEnemy.h" +#include "CombinedLifeMeterTug.h" // // Defines @@ -96,8 +97,10 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay") { m_pLifeMeter[p] = NULL; m_pScoreDisplay[p] = NULL; - m_pScoreKeeper[p] = NULL; + m_pPrimaryScoreKeeper[p] = NULL; + m_pSecondaryScoreKeeper[p] = NULL; } + m_pCombinedLifeMeter = NULL; // fill in difficulty of CPU players with that of the first human player @@ -164,7 +167,14 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay") { if( !GAMESTATE->IsPlayerEnabled(p) ) continue; // skip - m_pScoreKeeper[p] = new ScoreKeeperMAX2( m_apNotesQueue[p], (PlayerNumber)p ); + m_pPrimaryScoreKeeper[p] = new ScoreKeeperMAX2( m_apNotesQueue[p], (PlayerNumber)p ); + + switch( GAMESTATE->m_PlayMode ) + { + case PLAY_MODE_RAVE: + m_pSecondaryScoreKeeper[p] = new ScoreKeeperRave( (PlayerNumber)p ); + break; + } } @@ -243,19 +253,6 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay") 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_NextSongIn ); @@ -277,27 +274,53 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay") SET_XY( m_sprLifeFrame ); this->AddChild( &m_sprLifeFrame ); - for( p=0; pm_PlayMode ) { - switch( GAMESTATE->m_SongOptions.m_LifeType ) + case PLAY_MODE_ARCADE: + case PLAY_MODE_ONI: + case PLAY_MODE_NONSTOP: + case PLAY_MODE_ENDLESS: + for( p=0; pm_SongOptions.m_LifeType ) + { + case SongOptions::LIFE_BAR: + m_pLifeMeter[p] = new LifeMeterBar; + break; + case SongOptions::LIFE_BATTERY: + m_pLifeMeter[p] = new LifeMeterBattery; + break; + default: + ASSERT(0); + } + + m_pLifeMeter[p]->Load( (PlayerNumber)p ); + m_pLifeMeter[p]->SetName( ssprintf("LifeP%d%s",p+1,bExtra?"Extra":"") ); + SET_XY( *m_pLifeMeter[p] ); + this->AddChild( m_pLifeMeter[p] ); + } + break; + case PLAY_MODE_BATTLE: + case PLAY_MODE_RAVE: + switch( GAMESTATE->m_PlayMode ) + { + case PLAY_MODE_BATTLE: + m_pCombinedLifeMeter = new CombinedLifeMeterEnemy; break; - case SongOptions::LIFE_BATTERY: - m_pLifeMeter[p] = new LifeMeterBattery; + case PLAY_MODE_RAVE: + m_pCombinedLifeMeter = new CombinedLifeMeterTug; break; default: ASSERT(0); } - - m_pLifeMeter[p]->Load( (PlayerNumber)p ); - m_pLifeMeter[p]->SetName( ssprintf("LifeP%d%s",p+1,bExtra?"Extra":"") ); - SET_XY( *m_pLifeMeter[p] ); - this->AddChild( m_pLifeMeter[p] ); + m_pCombinedLifeMeter->SetName( ssprintf("CombinedLife%s",bExtra?"Extra":"") ); + SET_XY( *m_pCombinedLifeMeter ); + this->AddChild( m_pCombinedLifeMeter ); + break; } + m_sprStage.SetName( ssprintf("Stage%s",bExtra?"Extra":"") ); SET_XY( m_sprStage ); @@ -440,12 +463,6 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration ) : Screen("ScreenGameplay") m_Inventory[p].Load( (PlayerNumber)p ); this->AddChild( &m_Inventory[p] ); } - - if( GAMESTATE->m_PlayMode==PLAY_MODE_RAVE ) - { - m_RaveHelper[p].Load( (PlayerNumber)p ); - this->AddChild( &m_RaveHelper[p] ); - } } @@ -572,11 +589,10 @@ ScreenGameplay::~ScreenGameplay() { SAFE_DELETE( m_pLifeMeter[p] ); SAFE_DELETE( m_pScoreDisplay[p] ); - SAFE_DELETE( m_pScoreKeeper[p] ); + SAFE_DELETE( m_pPrimaryScoreKeeper[p] ); + SAFE_DELETE( m_pSecondaryScoreKeeper[p] ); } - - delete m_pEnemyHealth; - delete m_pEnemyFace; + SAFE_DELETE( m_pCombinedLifeMeter ); m_soundMusic.StopPlaying(); } @@ -615,7 +631,9 @@ void ScreenGameplay::LoadNextSong() continue; GAMESTATE->m_pCurNotes[p] = m_apNotesQueue[p][iPlaySongIndex]; - m_pScoreKeeper[p]->OnNextSong( GAMESTATE->GetCourseSongIndex(), GAMESTATE->m_pCurNotes[p] ); + m_pPrimaryScoreKeeper[p]->OnNextSong( GAMESTATE->GetCourseSongIndex(), GAMESTATE->m_pCurNotes[p] ); + if( m_pSecondaryScoreKeeper[p] ) + m_pSecondaryScoreKeeper[p]->OnNextSong( GAMESTATE->GetCourseSongIndex(), GAMESTATE->m_pCurNotes[p] ); // Put courses options into effect. GAMESTATE->ApplyModifiers( (PlayerNumber)p, m_asModifiersQueue[p][iPlaySongIndex] ); @@ -640,7 +658,7 @@ void ScreenGameplay::LoadNextSong() NoteData pNewNoteData; pStyleDef->GetTransformedNoteDataForStyle( (PlayerNumber)p, &pOriginalNoteData, &pNewNoteData ); - m_Player[p].Load( (PlayerNumber)p, &pNewNoteData, m_pLifeMeter[p], m_pScoreDisplay[p], &m_Inventory[p], m_pScoreKeeper[p] ); + m_Player[p].Load( (PlayerNumber)p, &pNewNoteData, m_pLifeMeter[p], m_pCombinedLifeMeter, m_pScoreDisplay[p], &m_Inventory[p], m_pPrimaryScoreKeeper[p], m_pSecondaryScoreKeeper[p] ); if( m_bDemonstration ) { GAMESTATE->m_PlayerController[p] = PC_CPU; @@ -764,7 +782,8 @@ bool ScreenGameplay::OneIsHot() { for( int p=0; pIsPlayerEnabled(PlayerNumber(p)) ) - if( m_pLifeMeter[p]->IsHot() ) + if( (m_pLifeMeter[p] && m_pLifeMeter[p]->IsHot()) || + (m_pCombinedLifeMeter && m_pCombinedLifeMeter->IsHot((PlayerNumber)p)) ) return true; return false; } @@ -773,7 +792,8 @@ bool ScreenGameplay::AllAreInDanger() { for( int p=0; pIsPlayerEnabled(PlayerNumber(p)) ) - if( !m_pLifeMeter[p]->IsInDanger() ) + if( (m_pLifeMeter[p] && !m_pLifeMeter[p]->IsInDanger()) || + (m_pCombinedLifeMeter && !m_pCombinedLifeMeter->IsInDanger((PlayerNumber)p)) ) return false; return true; } @@ -782,7 +802,8 @@ bool ScreenGameplay::AllAreFailing() { for( int p=0; pIsPlayerEnabled(PlayerNumber(p)) ) - if( !m_pLifeMeter[p]->IsFailing() ) + if( (m_pLifeMeter[p] && !m_pLifeMeter[p]->IsFailing()) || + (m_pCombinedLifeMeter && !m_pCombinedLifeMeter->IsFailing((PlayerNumber)p)) ) return false; return true; } @@ -791,7 +812,8 @@ bool ScreenGameplay::AllFailedEarlier() { for( int p=0; pIsPlayerEnabled(p) ) - if( !m_pLifeMeter[p]->FailedEarlier() ) + if( (m_pLifeMeter[p] && !m_pLifeMeter[p]->FailedEarlier()) || + (m_pCombinedLifeMeter && !m_pCombinedLifeMeter->FailedEarlier((PlayerNumber)p)) ) return false; return true; } @@ -940,7 +962,8 @@ void ScreenGameplay::Update( float fDeltaTime ) // check for individual fail for ( pn=0; pnIsFailing() && !GAMESTATE->m_CurStageStats.bFailed[pn] ) + if( (m_pLifeMeter[pn] && m_pLifeMeter[pn]->IsFailing() && !GAMESTATE->m_CurStageStats.bFailed[pn]) || + (m_pCombinedLifeMeter && m_pCombinedLifeMeter->IsFailing((PlayerNumber)pn) && !GAMESTATE->m_CurStageStats.bFailed[pn]) ) GAMESTATE->m_CurStageStats.bFailed[pn] = true; // fail } @@ -955,7 +978,8 @@ void ScreenGameplay::Update( float fDeltaTime ) { if( !GAMESTATE->IsPlayerEnabled(pn) ) continue; - if( !m_pLifeMeter[pn]->IsFailing()) + if( (m_pLifeMeter[pn] && !m_pLifeMeter[pn]->IsFailing()) || + (m_pCombinedLifeMeter && !m_pCombinedLifeMeter->IsFailing((PlayerNumber)pn)) ) continue; /* isn't failing */ if( GAMESTATE->m_CurStageStats.bFailed[pn] ) continue; /* failed and is already dead */ @@ -994,8 +1018,6 @@ void ScreenGameplay::Update( float fDeltaTime ) if( OneIsHot() ) m_announcerHot.PlayRandom(); else if( AllAreInDanger() ) m_announcerDanger.PlayRandom(); else m_announcerGood.PlayRandom(); - if( m_pEnemyFace ) - m_pEnemyFace->SetFace( EnemyFace::taunt ); break; case PLAY_MODE_NONSTOP: case PLAY_MODE_ONI: @@ -1413,7 +1435,13 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) { for( p=0; pIsPlayerEnabled(p) && !GAMESTATE->m_CurStageStats.bFailed[p] ) - m_pLifeMeter[p]->OnSongEnded(); // give a little life back between stages + { + // give a little life back between stages + if( m_pLifeMeter[p] ) + m_pLifeMeter[p]->OnSongEnded(); + if( m_pCombinedLifeMeter ) + m_pCombinedLifeMeter->OnSongEnded(); + } // HACK: Temporarily set the song pointer to the next song so that // this m_NextSongOut will show the next song banner @@ -1583,7 +1611,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; } m_soundBattleTrickLevel1.PlayRandom(); - m_pEnemyFace->SetFace( EnemyFace::attack ); break; case SM_BattleTrickLevel2: if( SECS_SINCE_LAST_COMMENT > 5 ) @@ -1592,7 +1619,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; } m_soundBattleTrickLevel2.PlayRandom(); - m_pEnemyFace->SetFace( EnemyFace::attack ); break; case SM_BattleTrickLevel3: if( SECS_SINCE_LAST_COMMENT > 5 ) @@ -1601,7 +1627,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; } m_soundBattleTrickLevel3.PlayRandom(); - m_pEnemyFace->SetFace( EnemyFace::attack ); break; case SM_BattleDamageLevel1: @@ -1610,7 +1635,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_announcerBattleDamageLevel1.PlayRandom(); m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; } - m_pEnemyFace->SetFace( EnemyFace::damage ); break; case SM_BattleDamageLevel2: if( SECS_SINCE_LAST_COMMENT > 5 ) @@ -1618,7 +1642,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_announcerBattleDamageLevel2.PlayRandom(); m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; } - m_pEnemyFace->SetFace( EnemyFace::damage ); break; case SM_BattleDamageLevel3: if( SECS_SINCE_LAST_COMMENT > 5 ) @@ -1626,7 +1649,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) m_announcerBattleDamageLevel3.PlayRandom(); m_fTimeLeftBeforeDancingComment = SECONDS_BETWEEN_COMMENTS; } - m_pEnemyFace->SetFace( EnemyFace::damage ); break; case SM_SaveChangedBeforeGoingBack: @@ -1728,9 +1750,12 @@ void ScreenGameplay::TweenOnScreen() ON_COMMAND( m_sprStage ); ON_COMMAND( m_textSongOptions ); ON_COMMAND( m_sprScoreFrame ); + if( m_pCombinedLifeMeter ) + ON_COMMAND( *m_pCombinedLifeMeter ); for( int p=0; pIsPlayerEnabled(p) ) continue; ON_COMMAND( m_textCourseSongNumber[p] ); @@ -1738,10 +1763,6 @@ void ScreenGameplay::TweenOnScreen() ON_COMMAND( m_textPlayerOptions[p] ); ON_COMMAND( m_DifficultyIcon[p] ); } - if( m_pEnemyFace ) - ON_COMMAND( *m_pEnemyFace ); - if( m_pEnemyHealth ) - ON_COMMAND( *m_pEnemyHealth ); } void ScreenGameplay::TweenOffScreen() @@ -1750,9 +1771,12 @@ void ScreenGameplay::TweenOffScreen() OFF_COMMAND( m_sprStage ); OFF_COMMAND( m_textSongOptions ); OFF_COMMAND( m_sprScoreFrame ); + if( m_pCombinedLifeMeter ) + OFF_COMMAND( *m_pCombinedLifeMeter ); for( int p=0; pIsPlayerEnabled(p) ) continue; OFF_COMMAND( m_textCourseSongNumber[p] ); @@ -1760,10 +1784,6 @@ void ScreenGameplay::TweenOffScreen() OFF_COMMAND( m_textPlayerOptions[p] ); OFF_COMMAND( m_DifficultyIcon[p] ); } - if( m_pEnemyFace ) - OFF_COMMAND( *m_pEnemyFace ); - if( m_pEnemyHealth ) - OFF_COMMAND( *m_pEnemyHealth ); m_textDebug.StopTweening(); m_textDebug.BeginTweening( 1/8.f ); diff --git a/stepmania/src/ScreenGameplay.h b/stepmania/src/ScreenGameplay.h index d58e80c7e6..eb15791199 100644 --- a/stepmania/src/ScreenGameplay.h +++ b/stepmania/src/ScreenGameplay.h @@ -25,14 +25,10 @@ #include "DifficultyIcon.h" #include "BPMDisplay.h" #include "Inventory.h" -#include "RaveHelper.h" #include "ActiveItemList.h" //#include "BeginnerHelper.h" // uncomment once it's checked in #include "LyricDisplay.h" #include "TimingAssist.h" -class EnemyHealth; -class EnemyFace; - // messages sent by Combo const ScreenMessage SM_PlayToasty = ScreenMessage(SM_User+104); @@ -111,6 +107,7 @@ protected: Sprite m_sprLifeFrame; LifeMeter* m_pLifeMeter[NUM_PLAYERS]; + CombinedLifeMeter* m_pCombinedLifeMeter; Sprite m_sprStage; BitmapText m_textCourseSongNumber[NUM_PLAYERS]; @@ -118,7 +115,8 @@ protected: Sprite m_sprScoreFrame; ScoreDisplay* m_pScoreDisplay[NUM_PLAYERS]; - ScoreKeeper* m_pScoreKeeper[NUM_PLAYERS]; + ScoreKeeper* m_pPrimaryScoreKeeper[NUM_PLAYERS]; + ScoreKeeper* m_pSecondaryScoreKeeper[NUM_PLAYERS]; BitmapText m_textPlayerOptions[NUM_PLAYERS]; BitmapText m_textSongOptions; @@ -148,12 +146,7 @@ protected: // used in PLAY_MODE_BATTLE Inventory m_Inventory[NUM_PLAYERS]; ActiveItemList m_ActiveItemList[NUM_PLAYERS]; - EnemyHealth* m_pEnemyHealth; - EnemyFace* m_pEnemyFace; - // used in PLAY_MODE_RAVE - RaveHelper m_RaveHelper[NUM_PLAYERS]; - DifficultyIcon m_DifficultyIcon[NUM_PLAYERS]; BGAnimation m_bgaBH; diff --git a/stepmania/src/ScreenHowToPlay.cpp b/stepmania/src/ScreenHowToPlay.cpp index 01380fd83a..0d1b128342 100644 --- a/stepmania/src/ScreenHowToPlay.cpp +++ b/stepmania/src/ScreenHowToPlay.cpp @@ -75,7 +75,7 @@ ScreenHowToPlay::ScreenHowToPlay() : ScreenAttract("ScreenHowToPlay") GAMESTATE->m_pCurSong = m_pSong; GAMESTATE->m_bPastHereWeGo = true; GAMESTATE->m_PlayerController[PLAYER_1] = PC_AUTOPLAY; - m_Player.Load( PLAYER_1, pND, &m_LifeMeter, NULL, NULL, NULL ); + m_Player.Load( PLAYER_1, pND, &m_LifeMeter, NULL, NULL, NULL, NULL, NULL ); m_Player.SetX( 480 ); m_Player.DontShowJudgement(); diff --git a/stepmania/src/ScreenRaveOptions.cpp b/stepmania/src/ScreenRaveOptions.cpp index 9880270bc8..55f579ea7c 100644 --- a/stepmania/src/ScreenRaveOptions.cpp +++ b/stepmania/src/ScreenRaveOptions.cpp @@ -60,7 +60,7 @@ void ScreenRaveOptions::ImportOptions() { if( GAMESTATE->IsHumanPlayer(p) ) { - int iHumanSuperIndex = (int)SCALE( GAMESTATE->m_fSuperMeterGrowth[p], 0.25f, 2.f, 0.f, 7.f ); + int iHumanSuperIndex = (int)SCALE( GAMESTATE->m_fSuperMeterGrowthScale[p], 0.25f, 2.f, 0.f, 7.f ); CLAMP( iHumanSuperIndex, 0, 9 ); m_iSelectedOption[p][RO_HUMAN_SUPER] = iHumanSuperIndex; } @@ -71,7 +71,7 @@ void ScreenRaveOptions::ImportOptions() m_iSelectedOption[pnHuman][RO_CPU_SKILL] = GAMESTATE->m_iCpuSkill[p]; CLAMP( m_iSelectedOption[pnHuman][RO_CPU_SKILL], 0, 10 ); - int iHumanSuperIndex = (int)SCALE( GAMESTATE->m_fSuperMeterGrowth[pnHuman], 0.25f, 2.f, 0.f, 7.f ); + int iHumanSuperIndex = (int)SCALE( GAMESTATE->m_fSuperMeterGrowthScale[pnHuman], 0.25f, 2.f, 0.f, 7.f ); CLAMP( iHumanSuperIndex, 0, 9 ); m_iSelectedOption[pnHuman][RO_CPU_SUPER] = iHumanSuperIndex; } @@ -86,11 +86,11 @@ void ScreenRaveOptions::ExportOptions() { if( GAMESTATE->IsHumanPlayer(p) ) { - GAMESTATE->m_fSuperMeterGrowth[p] = SCALE( m_iSelectedOption[p][RO_HUMAN_SUPER], 0.f, 7.f, 0.25f, 2.f ); + GAMESTATE->m_fSuperMeterGrowthScale[p] = SCALE( m_iSelectedOption[p][RO_HUMAN_SUPER], 0.f, 7.f, 0.25f, 2.f ); PlayerNumber pnCPU = OPPOSITE_PLAYER[p]; GAMESTATE->m_iCpuSkill[pnCPU] = m_iSelectedOption[p][RO_CPU_SKILL]; - GAMESTATE->m_fSuperMeterGrowth[pnCPU] = SCALE( m_iSelectedOption[p][RO_CPU_SUPER], 0, 7, 0.25f, 2.f ); + GAMESTATE->m_fSuperMeterGrowthScale[pnCPU] = SCALE( m_iSelectedOption[p][RO_CPU_SUPER], 0, 7, 0.25f, 2.f ); } } } diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index 04436048cb..c6e7059aa2 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -422,12 +422,13 @@ void SongManager::InitMachineScoresFromDisk() // course ranking ReadCourseRankingsFromFile( COURSE_RANKING_FILE ); + int c; // notes scores - for( int c=0; c -# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# Microsoft Developer Studio Generated Build File, Format Version 60000 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 @@ -61,7 +61,7 @@ LINK32=link.exe # SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib # Begin Special Build Tool IntDir=.\../Debug6 -TargetDir=\temp\stepmania +TargetDir=\stepmania\stepmania TargetName=StepMania-debug SOURCE="$(InputPath)" PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ @@ -100,7 +100,11 @@ XBCP=xbecopy.exe # ADD BASE XBCP /NOLOGO # ADD XBCP /NOLOGO # Begin Special Build Tool -PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +IntDir=.\StepMania___Xbox_Debug___VC6 +TargetDir=.\StepMania___Xbox_Debug___VC6 +TargetName=StepMania +SOURCE="$(InputPath)" +PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi # End Special Build Tool @@ -137,7 +141,7 @@ LINK32=link.exe # SUBTRACT LINK32 /verbose /pdb:none # Begin Special Build Tool IntDir=.\../Release6 -TargetDir=\temp\stepmania +TargetDir=\stepmania\stepmania TargetName=StepMania SOURCE="$(InputPath)" PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ @@ -1189,23 +1193,6 @@ SOURCE=.\RandomSample.h # End Source File # Begin Source File -SOURCE=.\RaveHelper.cpp - -!IF "$(CFG)" == "StepMania - Win32 Debug" - -!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" - -!ELSEIF "$(CFG)" == "StepMania - Win32 Release" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\RaveHelper.h -# End Source File -# Begin Source File - SOURCE=.\Song.cpp !IF "$(CFG)" == "StepMania - Win32 Debug" @@ -2293,6 +2280,40 @@ SOURCE=.\Background.h # End Source File # Begin Source File +SOURCE=.\CombinedLifeMeterEnemy.cpp + +!IF "$(CFG)" == "StepMania - Win32 Debug" + +!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" + +!ELSEIF "$(CFG)" == "StepMania - Win32 Release" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\CombinedLifeMeterEnemy.h +# End Source File +# Begin Source File + +SOURCE=.\CombinedLifeMeterTug.cpp + +!IF "$(CFG)" == "StepMania - Win32 Debug" + +!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" + +!ELSEIF "$(CFG)" == "StepMania - Win32 Release" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\CombinedLifeMeterTug.h +# End Source File +# Begin Source File + SOURCE=.\Combo.cpp !IF "$(CFG)" == "StepMania - Win32 Debug" @@ -2327,40 +2348,6 @@ SOURCE=.\DancingCharacters.h # End Source File # Begin Source File -SOURCE=.\EnemyFace.cpp - -!IF "$(CFG)" == "StepMania - Win32 Debug" - -!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" - -!ELSEIF "$(CFG)" == "StepMania - Win32 Release" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\EnemyFace.h -# End Source File -# Begin Source File - -SOURCE=.\EnemyHealth.cpp - -!IF "$(CFG)" == "StepMania - Win32 Debug" - -!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" - -!ELSEIF "$(CFG)" == "StepMania - Win32 Release" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\EnemyHealth.h -# End Source File -# Begin Source File - SOURCE=.\GhostArrow.cpp !IF "$(CFG)" == "StepMania - Win32 Debug" @@ -2497,19 +2484,6 @@ SOURCE=.\Judgment.h # End Source File # Begin Source File -SOURCE=.\LifeMeter.cpp - -!IF "$(CFG)" == "StepMania - Win32 Debug" - -!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" - -!ELSEIF "$(CFG)" == "StepMania - Win32 Release" - -!ENDIF - -# End Source File -# Begin Source File - SOURCE=.\LifeMeter.h # End Source File # Begin Source File @@ -2701,19 +2675,6 @@ SOURCE=.\ScoreDisplayRave.h # End Source File # Begin Source File -SOURCE=.\ScoreKeeper.cpp - -!IF "$(CFG)" == "StepMania - Win32 Debug" - -!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" - -!ELSEIF "$(CFG)" == "StepMania - Win32 Release" - -!ENDIF - -# End Source File -# Begin Source File - SOURCE=.\ScoreKeeper.h # End Source File # Begin Source File @@ -2735,6 +2696,23 @@ SOURCE=.\ScoreKeeperMAX2.h # End Source File # Begin Source File +SOURCE=.\ScoreKeeperRave.cpp + +!IF "$(CFG)" == "StepMania - Win32 Debug" + +!ELSEIF "$(CFG)" == "StepMania - Xbox Debug" + +!ELSEIF "$(CFG)" == "StepMania - Win32 Release" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ScoreKeeperRave.h +# End Source File +# Begin Source File + SOURCE=.\TimingAssist.cpp !IF "$(CFG)" == "StepMania - Win32 Debug" diff --git a/stepmania/src/arch/MovieTexture/MovieTexture.cpp b/stepmania/src/arch/MovieTexture/MovieTexture.cpp index e520baad73..6c1122be21 100644 --- a/stepmania/src/arch/MovieTexture/MovieTexture.cpp +++ b/stepmania/src/arch/MovieTexture/MovieTexture.cpp @@ -30,14 +30,15 @@ bool RageMovieTexture::GetFourCC( CString fn, CString &handler, CString &type ) f.seekg( 0x70, ios_base::beg ); type = " "; f.read((char *) type.c_str(), 4); - for(int i = 0; i < 4; ++i) + int i; + for( i = 0; i < 4; ++i) if(type[i] < 0x20 || type[i] > 0x7E) type[i] = '?'; f.seekg( 0xBC, ios_base::beg ); handler = " "; f.read((char *) handler.c_str(), 4); - for(int i = 0; i < 4; ++i) + for(i = 0; i < 4; ++i) if(handler[i] < 0x20 || handler[i] > 0x7E) handler[i] = '?'; } catch(ifstream::failure e) { LOG->Warn("error on %s: %s", fn.c_str(), e.what() );