ScoreKeeperMAX2:

- Jumps count as 2 toward combo, but 1 toward judgement totals
- Only Perfect or better increments combo in courses
This commit is contained in:
Chris Danford
2003-03-16 20:55:45 +00:00
parent 71d2fadb46
commit 9dbbb7949e
16 changed files with 185 additions and 161 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

+20 -111
View File
@@ -11,10 +11,6 @@
*/
#include "Combo.h"
#include "PrefsManager.h"
#include "ScreenManager.h"
#include "ScreenGameplay.h"
#include "GameState.h"
#include "ThemeManager.h"
@@ -51,14 +47,13 @@ Combo::Combo()
PULSE_ZOOM.Refresh();
C_TWEEN_SECONDS.Refresh();
Reset();
m_sprCombo.Load( THEME->GetPathTo("Graphics", "Combo label") );
m_sprCombo.EnableShadow( true );
m_sprCombo.StopAnimating();
m_sprCombo.SetXY( LABEL_X, LABEL_Y );
m_sprCombo.SetHorizAlign( (Actor::HorizAlign)(int)LABEL_HORIZ_ALIGN );
m_sprCombo.SetVertAlign( (Actor::VertAlign)(int)LABEL_VERT_ALIGN );
m_sprCombo.SetDiffuse( RageColor(1,1,1,0) ); // invisible
this->AddChild( &m_sprCombo );
m_textComboNumber.LoadFromNumbers( THEME->GetPathTo("Numbers","Combo numbers") );
@@ -66,117 +61,31 @@ Combo::Combo()
m_textComboNumber.SetXY( NUMBER_X, NUMBER_Y );
m_textComboNumber.SetHorizAlign( (Actor::HorizAlign)(int)NUMBER_HORIZ_ALIGN );
m_textComboNumber.SetVertAlign( (Actor::VertAlign)(int)NUMBER_VERT_ALIGN );
m_textComboNumber.SetDiffuse( RageColor(1,1,1,0) ); // invisible
this->AddChild( &m_textComboNumber );
}
void Combo::Reset()
void Combo::SetCombo( int iCombo )
{
m_iCurCombo = m_iMaxCombo = m_iCurComboOfPerfects = 0;
m_textComboNumber.SetDiffuse( RageColor(1,1,1,0) ); // invisible
m_sprCombo.SetDiffuse( RageColor(1,1,1,0) ); // invisible
}
void Combo::SetScore( TapNoteScore score, int iNumNotesInThisRow, Inventory* pInventory )
{
#ifndef DEBUG
if( PREFSMAN->m_bAutoPlay && !GAMESTATE->m_bDemonstrationOrJukebox ) // cheaters never prosper
if( iCombo >= (int)SHOW_COMBO_AT )
{
m_iCurCombo = 0;
m_iCurComboOfPerfects = 0;
return;
m_textComboNumber.SetDiffuse( RageColor(1,1,1,1) ); // visible
m_sprCombo.SetDiffuse( RageColor(1,1,1,1) ); // visible
m_textComboNumber.SetText( ssprintf("%d", iCombo) );
float fNumberZoom = SCALE(iCombo,0.f,(float)NUMBER_MAX_ZOOM_AT,(float)NUMBER_MIN_ZOOM,(float)NUMBER_MAX_ZOOM);
CLAMP( fNumberZoom, (float)NUMBER_MIN_ZOOM, (float)NUMBER_MAX_ZOOM );
m_textComboNumber.SetZoom( fNumberZoom * (float)PULSE_ZOOM );
m_textComboNumber.BeginTweening( C_TWEEN_SECONDS );
m_textComboNumber.SetTweenZoom( fNumberZoom );
m_sprCombo.SetZoom( PULSE_ZOOM );
m_sprCombo.BeginTweening( C_TWEEN_SECONDS );
m_sprCombo.SetTweenZoom( 1 );
}
#endif //DEBUG
// combo of marvelous/perfect
switch( score )
else
{
case TNS_MARVELOUS:
case TNS_PERFECT:
m_iCurComboOfPerfects += iNumNotesInThisRow;
if( m_iCurComboOfPerfects==250 && !GAMESTATE->m_bDemonstrationOrJukebox )
SCREENMAN->SendMessageToTopScreen( SM_PlayToasty, 0 );
break;
default:
m_iCurComboOfPerfects = 0;
break;
}
// combo of marvelous/perfect/great
switch( score )
{
case TNS_MARVELOUS:
case TNS_PERFECT:
case TNS_GREAT:
{
int iOldCombo = m_iCurCombo;
m_iCurCombo += iNumNotesInThisRow; // continue combo
#define CROSSED( i ) (iOldCombo<i && i<=m_iCurCombo)
if ( CROSSED(100) ) SCREENMAN->SendMessageToTopScreen( SM_100Combo, 0 );
else if( CROSSED(200) ) SCREENMAN->SendMessageToTopScreen( SM_200Combo, 0 );
else if( CROSSED(300) ) SCREENMAN->SendMessageToTopScreen( SM_300Combo, 0 );
else if( CROSSED(400) ) SCREENMAN->SendMessageToTopScreen( SM_400Combo, 0 );
else if( CROSSED(500) ) SCREENMAN->SendMessageToTopScreen( SM_500Combo, 0 );
else if( CROSSED(600) ) SCREENMAN->SendMessageToTopScreen( SM_600Combo, 0 );
else if( CROSSED(700) ) SCREENMAN->SendMessageToTopScreen( SM_700Combo, 0 );
else if( CROSSED(800) ) SCREENMAN->SendMessageToTopScreen( SM_800Combo, 0 );
else if( CROSSED(900) ) SCREENMAN->SendMessageToTopScreen( SM_900Combo, 0 );
else if( CROSSED(1000)) SCREENMAN->SendMessageToTopScreen( SM_1000Combo, 0 );
// new max combo
m_iMaxCombo = max(m_iMaxCombo, m_iCurCombo);
if( m_iCurCombo >= (int)SHOW_COMBO_AT )
{
m_textComboNumber.SetDiffuse( RageColor(1,1,1,1) ); // visible
m_sprCombo.SetDiffuse( RageColor(1,1,1,1) ); // visible
m_textComboNumber.SetText( ssprintf("%d", m_iCurCombo) );
float fNumberZoom = SCALE(m_iCurCombo,0.f,(float)NUMBER_MAX_ZOOM_AT,(float)NUMBER_MIN_ZOOM,(float)NUMBER_MAX_ZOOM);
CLAMP( fNumberZoom, (float)NUMBER_MIN_ZOOM, (float)NUMBER_MAX_ZOOM );
m_textComboNumber.SetZoom( fNumberZoom * (float)PULSE_ZOOM );
m_textComboNumber.BeginTweening( C_TWEEN_SECONDS );
m_textComboNumber.SetTweenZoom( fNumberZoom );
m_sprCombo.SetZoom( PULSE_ZOOM );
m_sprCombo.BeginTweening( C_TWEEN_SECONDS );
m_sprCombo.SetTweenZoom( 1 );
}
else
{
m_textComboNumber.SetDiffuse( RageColor(1,1,1,0) ); // invisible
m_sprCombo.SetDiffuse( RageColor(1,1,1,0) ); // invisible
}
}
break;
case TNS_GOOD:
case TNS_BOO:
case TNS_MISS:
{
// don't play "combo stopped" in battle
switch( GAMESTATE->m_PlayMode )
{
case PLAY_MODE_BATTLE:
if( pInventory )
pInventory->OnComboBroken( m_PlayerNumber, m_iCurCombo );
default:
if( m_iCurCombo>50 )
SCREENMAN->SendMessageToTopScreen( SM_ComboStopped, 0 );
}
m_iCurCombo = 0;
m_textComboNumber.SetDiffuse( RageColor(1,1,1,0) ); // invisible
m_sprCombo.SetDiffuse( RageColor(1,1,1,0) ); // invisible
}
break;
default:
ASSERT(0);
m_textComboNumber.SetDiffuse( RageColor(1,1,1,0) ); // invisible
m_sprCombo.SetDiffuse( RageColor(1,1,1,0) ); // invisible
}
}
+1 -9
View File
@@ -26,19 +26,11 @@ public:
void Init( PlayerNumber pn ) { m_PlayerNumber = pn; }
void SetScore( TapNoteScore score, int iNumNotesInThisRow, Inventory* pInventory );
int GetCurrentCombo() const { return m_iCurCombo; }
int GetMaxCombo() const { return m_iMaxCombo; }
void Reset();
void SetCombo( int iCombo );
protected:
PlayerNumber m_PlayerNumber;
int m_iCurCombo;
int m_iMaxCombo;
int m_iCurComboOfPerfects;
Sprite m_sprCombo;
BitmapText m_textComboNumber;
};
+7 -10
View File
@@ -61,11 +61,6 @@ Player::Player()
this->AddChild( &m_HoldJudgment[c] );
}
int Player::GetPlayersMaxCombo()
{
return( m_Combo.GetMaxCombo() );
}
Player::~Player()
{
}
@@ -490,7 +485,10 @@ void Player::OnRowDestroyed( TapNoteScore lastScore, int iIndexThatWasSteppedOn
case TNS_GREAT:
case TNS_PERFECT:
case TNS_MARVELOUS:
m_GhostArrowRow.TapNote( c, score, m_Combo.GetCurrentCombo()>(int)BRIGHT_GHOST_COMBO_THRESHOLD);
{
bool bBright = GAMESTATE->m_CurStageStats.iCurCombo[m_PlayerNumber]>(int)BRIGHT_GHOST_COMBO_THRESHOLD;
m_GhostArrowRow.TapNote( c, score, bBright );
}
break;
}
}
@@ -499,8 +497,7 @@ void Player::OnRowDestroyed( TapNoteScore lastScore, int iIndexThatWasSteppedOn
if( iNumNotesInThisRow > 0 )
{
HandleTapRowScore( score, iNumNotesInThisRow ); // update score
m_Combo.SetScore( score, iNumNotesInThisRow, m_pInventory );
GAMESTATE->m_CurStageStats.iMaxCombo[m_PlayerNumber] = max( GAMESTATE->m_CurStageStats.iMaxCombo[m_PlayerNumber], m_Combo.GetCurrentCombo() );
m_Combo.SetCombo( GAMESTATE->m_CurStageStats.iCurCombo[m_PlayerNumber] );
}
m_Judgment.SetJudgment( score );
@@ -541,7 +538,7 @@ int Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds )
if( iNumMissesThisRow > 0 )
{
HandleTapRowScore( TNS_MISS, iNumMissesThisRow );
m_Combo.SetScore( TNS_MISS, iNumMissesThisRow, m_pInventory );
m_Combo.SetCombo( GAMESTATE->m_CurStageStats.iCurCombo[m_PlayerNumber] );
}
}
@@ -580,7 +577,7 @@ void Player::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow )
#endif //DEBUG
if(m_pScoreKeeper)
m_pScoreKeeper->HandleTapRowScore(scoreOfLastTap, iNumTapsInRow);
m_pScoreKeeper->HandleTapRowScore(scoreOfLastTap, iNumTapsInRow, m_pInventory);
if (m_pScore)
m_pScore->SetScore(GAMESTATE->m_CurStageStats.fScore[m_PlayerNumber]);
-1
View File
@@ -48,7 +48,6 @@ public:
void Load( PlayerNumber player_no, NoteData* pNoteData, LifeMeter* pLM, ScoreDisplay* pScore, Inventory* pInventory, ScoreKeeper* pScoreKeeper );
void CrossedRow( int iNoteRow );
void Step( int col );
int GetPlayersMaxCombo();
void FadeToFail();
+1 -1
View File
@@ -24,7 +24,7 @@ ScoreDisplayOni::ScoreDisplayOni()
LOG->Trace( "ScoreDisplayOni::ScoreDisplayOni()" );
// init the text
m_text.LoadFromNumbers( THEME->GetPathTo("Numbers","gameplay score numbers") );
m_text.LoadFromNumbers( THEME->GetPathTo("Numbers","ScoreDisplayOni numbers") );
m_text.EnableShadow( false );
this->AddChild( &m_text );
}
+3 -1
View File
@@ -22,6 +22,8 @@
#include "PlayerNumber.h"
#include "GameConstantsAndTypes.h" // for TapNoteScore and HoldNoteScore
class NoteData;
class Inventory;
class ScoreKeeper: public Actor
{
@@ -38,7 +40,7 @@ public:
ScoreKeeper(PlayerNumber pn) { m_PlayerNumber=pn; }
virtual void DrawPrimitives() { }
virtual void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow ) = 0;
virtual void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow, Inventory* pInventory ) = 0;
virtual void HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ) = 0;
virtual int TapNoteScoreToDancePoints( TapNoteScore tns ) = 0;
+119 -14
View File
@@ -13,31 +13,43 @@
#include "GameState.h"
#include "PrefsManager.h"
#include "Notes.h"
#include "PrefsManager.h"
#include "ScreenManager.h"
#include "ScreenGameplay.h"
#include "GameState.h"
ScoreKeeperMAX2::ScoreKeeperMAX2(Notes *notes, PlayerNumber pn_):
ScoreKeeper(pn_)
{
// Stats_DoublesCount = true;
if( notes )
{
NoteData noteData;
notes->GetNoteData( &noteData );
NoteData noteData;
notes->GetNoteData( &noteData );
int Meter = notes->GetMeter();
Meter = min(Meter, 10);
int Meter = notes? notes->GetMeter() : 5;
Meter = min(Meter, 10);
int N = noteData.GetNumRowsWithTaps() + noteData.GetNumHoldNotes();
int sum = (N * (N + 1)) / 2;
int N = noteData.GetNumRowsWithTaps() + noteData.GetNumHoldNotes();
int sum = (N * (N + 1)) / 2;
if(sum)
m_fScoreMultiplier = float(Meter * 1000000) / sum;
else /* avoid div/0 on empty songs */
m_fScoreMultiplier = 0.f;
if(sum)
m_fScoreMultiplier = float(Meter * 1000000) / sum;
else /* avoid div/0 on empty songs */
ASSERT(m_fScoreMultiplier >= 0.0);
}
else
{
ASSERT( GAMESTATE->IsCourseMode() );
m_fScoreMultiplier = 0.f;
ASSERT(m_fScoreMultiplier >= 0.0);
}
m_iTapNotesHit = 0;
m_lScore = 0;
m_iCurToastyCombo = 0;
}
void ScoreKeeperMAX2::AddScore( TapNoteScore score )
@@ -59,7 +71,7 @@ void ScoreKeeperMAX2::AddScore( TapNoteScore score )
GAMESTATE->m_CurStageStats.fScore[m_PlayerNumber] = m_lScore * m_fScoreMultiplier;
}
void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow )
void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow, Inventory* pInventory )
{
ASSERT( iNumTapsInRow >= 1 );
@@ -106,6 +118,99 @@ void ScoreKeeperMAX2::HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTa
*/
// for( int i=0; i<iNumTapsInRow; i++ )
AddScore( scoreOfLastTap ); // only score once per row
//
// handle combo logic
//
#ifndef DEBUG
if( PREFSMAN->m_bAutoPlay && !GAMESTATE->m_bDemonstrationOrJukebox ) // cheaters never prosper
{
m_iCurComboOfPerfects = 0;
return;
}
#endif //DEBUG
// combo of marvelous/perfect
switch( scoreOfLastTap )
{
case TNS_MARVELOUS:
case TNS_PERFECT:
m_iCurToastyCombo += iNumTapsInRow;
if( m_iCurToastyCombo==250 && !GAMESTATE->m_bDemonstrationOrJukebox )
SCREENMAN->SendMessageToTopScreen( SM_PlayToasty, 0 );
break;
default:
m_iCurToastyCombo = 0;
break;
}
int &iCurCombo = GAMESTATE->m_CurStageStats.iCurCombo[m_PlayerNumber];
switch( scoreOfLastTap )
{
case TNS_MARVELOUS:
case TNS_PERFECT:
case TNS_GREAT:
{
int iOldCombo = iCurCombo;
if( GAMESTATE->IsCourseMode() )
{
switch( scoreOfLastTap )
{
case TNS_MARVELOUS:
case TNS_PERFECT:
iCurCombo += iNumTapsInRow;
break;
case TNS_GREAT:
int aosid = 4;
break;
}
}
else
iCurCombo += iNumTapsInRow;
#define CROSSED( i ) (iOldCombo<i && i<=iCurCombo)
if ( CROSSED(100) ) SCREENMAN->SendMessageToTopScreen( SM_100Combo, 0 );
else if( CROSSED(200) ) SCREENMAN->SendMessageToTopScreen( SM_200Combo, 0 );
else if( CROSSED(300) ) SCREENMAN->SendMessageToTopScreen( SM_300Combo, 0 );
else if( CROSSED(400) ) SCREENMAN->SendMessageToTopScreen( SM_400Combo, 0 );
else if( CROSSED(500) ) SCREENMAN->SendMessageToTopScreen( SM_500Combo, 0 );
else if( CROSSED(600) ) SCREENMAN->SendMessageToTopScreen( SM_600Combo, 0 );
else if( CROSSED(700) ) SCREENMAN->SendMessageToTopScreen( SM_700Combo, 0 );
else if( CROSSED(800) ) SCREENMAN->SendMessageToTopScreen( SM_800Combo, 0 );
else if( CROSSED(900) ) SCREENMAN->SendMessageToTopScreen( SM_900Combo, 0 );
else if( CROSSED(1000)) SCREENMAN->SendMessageToTopScreen( SM_1000Combo, 0 );
// new max combo
GAMESTATE->m_CurStageStats.iMaxCombo[m_PlayerNumber] = max(GAMESTATE->m_CurStageStats.iMaxCombo[m_PlayerNumber], iCurCombo);
}
break;
case TNS_GOOD:
case TNS_BOO:
case TNS_MISS:
{
// don't play "combo stopped" in battle
switch( GAMESTATE->m_PlayMode )
{
case PLAY_MODE_BATTLE:
if( pInventory )
pInventory->OnComboBroken( m_PlayerNumber, iCurCombo );
default:
if( iCurCombo>50 )
SCREENMAN->SendMessageToTopScreen( SM_ComboStopped, 0 );
}
iCurCombo = 0;
}
break;
default:
ASSERT(0);
}
}
+3 -1
View File
@@ -22,12 +22,14 @@ class ScoreKeeperMAX2: public ScoreKeeper
float m_fScoreMultiplier;
int m_iTapNotesHit; // number of notes judged so far, needed by scoring
int m_iCurToastyCombo;
void AddScore( TapNoteScore score );
public:
ScoreKeeperMAX2(Notes *notes, PlayerNumber pn);
void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow );
void HandleTapRowScore( TapNoteScore scoreOfLastTap, int iNumTapsInRow, Inventory* pInventory );
void HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore );
int TapNoteScoreToDancePoints( TapNoteScore tns );
+3 -3
View File
@@ -175,7 +175,7 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration )
{
iTotalMeter += m_apCourseNotes[i]->GetMeter();
m_apCourseNotes[i]->GetNoteData( &notedata );
iTotalPossibleDancePoints += m_pScoreKeeper[p]->GetPossibleDancePoints( &notedata );
iTotalPossibleDancePoints += m_pScoreKeeper[GAMESTATE->m_MasterPlayerNumber]->GetPossibleDancePoints( &notedata );
}
GAMESTATE->m_CurStageStats.pSong = NULL;
@@ -346,7 +346,7 @@ ScreenGameplay::ScreenGameplay( bool bDemonstration )
m_MaxCombo.LoadFromNumbers( THEME->GetPathTo("Numbers","ScreenGameplay max combo numbers") );
m_MaxCombo.SetXY( MAXCOMBO_X, MAXCOMBO_Y );
m_MaxCombo.SetZoom( MAXCOMBO_ZOOM );
m_MaxCombo.SetText( ssprintf("%d", m_Player[GAMESTATE->m_MasterPlayerNumber].GetPlayersMaxCombo()) ); /* MAKE THIS WORK FOR BOTH PLAYERS! */
m_MaxCombo.SetText( ssprintf("%d", GAMESTATE->m_CurStageStats.iCurCombo[GAMESTATE->m_MasterPlayerNumber]) ); /* TODO: Make this work for both players */
this->AddChild( &m_MaxCombo );
for( p=0; p<NUM_PLAYERS; p++ )
@@ -798,7 +798,7 @@ void ScreenGameplay::Update( float fDeltaTime )
if( GAMESTATE->m_MasterPlayerNumber != PLAYER_INVALID )
m_MaxCombo.SetText( ssprintf("%d", m_Player[GAMESTATE->m_MasterPlayerNumber].GetPlayersMaxCombo()) ); /* MAKE THIS WORK FOR BOTH PLAYERS! */
m_MaxCombo.SetText( ssprintf("%d", GAMESTATE->m_CurStageStats.iCurCombo[GAMESTATE->m_MasterPlayerNumber]) ); /* MAKE THIS WORK FOR BOTH PLAYERS! */
//LOG->Trace( "m_fOffsetInBeats = %f, m_fBeatsPerSecond = %f, m_Music.GetPositionSeconds = %f", m_fOffsetInBeats, m_fBeatsPerSecond, m_Music.GetPositionSeconds() );
+20 -5
View File
@@ -121,7 +121,7 @@ ScreenSelectCourse::ScreenSelectCourse()
m_sprOptionsMessage.SetXY( CENTER_X, CENTER_Y );
m_sprOptionsMessage.SetZoomY( 0 );
m_sprOptionsMessage.SetDiffuse( RageColor(1,1,1,0) );
this->AddChild( &m_sprOptionsMessage );
// this->AddChild( &m_sprOptionsMessage ); // draw and update manually
m_soundSelect.Load( THEME->GetPathTo("Sounds","Common start") );
@@ -151,6 +151,13 @@ void ScreenSelectCourse::DrawPrimitives()
m_Menu.DrawBottomLayer();
Screen::DrawPrimitives();
m_Menu.DrawTopLayer();
m_sprOptionsMessage.Draw();
}
void ScreenSelectCourse::Update( float fDelta )
{
Screen::Update( fDelta );
m_sprOptionsMessage.Update( fDelta );
}
void ScreenSelectCourse::TweenOnScreen()
@@ -338,16 +345,24 @@ void ScreenSelectCourse::MenuStart( PlayerNumber pn )
m_bMadeChoice = true;
float fShowSeconds = m_Menu.m_Out.GetLengthSeconds();
// show "hold START for options"
m_sprOptionsMessage.SetDiffuse( RageColor(1,1,1,0) );
m_sprOptionsMessage.BeginTweening( 0.25f ); // fade in
m_sprOptionsMessage.BeginTweening( 0.15f ); // fade in
m_sprOptionsMessage.SetTweenZoomY( 1 );
m_sprOptionsMessage.SetTweenDiffuse( RageColor(1,1,1,1) );
m_sprOptionsMessage.BeginTweening( 2.0f ); // sleep
m_sprOptionsMessage.BeginTweening( 0.25f ); // fade out
m_sprOptionsMessage.BeginTweening( fShowSeconds-0.35f ); // sleep
m_sprOptionsMessage.BeginTweening( 0.15f ); // fade out
m_sprOptionsMessage.SetTweenDiffuse( RageColor(1,1,1,0) );
m_sprOptionsMessage.SetTweenZoomY( 0 );
this->SendScreenMessage( SM_AllowOptionsMenuRepeat, 0.75f );
/* Don't accept a held START for a little while, so it's not
* hit accidentally. Accept an initial START right away, though,
* so we don't ignore deliberate fast presses (which would be
* annoying). */
this->SendScreenMessage( SM_AllowOptionsMenuRepeat, 0.5f );
m_Menu.StartTransitioning( SM_GoToNextScreen );
+1
View File
@@ -27,6 +27,7 @@ public:
virtual ~ScreenSelectCourse();
virtual void DrawPrimitives();
virtual void Update( float fDelta );
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
virtual void HandleScreenMessage( const ScreenMessage SM );
+2 -2
View File
@@ -219,7 +219,7 @@ ScreenSelectMusic::ScreenSelectMusic()
m_sprLongBalloon.SetEffectBob( 2, RageVector3(0,10,0) );
this->AddChild( &m_sprLongBalloon );
m_sprOptionsMessage.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic options") );
m_sprOptionsMessage.Load( THEME->GetPathTo("Graphics","ScreenSelectMusic options message 1x2") );
m_sprOptionsMessage.StopAnimating();
m_sprOptionsMessage.SetXY( CENTER_X, CENTER_Y );
m_sprOptionsMessage.SetZoom( 1 );
@@ -228,7 +228,7 @@ ScreenSelectMusic::ScreenSelectMusic()
m_soundSelect.Load( THEME->GetPathTo("Sounds","Common start") );
m_soundChangeNotes.Load( THEME->GetPathTo("Sounds","ScreenSelectMusic notes") );
m_soundChangeNotes.Load( THEME->GetPathTo("Sounds","ScreenSelectMusic difficulty") );
m_soundOptionsChange.Load( THEME->GetPathTo("Sounds","ScreenSelectMusic options") );
m_soundLocked.Load( THEME->GetPathTo("Sounds","ScreenSelectMusic locked") );
+1
View File
@@ -37,6 +37,7 @@ void StageStats::operator+=( const StageStats& other )
iTapNoteScores[p][t] += other.iTapNoteScores[p][t];
for( int h=0; h<NUM_HOLD_NOTE_SCORES; h++ )
iHoldNoteScores[p][h] += other.iHoldNoteScores[p][h];
iCurCombo[p] += other.iCurCombo[p];
iMaxCombo[p] += other.iMaxCombo[p];
fScore[p] += other.fScore[p];
for( int r=0; r<NUM_RADAR_CATEGORIES; r++ )
+1
View File
@@ -32,6 +32,7 @@ struct StageStats
int iActualDancePoints[NUM_PLAYERS];
int iTapNoteScores[NUM_PLAYERS][NUM_TAP_NOTE_SCORES];
int iHoldNoteScores[NUM_PLAYERS][NUM_HOLD_NOTE_SCORES];
int iCurCombo[NUM_PLAYERS];
int iMaxCombo[NUM_PLAYERS];
float fScore[NUM_PLAYERS];
float fRadarPossible[NUM_PLAYERS][NUM_RADAR_CATEGORIES]; // filled in by ScreenGameplay on start of notes
+3 -3
View File
@@ -215,10 +215,10 @@ try_element_again:
* up resolving to the overridden background. */
/* Use GetPathToOptional because we don't want report that there's an element
* missing. Instead we want to report that the redirect is invalid. */
CString sPath = GetPathToOptional(sAssetCategory, sNewFileName);
CString sNewPath = GetPathToOptional(sAssetCategory, sNewFileName);
if( !sPath.empty() )
return sPath;
if( !sNewPath.empty() )
return sNewPath;
else
{
CString message = ssprintf(