[Xcode4] May as well fix switch warnings.
Still need some assistance for the linker error.
This commit is contained in:
+7
-6
@@ -722,12 +722,13 @@ void Actor::UpdateInternal( float fDeltaTime )
|
||||
// todo: account for SSC_FUTURES -aj
|
||||
switch( m_Effect )
|
||||
{
|
||||
case spin:
|
||||
m_current.rotation += m_fEffectDelta*m_vEffectMagnitude;
|
||||
wrap( m_current.rotation.x, 360 );
|
||||
wrap( m_current.rotation.y, 360 );
|
||||
wrap( m_current.rotation.z, 360 );
|
||||
break;
|
||||
case spin:
|
||||
m_current.rotation += m_fEffectDelta*m_vEffectMagnitude;
|
||||
wrap( m_current.rotation.x, 360 );
|
||||
wrap( m_current.rotation.y, 360 );
|
||||
wrap( m_current.rotation.z, 360 );
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
UpdateTweening( fDeltaTime );
|
||||
|
||||
@@ -189,11 +189,11 @@ void BGAnimationLayer::LoadFromAniLayerFile( const RString& sPath )
|
||||
|
||||
switch( effect )
|
||||
{
|
||||
case EFFECT_STRETCH_SCROLL_LEFT: m_fTexCoordVelocityX = +0.5f; m_fTexCoordVelocityY = 0; break;
|
||||
case EFFECT_STRETCH_SCROLL_RIGHT: m_fTexCoordVelocityX = -0.5f; m_fTexCoordVelocityY = 0; break;
|
||||
case EFFECT_STRETCH_SCROLL_UP: m_fTexCoordVelocityX = 0; m_fTexCoordVelocityY = +0.5f; break;
|
||||
case EFFECT_STRETCH_SCROLL_DOWN: m_fTexCoordVelocityX = 0; m_fTexCoordVelocityY = -0.5f; break;
|
||||
break;
|
||||
case EFFECT_STRETCH_SCROLL_LEFT: m_fTexCoordVelocityX = +0.5f; m_fTexCoordVelocityY = 0; break;
|
||||
case EFFECT_STRETCH_SCROLL_RIGHT: m_fTexCoordVelocityX = -0.5f; m_fTexCoordVelocityY = 0; break;
|
||||
case EFFECT_STRETCH_SCROLL_UP: m_fTexCoordVelocityX = 0; m_fTexCoordVelocityY = +0.5f; break;
|
||||
case EFFECT_STRETCH_SCROLL_DOWN: m_fTexCoordVelocityX = 0; m_fTexCoordVelocityY = -0.5f; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
+6
-4
@@ -429,12 +429,14 @@ bool Course::GetTrailUnsorted( StepsType st, CourseDifficulty cd, Trail &trail )
|
||||
{
|
||||
trail.Init();
|
||||
|
||||
// XXX: Why are beginner and challenge excluded here? -Wolfman2000
|
||||
switch( cd )
|
||||
{
|
||||
case Difficulty_Beginner:
|
||||
return false;
|
||||
case Difficulty_Challenge:
|
||||
return false;
|
||||
case Difficulty_Beginner:
|
||||
return false;
|
||||
case Difficulty_Challenge:
|
||||
return false;
|
||||
default: break;
|
||||
}
|
||||
|
||||
// Construct a new Trail, add it to the cache, then return it.
|
||||
|
||||
@@ -131,10 +131,11 @@ DancingCharacters::DancingCharacters(): m_bDrawDangerLight(false),
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pCharacter[p]->SetRotationY( MODEL_ROTATIONY_TWO_PLAYERS[p] );
|
||||
break;
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pCharacter[p]->SetRotationY( MODEL_ROTATIONY_TWO_PLAYERS[p] );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
m_pCharacter[p]->LoadMilkshapeAscii( pChar->GetModelPath() );
|
||||
|
||||
+4
-4
@@ -275,12 +275,12 @@ bool EditMenu::RowIsSelectable( EditMenuRow row )
|
||||
{
|
||||
switch( row )
|
||||
{
|
||||
case ROW_SOURCE_STEPS_TYPE:
|
||||
case ROW_SOURCE_STEPS:
|
||||
return false;
|
||||
case ROW_SOURCE_STEPS_TYPE:
|
||||
case ROW_SOURCE_STEPS:
|
||||
return false;
|
||||
default: return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+17
-17
@@ -465,22 +465,21 @@ static bool AreStyleAndPlayModeCompatible( const Style *style, PlayMode pm )
|
||||
|
||||
switch( pm )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
// Can't play rave if there isn't enough room for two players.
|
||||
// This is correct for dance (ie, no rave for solo and doubles),
|
||||
// and should be okay for pump.. not sure about other game types.
|
||||
// Techno Motion scales down versus arrows, though, so allow this.
|
||||
if( style->m_iColsPerPlayer >= 6 && RString(GAMESTATE->m_pCurGame->m_szName) != "techno" )
|
||||
return false;
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
// Can't play rave if there isn't enough room for two players.
|
||||
// This is correct for dance (ie, no rave for solo and doubles),
|
||||
// and should be okay for pump.. not sure about other game types.
|
||||
// Techno Motion scales down versus arrows, though, so allow this.
|
||||
if( style->m_iColsPerPlayer >= 6 && RString(GAMESTATE->m_pCurGame->m_szName) != "techno" )
|
||||
return false;
|
||||
|
||||
// Don't allow battle modes if the style takes both sides.
|
||||
if( style->m_StyleType==StyleType_OnePlayerTwoSides ||
|
||||
style->m_StyleType==StyleType_TwoPlayersSharedSides )
|
||||
return false;
|
||||
// Don't allow battle modes if the style takes both sides.
|
||||
if( style->m_StyleType==StyleType_OnePlayerTwoSides ||
|
||||
style->m_StyleType==StyleType_TwoPlayersSharedSides )
|
||||
return false;
|
||||
default: return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GameCommand::IsPlayable( RString *why ) const
|
||||
@@ -500,9 +499,10 @@ bool GameCommand::IsPlayable( RString *why ) const
|
||||
|
||||
switch( GAMESTATE->GetCoinMode() )
|
||||
{
|
||||
case CoinMode_Home:
|
||||
case CoinMode_Free:
|
||||
iCredits = NUM_PLAYERS; // not iNumCreditsPaid
|
||||
case CoinMode_Home:
|
||||
case CoinMode_Free:
|
||||
iCredits = NUM_PLAYERS; // not iNumCreditsPaid
|
||||
default: break;
|
||||
}
|
||||
|
||||
/* With PREFSMAN->m_bDelayedCreditsReconcile disabled, enough credits must
|
||||
|
||||
+19
-16
@@ -747,7 +747,9 @@ void GameState::CancelStage()
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
m_iPlayerStageTokens[p] = PREFSMAN->m_iSongsPerPlay;
|
||||
m_iPlayerStageTokens[p] = PREFSMAN->m_iSongsPerPlay;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1169,12 +1171,12 @@ bool GameState::IsPlayerEnabled( PlayerNumber pn ) const
|
||||
// In rave, all players are present. Non-human players are CPU controlled.
|
||||
switch( m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
return true;
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
return true;
|
||||
default:
|
||||
return IsHumanPlayer(pn);
|
||||
}
|
||||
|
||||
return IsHumanPlayer( pn );
|
||||
}
|
||||
|
||||
bool GameState::IsMultiPlayerEnabled( MultiPlayer mp ) const
|
||||
@@ -1346,16 +1348,17 @@ StageResult GameState::GetStageResult( PlayerNumber pn ) const
|
||||
{
|
||||
switch( m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
if( fabsf(m_fTugLifePercentP1 - 0.5f) < 0.0001f )
|
||||
return RESULT_DRAW;
|
||||
switch( pn )
|
||||
{
|
||||
case PLAYER_1: return (m_fTugLifePercentP1>=0.5f)?RESULT_WIN:RESULT_LOSE;
|
||||
case PLAYER_2: return (m_fTugLifePercentP1<0.5f)?RESULT_WIN:RESULT_LOSE;
|
||||
default: ASSERT(0); return RESULT_LOSE;
|
||||
}
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
if( fabsf(m_fTugLifePercentP1 - 0.5f) < 0.0001f )
|
||||
return RESULT_DRAW;
|
||||
switch( pn )
|
||||
{
|
||||
case PLAYER_1: return (m_fTugLifePercentP1>=0.5f)?RESULT_WIN:RESULT_LOSE;
|
||||
case PLAYER_2: return (m_fTugLifePercentP1<0.5f)?RESULT_WIN:RESULT_LOSE;
|
||||
default: FAIL_M("Invalid player for battle! Aborting..."); return RESULT_LOSE;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
StageResult win = RESULT_WIN;
|
||||
|
||||
+11
-8
@@ -72,16 +72,19 @@ void Inventory::Load( PlayerState* pPlayerState )
|
||||
// don't load battle sounds if they're not going to be used
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
m_soundAcquireItem.Load( THEME->GetPathS("Inventory","aquire item") );
|
||||
for( unsigned i=0; i<g_Items.size(); i++ )
|
||||
case PLAY_MODE_BATTLE:
|
||||
{
|
||||
RageSound* pSound = new RageSound;
|
||||
pSound->Load( THEME->GetPathS("Inventory",ssprintf("use item %u",i+1)) );
|
||||
m_vpSoundUseItem.push_back( pSound );
|
||||
m_soundAcquireItem.Load( THEME->GetPathS("Inventory","aquire item") );
|
||||
for( unsigned i=0; i<g_Items.size(); i++ )
|
||||
{
|
||||
RageSound* pSound = new RageSound;
|
||||
pSound->Load( THEME->GetPathS("Inventory",ssprintf("use item %u",i+1)) );
|
||||
m_vpSoundUseItem.push_back( pSound );
|
||||
}
|
||||
m_soundItemEnding.Load( THEME->GetPathS("Inventory","item ending") );
|
||||
break;
|
||||
}
|
||||
m_soundItemEnding.Load( THEME->GetPathS("Inventory","item ending") );
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -212,12 +212,13 @@ void LifeMeterBar::ChangeLife( float fDeltaLife )
|
||||
|
||||
switch( GAMESTATE->m_SongOptions.GetSong().m_DrainType )
|
||||
{
|
||||
case SongOptions::DRAIN_NORMAL:
|
||||
case SongOptions::DRAIN_NO_RECOVER:
|
||||
if( fDeltaLife > 0 )
|
||||
fDeltaLife *= m_fLifeDifficulty;
|
||||
else
|
||||
fDeltaLife /= m_fLifeDifficulty;
|
||||
case SongOptions::DRAIN_NORMAL:
|
||||
case SongOptions::DRAIN_NO_RECOVER:
|
||||
if( fDeltaLife > 0 )
|
||||
fDeltaLife *= m_fLifeDifficulty;
|
||||
else
|
||||
fDeltaLife /= m_fLifeDifficulty;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+32
-30
@@ -449,22 +449,23 @@ void MemoryCardManager::CheckStateChanges()
|
||||
{
|
||||
switch( new_device.m_State )
|
||||
{
|
||||
case UsbStorageDevice::STATE_NONE:
|
||||
state = MemoryCardState_NoCard;
|
||||
break;
|
||||
case UsbStorageDevice::STATE_NONE:
|
||||
state = MemoryCardState_NoCard;
|
||||
break;
|
||||
|
||||
case UsbStorageDevice::STATE_CHECKING:
|
||||
state = MemoryCardState_Checking;
|
||||
break;
|
||||
case UsbStorageDevice::STATE_CHECKING:
|
||||
state = MemoryCardState_Checking;
|
||||
break;
|
||||
|
||||
case UsbStorageDevice::STATE_ERROR:
|
||||
state = MemoryCardState_Error;
|
||||
sError = new_device.m_sError;
|
||||
break;
|
||||
case UsbStorageDevice::STATE_ERROR:
|
||||
state = MemoryCardState_Error;
|
||||
sError = new_device.m_sError;
|
||||
break;
|
||||
|
||||
case UsbStorageDevice::STATE_READY:
|
||||
state = MemoryCardState_Ready;
|
||||
break;
|
||||
case UsbStorageDevice::STATE_READY:
|
||||
state = MemoryCardState_Ready;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,23 +477,24 @@ void MemoryCardManager::CheckStateChanges()
|
||||
params.m_bIsCriticalSound = true;
|
||||
switch( state )
|
||||
{
|
||||
case MemoryCardState_NoCard:
|
||||
case MemoryCardState_Removed:
|
||||
if( LastState == MemoryCardState_Ready )
|
||||
{
|
||||
m_soundDisconnect.Play( ¶ms );
|
||||
MESSAGEMAN->Broadcast( (MessageID)(Message_CardRemovedP1+p) );
|
||||
}
|
||||
break;
|
||||
case MemoryCardState_Ready:
|
||||
m_soundReady.Play( ¶ms );
|
||||
break;
|
||||
case MemoryCardState_TooLate:
|
||||
m_soundTooLate.Play( ¶ms );
|
||||
break;
|
||||
case MemoryCardState_Error:
|
||||
m_soundError.Play( ¶ms );
|
||||
break;
|
||||
case MemoryCardState_NoCard:
|
||||
case MemoryCardState_Removed:
|
||||
if( LastState == MemoryCardState_Ready )
|
||||
{
|
||||
m_soundDisconnect.Play( ¶ms );
|
||||
MESSAGEMAN->Broadcast( (MessageID)(Message_CardRemovedP1+p) );
|
||||
}
|
||||
break;
|
||||
case MemoryCardState_Ready:
|
||||
m_soundReady.Play( ¶ms );
|
||||
break;
|
||||
case MemoryCardState_TooLate:
|
||||
m_soundTooLate.Play( ¶ms );
|
||||
break;
|
||||
case MemoryCardState_Error:
|
||||
m_soundError.Play( ¶ms );
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
m_State[p] = state;
|
||||
|
||||
+173
-171
@@ -42,23 +42,23 @@ static SortOrder ForceAppropriateSort( PlayMode pm, SortOrder so )
|
||||
{
|
||||
switch( pm )
|
||||
{
|
||||
// in course modes, force a particular sort
|
||||
case PLAY_MODE_ONI: return SORT_ONI_COURSES;
|
||||
case PLAY_MODE_NONSTOP: return SORT_NONSTOP_COURSES;
|
||||
case PLAY_MODE_ENDLESS: return SORT_ENDLESS_COURSES;
|
||||
// in course modes, force a particular sort
|
||||
case PLAY_MODE_ONI: return SORT_ONI_COURSES;
|
||||
case PLAY_MODE_NONSTOP: return SORT_NONSTOP_COURSES;
|
||||
case PLAY_MODE_ENDLESS: return SORT_ENDLESS_COURSES;
|
||||
default: break;
|
||||
}
|
||||
|
||||
// If we're not in a course mode, don't start in a course sort.
|
||||
switch( so )
|
||||
{
|
||||
case SORT_ONI_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
case SORT_ENDLESS_COURSES:
|
||||
so = SortOrder_Invalid;
|
||||
break;
|
||||
case SORT_ONI_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
case SORT_ENDLESS_COURSES:
|
||||
so = SortOrder_Invalid;
|
||||
default:
|
||||
return so;
|
||||
}
|
||||
|
||||
return so;
|
||||
}
|
||||
|
||||
MusicWheelItem *MusicWheel::MakeItem()
|
||||
@@ -490,7 +490,7 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
{
|
||||
switch( so )
|
||||
{
|
||||
case SORT_MODE_MENU:
|
||||
case SORT_MODE_MENU:
|
||||
{
|
||||
arrayWheelItemDatas.clear(); // clear out the previous wheel items
|
||||
vector<RString> vsNames;
|
||||
@@ -510,22 +510,22 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SORT_PREFERRED:
|
||||
case SORT_ROULETTE:
|
||||
case SORT_GROUP:
|
||||
case SORT_TITLE:
|
||||
case SORT_BPM:
|
||||
case SORT_POPULARITY:
|
||||
case SORT_TOP_GRADES:
|
||||
case SORT_ARTIST:
|
||||
case SORT_GENRE:
|
||||
case SORT_BEGINNER_METER:
|
||||
case SORT_EASY_METER:
|
||||
case SORT_MEDIUM_METER:
|
||||
case SORT_HARD_METER:
|
||||
case SORT_CHALLENGE_METER:
|
||||
case SORT_LENGTH:
|
||||
case SORT_RECENT:
|
||||
case SORT_PREFERRED:
|
||||
case SORT_ROULETTE:
|
||||
case SORT_GROUP:
|
||||
case SORT_TITLE:
|
||||
case SORT_BPM:
|
||||
case SORT_POPULARITY:
|
||||
case SORT_TOP_GRADES:
|
||||
case SORT_ARTIST:
|
||||
case SORT_GENRE:
|
||||
case SORT_BEGINNER_METER:
|
||||
case SORT_EASY_METER:
|
||||
case SORT_MEDIUM_METER:
|
||||
case SORT_HARD_METER:
|
||||
case SORT_CHALLENGE_METER:
|
||||
case SORT_LENGTH:
|
||||
case SORT_RECENT:
|
||||
{
|
||||
// Make an array of Song*, then sort them
|
||||
vector<Song*> arraySongs;
|
||||
@@ -536,72 +536,72 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
// sort the songs
|
||||
switch( so )
|
||||
{
|
||||
case SORT_PREFERRED:
|
||||
// obey order specified by the preferred sort list
|
||||
break;
|
||||
case SORT_ROULETTE:
|
||||
{
|
||||
StepsType st;
|
||||
Difficulty dc;
|
||||
SongUtil::GetStepsTypeAndDifficultyFromSortOrder( SORT_EASY_METER, st, dc );
|
||||
SongUtil::SortSongPointerArrayByStepsTypeAndMeter( arraySongs, st, dc );
|
||||
if( (bool)PREFSMAN->m_bPreferredSortUsesGroups )
|
||||
stable_sort( arraySongs.begin(), arraySongs.end(), SongUtil::CompareSongPointersByGroup );
|
||||
bUseSections = false;
|
||||
break;
|
||||
}
|
||||
case SORT_GROUP:
|
||||
SongUtil::SortSongPointerArrayByGroupAndTitle( arraySongs );
|
||||
if(USE_SECTIONS_WITH_PREFERRED_GROUP)
|
||||
bUseSections = true;
|
||||
else
|
||||
bUseSections = GAMESTATE->m_sPreferredSongGroup == GROUP_ALL;
|
||||
break;
|
||||
case SORT_TITLE:
|
||||
SongUtil::SortSongPointerArrayByTitle( arraySongs );
|
||||
break;
|
||||
case SORT_BPM:
|
||||
SongUtil::SortSongPointerArrayByBPM( arraySongs );
|
||||
break;
|
||||
case SORT_POPULARITY:
|
||||
if( (int) arraySongs.size() > MOST_PLAYED_SONGS_TO_SHOW )
|
||||
arraySongs.erase( arraySongs.begin()+MOST_PLAYED_SONGS_TO_SHOW, arraySongs.end() );
|
||||
bUseSections = false;
|
||||
break;
|
||||
case SORT_TOP_GRADES:
|
||||
SongUtil::SortSongPointerArrayByGrades( arraySongs, true );
|
||||
break;
|
||||
case SORT_ARTIST:
|
||||
SongUtil::SortSongPointerArrayByArtist( arraySongs );
|
||||
break;
|
||||
case SORT_GENRE:
|
||||
SongUtil::SortSongPointerArrayByGenre( arraySongs );
|
||||
break;
|
||||
case SORT_LENGTH:
|
||||
SongUtil::SortSongPointerArrayByLength( arraySongs );
|
||||
break;
|
||||
case SORT_RECENT:
|
||||
SongUtil::SortByMostRecentlyPlayedForMachine( arraySongs );
|
||||
if( (int) arraySongs.size() > RECENT_SONGS_TO_SHOW )
|
||||
arraySongs.erase( arraySongs.begin()+RECENT_SONGS_TO_SHOW, arraySongs.end() );
|
||||
bUseSections = false;
|
||||
break;
|
||||
case SORT_BEGINNER_METER:
|
||||
case SORT_EASY_METER:
|
||||
case SORT_MEDIUM_METER:
|
||||
case SORT_HARD_METER:
|
||||
case SORT_CHALLENGE_METER:
|
||||
case SORT_DOUBLE_EASY_METER:
|
||||
case SORT_DOUBLE_MEDIUM_METER:
|
||||
case SORT_DOUBLE_HARD_METER:
|
||||
case SORT_DOUBLE_CHALLENGE_METER:
|
||||
StepsType st;
|
||||
Difficulty dc;
|
||||
SongUtil::GetStepsTypeAndDifficultyFromSortOrder( so, st, dc );
|
||||
SongUtil::SortSongPointerArrayByStepsTypeAndMeter( arraySongs, st, dc );
|
||||
break;
|
||||
default:
|
||||
ASSERT(0); // unhandled SortOrder
|
||||
case SORT_PREFERRED:
|
||||
// obey order specified by the preferred sort list
|
||||
break;
|
||||
case SORT_ROULETTE:
|
||||
{
|
||||
StepsType st;
|
||||
Difficulty dc;
|
||||
SongUtil::GetStepsTypeAndDifficultyFromSortOrder( SORT_EASY_METER, st, dc );
|
||||
SongUtil::SortSongPointerArrayByStepsTypeAndMeter( arraySongs, st, dc );
|
||||
if( (bool)PREFSMAN->m_bPreferredSortUsesGroups )
|
||||
stable_sort( arraySongs.begin(), arraySongs.end(), SongUtil::CompareSongPointersByGroup );
|
||||
bUseSections = false;
|
||||
break;
|
||||
}
|
||||
case SORT_GROUP:
|
||||
SongUtil::SortSongPointerArrayByGroupAndTitle( arraySongs );
|
||||
if(USE_SECTIONS_WITH_PREFERRED_GROUP)
|
||||
bUseSections = true;
|
||||
else
|
||||
bUseSections = GAMESTATE->m_sPreferredSongGroup == GROUP_ALL;
|
||||
break;
|
||||
case SORT_TITLE:
|
||||
SongUtil::SortSongPointerArrayByTitle( arraySongs );
|
||||
break;
|
||||
case SORT_BPM:
|
||||
SongUtil::SortSongPointerArrayByBPM( arraySongs );
|
||||
break;
|
||||
case SORT_POPULARITY:
|
||||
if( (int) arraySongs.size() > MOST_PLAYED_SONGS_TO_SHOW )
|
||||
arraySongs.erase( arraySongs.begin()+MOST_PLAYED_SONGS_TO_SHOW, arraySongs.end() );
|
||||
bUseSections = false;
|
||||
break;
|
||||
case SORT_TOP_GRADES:
|
||||
SongUtil::SortSongPointerArrayByGrades( arraySongs, true );
|
||||
break;
|
||||
case SORT_ARTIST:
|
||||
SongUtil::SortSongPointerArrayByArtist( arraySongs );
|
||||
break;
|
||||
case SORT_GENRE:
|
||||
SongUtil::SortSongPointerArrayByGenre( arraySongs );
|
||||
break;
|
||||
case SORT_LENGTH:
|
||||
SongUtil::SortSongPointerArrayByLength( arraySongs );
|
||||
break;
|
||||
case SORT_RECENT:
|
||||
SongUtil::SortByMostRecentlyPlayedForMachine( arraySongs );
|
||||
if( (int) arraySongs.size() > RECENT_SONGS_TO_SHOW )
|
||||
arraySongs.erase( arraySongs.begin()+RECENT_SONGS_TO_SHOW, arraySongs.end() );
|
||||
bUseSections = false;
|
||||
break;
|
||||
case SORT_BEGINNER_METER:
|
||||
case SORT_EASY_METER:
|
||||
case SORT_MEDIUM_METER:
|
||||
case SORT_HARD_METER:
|
||||
case SORT_CHALLENGE_METER:
|
||||
case SORT_DOUBLE_EASY_METER:
|
||||
case SORT_DOUBLE_MEDIUM_METER:
|
||||
case SORT_DOUBLE_HARD_METER:
|
||||
case SORT_DOUBLE_CHALLENGE_METER:
|
||||
StepsType st;
|
||||
Difficulty dc;
|
||||
SongUtil::GetStepsTypeAndDifficultyFromSortOrder( so, st, dc );
|
||||
SongUtil::SortSongPointerArrayByStepsTypeAndMeter( arraySongs, st, dc );
|
||||
break;
|
||||
default:
|
||||
FAIL_M("Unhandled sort order! Aborting...");
|
||||
}
|
||||
|
||||
// Build an array of WheelItemDatas from the sorted list of Song*'s
|
||||
@@ -610,13 +610,15 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
|
||||
switch( PREFSMAN->m_MusicWheelUsesSections )
|
||||
{
|
||||
case MusicWheelUsesSections_NEVER:
|
||||
bUseSections = false;
|
||||
break;
|
||||
case MusicWheelUsesSections_ABC_ONLY:
|
||||
if( so != SORT_TITLE && so != SORT_GROUP )
|
||||
case MusicWheelUsesSections_NEVER:
|
||||
bUseSections = false;
|
||||
break;
|
||||
break;
|
||||
case MusicWheelUsesSections_ABC_ONLY:
|
||||
if( so != SORT_TITLE && so != SORT_GROUP )
|
||||
bUseSections = false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if( bUseSections )
|
||||
@@ -630,13 +632,13 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
/* We're using sections, so use the section name as the top-level sort. */
|
||||
switch( so )
|
||||
{
|
||||
case SORT_PREFERRED:
|
||||
case SORT_TOP_GRADES:
|
||||
case SORT_BPM:
|
||||
break; // don't sort by section
|
||||
default:
|
||||
SongUtil::SortSongPointerArrayBySectionName(arraySongs, so);
|
||||
break;
|
||||
case SORT_PREFERRED:
|
||||
case SORT_TOP_GRADES:
|
||||
case SORT_BPM:
|
||||
break; // don't sort by section
|
||||
default:
|
||||
SongUtil::SortSongPointerArrayBySectionName(arraySongs, so);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -731,10 +733,10 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SORT_ALL_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
case SORT_ONI_COURSES:
|
||||
case SORT_ENDLESS_COURSES:
|
||||
case SORT_ALL_COURSES:
|
||||
case SORT_NONSTOP_COURSES:
|
||||
case SORT_ONI_COURSES:
|
||||
case SORT_ENDLESS_COURSES:
|
||||
{
|
||||
bool bOnlyPreferred = PREFSMAN->m_CourseSortOrder == COURSE_SORT_PREFERRED;
|
||||
|
||||
@@ -769,21 +771,21 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
|
||||
switch( PREFSMAN->m_CourseSortOrder )
|
||||
{
|
||||
case COURSE_SORT_SONGS:
|
||||
CourseUtil::SortCoursePointerArrayByDifficulty( apCourses );
|
||||
break;
|
||||
case COURSE_SORT_PREFERRED:
|
||||
break;
|
||||
case COURSE_SORT_METER:
|
||||
CourseUtil::SortCoursePointerArrayByAvgDifficulty( apCourses );
|
||||
break;
|
||||
case COURSE_SORT_METER_SUM:
|
||||
CourseUtil::SortCoursePointerArrayByTotalDifficulty( apCourses );
|
||||
break;
|
||||
case COURSE_SORT_RANK:
|
||||
CourseUtil::SortCoursePointerArrayByRanking( apCourses );
|
||||
break;
|
||||
default: ASSERT(0);
|
||||
case COURSE_SORT_SONGS:
|
||||
CourseUtil::SortCoursePointerArrayByDifficulty( apCourses );
|
||||
break;
|
||||
case COURSE_SORT_PREFERRED:
|
||||
break;
|
||||
case COURSE_SORT_METER:
|
||||
CourseUtil::SortCoursePointerArrayByAvgDifficulty( apCourses );
|
||||
break;
|
||||
case COURSE_SORT_METER_SUM:
|
||||
CourseUtil::SortCoursePointerArrayByTotalDifficulty( apCourses );
|
||||
break;
|
||||
case COURSE_SORT_RANK:
|
||||
CourseUtil::SortCoursePointerArrayByRanking( apCourses );
|
||||
break;
|
||||
default: FAIL_M("Impossible to sort the courses! Aborting...");
|
||||
}
|
||||
|
||||
// since we can't agree, make it an option
|
||||
@@ -810,9 +812,10 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
{
|
||||
switch( pCourse->GetPlayMode() )
|
||||
{
|
||||
case PLAY_MODE_ONI: sThisSection = "Oni"; break;
|
||||
case PLAY_MODE_NONSTOP: sThisSection = "Nonstop"; break;
|
||||
case PLAY_MODE_ENDLESS: sThisSection = "Endless"; break;
|
||||
case PLAY_MODE_ONI: sThisSection = "Oni"; break;
|
||||
case PLAY_MODE_NONSTOP: sThisSection = "Nonstop"; break;
|
||||
case PLAY_MODE_ENDLESS: sThisSection = "Endless"; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -833,6 +836,8 @@ void MusicWheel::BuildWheelItemDatas( vector<MusicWheelItemData *> &arrayWheelIt
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// init music status icons
|
||||
@@ -1227,23 +1232,24 @@ bool MusicWheel::Select() // return true if this selection ends the screen
|
||||
|
||||
switch( m_WheelState )
|
||||
{
|
||||
case STATE_FLYING_OFF_BEFORE_NEXT_SORT:
|
||||
case STATE_ROULETTE_SLOWING_DOWN:
|
||||
return false;
|
||||
case STATE_ROULETTE_SPINNING:
|
||||
m_WheelState = STATE_ROULETTE_SLOWING_DOWN;
|
||||
m_iSwitchesLeftInSpinDown = ROULETTE_SLOW_DOWN_SWITCHES/2+1 + RandomInt( ROULETTE_SLOW_DOWN_SWITCHES/2 );
|
||||
m_fTimeLeftInState = 0.1f;
|
||||
return false;
|
||||
case STATE_RANDOM_SPINNING:
|
||||
m_fPositionOffsetFromSelection = max(m_fPositionOffsetFromSelection, 0.3f);
|
||||
m_WheelState = STATE_LOCKED;
|
||||
SCREENMAN->PlayStartSound();
|
||||
m_fLockedWheelVelocity = 0;
|
||||
// Set m_Moving to zero to stop the sounds from playing.
|
||||
m_Moving = 0;
|
||||
SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 );
|
||||
return true;
|
||||
case STATE_FLYING_OFF_BEFORE_NEXT_SORT:
|
||||
case STATE_ROULETTE_SLOWING_DOWN:
|
||||
return false;
|
||||
case STATE_ROULETTE_SPINNING:
|
||||
m_WheelState = STATE_ROULETTE_SLOWING_DOWN;
|
||||
m_iSwitchesLeftInSpinDown = ROULETTE_SLOW_DOWN_SWITCHES/2+1 + RandomInt( ROULETTE_SLOW_DOWN_SWITCHES/2 );
|
||||
m_fTimeLeftInState = 0.1f;
|
||||
return false;
|
||||
case STATE_RANDOM_SPINNING:
|
||||
m_fPositionOffsetFromSelection = max(m_fPositionOffsetFromSelection, 0.3f);
|
||||
m_WheelState = STATE_LOCKED;
|
||||
SCREENMAN->PlayStartSound();
|
||||
m_fLockedWheelVelocity = 0;
|
||||
// Set m_Moving to zero to stop the sounds from playing.
|
||||
m_Moving = 0;
|
||||
SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 );
|
||||
return true;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( !WheelBase::Select() )
|
||||
@@ -1251,29 +1257,25 @@ bool MusicWheel::Select() // return true if this selection ends the screen
|
||||
|
||||
switch( m_CurWheelItemData[m_iSelection]->m_Type )
|
||||
{
|
||||
case TYPE_ROULETTE:
|
||||
StartRoulette();
|
||||
return false;
|
||||
case TYPE_RANDOM:
|
||||
StartRandom();
|
||||
return false;
|
||||
case TYPE_SONG:
|
||||
case TYPE_COURSE:
|
||||
case TYPE_PORTAL:
|
||||
break;
|
||||
case TYPE_SORT:
|
||||
GetCurWheelItemData(m_iSelection)->m_pAction->ApplyToAllPlayers();
|
||||
ChangeSort( GAMESTATE->m_PreferredSortOrder );
|
||||
m_sLastModeMenuItem = GetCurWheelItemData(m_iSelection)->m_pAction->m_sName;
|
||||
return false;
|
||||
case TYPE_CUSTOM:
|
||||
GetCurWheelItemData(m_iSelection)->m_pAction->ApplyToAllPlayers();
|
||||
if( GetCurWheelItemData(m_iSelection)->m_pAction->m_sScreen != "" )
|
||||
return true;
|
||||
else
|
||||
case TYPE_ROULETTE:
|
||||
StartRoulette();
|
||||
return false;
|
||||
case TYPE_RANDOM:
|
||||
StartRandom();
|
||||
return false;
|
||||
case TYPE_SORT:
|
||||
GetCurWheelItemData(m_iSelection)->m_pAction->ApplyToAllPlayers();
|
||||
ChangeSort( GAMESTATE->m_PreferredSortOrder );
|
||||
m_sLastModeMenuItem = GetCurWheelItemData(m_iSelection)->m_pAction->m_sName;
|
||||
return false;
|
||||
case TYPE_CUSTOM:
|
||||
GetCurWheelItemData(m_iSelection)->m_pAction->ApplyToAllPlayers();
|
||||
if( GetCurWheelItemData(m_iSelection)->m_pAction->m_sScreen != "" )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
default: return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void MusicWheel::StartRoulette()
|
||||
@@ -1517,11 +1519,11 @@ Song* MusicWheel::GetSelectedSong()
|
||||
{
|
||||
switch( m_CurWheelItemData[m_iSelection]->m_Type )
|
||||
{
|
||||
case TYPE_PORTAL:
|
||||
return GetPreferredSelectionForRandomOrPortal();
|
||||
case TYPE_PORTAL:
|
||||
return GetPreferredSelectionForRandomOrPortal();
|
||||
default:
|
||||
return GetCurWheelItemData(m_iSelection)->m_pSong;
|
||||
}
|
||||
|
||||
return GetCurWheelItemData(m_iSelection)->m_pSong;
|
||||
}
|
||||
|
||||
/* Find a random song. If possible, find one that has the preferred difficulties of
|
||||
|
||||
+6
-4
@@ -547,10 +547,12 @@ bool NoteData::RowNeedsAtLeastSimultaneousPresses( int iMinSimultaneousPresses,
|
||||
const TapNote &tn = GetTapNote(t, row);
|
||||
switch( tn.type )
|
||||
{
|
||||
case TapNote::mine:
|
||||
case TapNote::empty:
|
||||
case TapNote::fake:
|
||||
continue; // skip these types - they don't count
|
||||
case TapNote::mine:
|
||||
case TapNote::empty:
|
||||
case TapNote::fake:
|
||||
case TapNote::lift: // you don't "press" on a lift.
|
||||
continue; // skip these types - they don't count
|
||||
default: break;
|
||||
}
|
||||
++iNumNotesThisIndex;
|
||||
}
|
||||
|
||||
+11
-9
@@ -800,11 +800,12 @@ RadarStats CalculateRadarStatsFast( const NoteData &in, RadarStats &out )
|
||||
const TapNote &tn = in.GetTapNote(t, r);
|
||||
switch( tn.type )
|
||||
{
|
||||
case TapNote::mine:
|
||||
case TapNote::empty:
|
||||
case TapNote::fake:
|
||||
case TapNote::autoKeysound:
|
||||
continue; // skip these types - they don't count
|
||||
case TapNote::mine:
|
||||
case TapNote::empty:
|
||||
case TapNote::fake:
|
||||
case TapNote::autoKeysound:
|
||||
continue; // skip these types - they don't count
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( (itr = simultaneousMap.find(r)) == simultaneousMap.end() )
|
||||
@@ -830,10 +831,11 @@ RadarStats CalculateRadarStatsFast( const NoteData &in, RadarStats &out )
|
||||
{
|
||||
switch( in.GetTapNote(t, rr).type )
|
||||
{
|
||||
case TapNote::mine:
|
||||
case TapNote::empty:
|
||||
case TapNote::fake:
|
||||
continue; // skip these types - they don't count
|
||||
case TapNote::mine:
|
||||
case TapNote::empty:
|
||||
case TapNote::fake:
|
||||
continue; // skip these types - they don't count
|
||||
default: break;
|
||||
}
|
||||
if( (itr = simultaneousMap.find(rr)) == simultaneousMap.end() )
|
||||
simultaneousMap[rr] = 1;
|
||||
|
||||
@@ -1265,6 +1265,7 @@ void NoteField::DrawPrimitives()
|
||||
//if (tn.subType == TapNote::hold_head_roll)
|
||||
continue; // skip
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
// Don't draw hidden (fully judged) steps.
|
||||
|
||||
@@ -1111,9 +1111,9 @@ bool BMSLoader::LoadNoteDataFromSimfile( const RString & cachePath, Steps & out
|
||||
if( commonSubstring == "" )
|
||||
{
|
||||
copy->SetDifficulty(Difficulty_Medium);
|
||||
RString sTag;
|
||||
if (GetTagFromMap(BMSData[0], "#title#", sTag))
|
||||
SearchForDifficulty(sTag, copy);
|
||||
RString localTag;
|
||||
if (GetTagFromMap(BMSData[0], "#title#", localTag))
|
||||
SearchForDifficulty(localTag, copy);
|
||||
}
|
||||
ReadGlobalTags( BMSData[0], dummy );
|
||||
if( commonSubstring.size() > 2 && commonSubstring[commonSubstring.size() - 2] == ' ' )
|
||||
|
||||
@@ -35,6 +35,7 @@ static void Deserialize(TimingSegment &seg_, const Json::Value &root)
|
||||
static_cast<StopSegment *>(seg)->SetPause(fStop);
|
||||
break;
|
||||
}
|
||||
default: break; // The rest are unused.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -817,8 +817,8 @@ skip_track:
|
||||
// Check for termination of a sustain note
|
||||
switch( midiEventType )
|
||||
{
|
||||
case note_off:
|
||||
case note_on:
|
||||
case note_off:
|
||||
case note_on:
|
||||
if( bNonTerminatedNote )
|
||||
{
|
||||
if( length >= 240 )
|
||||
@@ -833,14 +833,15 @@ skip_track:
|
||||
|
||||
bNonTerminatedNote = false;
|
||||
bNoteHandled = true;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
||||
switch( midiEventType )
|
||||
{
|
||||
case note_on:
|
||||
case note_on:
|
||||
{
|
||||
TapNote tn = TAP_ORIGINAL_TAP;
|
||||
|
||||
@@ -867,7 +868,9 @@ skip_track:
|
||||
|
||||
bNonTerminatedNote = true;
|
||||
bNoteHandled = true;
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
countOfLastNote = count;
|
||||
|
||||
@@ -123,9 +123,10 @@ static RString NotesToDWIString( const TapNote tnCols[6] )
|
||||
{
|
||||
switch( tnCols[col].type )
|
||||
{
|
||||
case TapNote::empty:
|
||||
case TapNote::mine:
|
||||
continue;
|
||||
case TapNote::empty:
|
||||
case TapNote::mine:
|
||||
continue;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( tnCols[col].type == TapNote::hold_head )
|
||||
|
||||
+17
-13
@@ -426,15 +426,18 @@ void OptionRow::AfterImportOptions( PlayerNumber pn )
|
||||
|
||||
switch( m_pHand->m_Def.m_selectType )
|
||||
{
|
||||
case SELECT_ONE:
|
||||
// Make sure the row actually has a selection.
|
||||
int iSelection = GetOneSelection(pn, true);
|
||||
if( iSelection == -1 )
|
||||
case SELECT_ONE:
|
||||
{
|
||||
ASSERT( !m_vbSelected[pn].empty() );
|
||||
m_vbSelected[pn][0] = true;
|
||||
// Make sure the row actually has a selection.
|
||||
int iSelection = GetOneSelection(pn, true);
|
||||
if( iSelection == -1 )
|
||||
{
|
||||
ASSERT( !m_vbSelected[pn].empty() );
|
||||
m_vbSelected[pn][0] = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
ResetFocusFromSelection( pn );
|
||||
@@ -503,7 +506,7 @@ void OptionRow::UpdateText( PlayerNumber p )
|
||||
{
|
||||
switch( m_pHand->m_Def.m_layoutType )
|
||||
{
|
||||
case LAYOUT_SHOW_ONE_IN_ROW:
|
||||
case LAYOUT_SHOW_ONE_IN_ROW:
|
||||
{
|
||||
unsigned pn = m_pHand->m_Def.m_bOneChoiceForAllPlayers ? 0 : p;
|
||||
int iChoiceWithFocus = m_iChoiceInRowWithFocus[pn];
|
||||
@@ -519,7 +522,7 @@ void OptionRow::UpdateText( PlayerNumber p )
|
||||
|
||||
m_textItems[index]->SetText( sText );
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -757,10 +760,11 @@ void OptionRow::ResetFocusFromSelection( PlayerNumber pn )
|
||||
int iSelection = -1;
|
||||
switch( m_pHand->m_Def.m_selectType )
|
||||
{
|
||||
case SELECT_ONE:
|
||||
// Import the focus from the selected option.
|
||||
iSelection = GetOneSelection( pn, true );
|
||||
break;
|
||||
case SELECT_ONE:
|
||||
// Import the focus from the selected option.
|
||||
iSelection = GetOneSelection( pn, true );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// HACK: Set focus to one item in the row, which is "go down"
|
||||
|
||||
+65
-59
@@ -137,13 +137,14 @@ void PaneDisplay::SetContent( PaneCategory c )
|
||||
{
|
||||
switch( c )
|
||||
{
|
||||
case PaneCategory_MachineHighName:
|
||||
str = EMPTY_MACHINE_HIGH_SCORE_NAME;
|
||||
break;
|
||||
case PaneCategory_MachineHighScore:
|
||||
case PaneCategory_ProfileHighScore:
|
||||
str = NOT_AVAILABLE;
|
||||
break;
|
||||
case PaneCategory_MachineHighName:
|
||||
str = EMPTY_MACHINE_HIGH_SCORE_NAME;
|
||||
break;
|
||||
case PaneCategory_MachineHighScore:
|
||||
case PaneCategory_ProfileHighScore:
|
||||
str = NOT_AVAILABLE;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,13 +158,14 @@ void PaneDisplay::SetContent( PaneCategory c )
|
||||
{
|
||||
switch( c )
|
||||
{
|
||||
case PaneCategory_MachineHighName:
|
||||
str = EMPTY_MACHINE_HIGH_SCORE_NAME;
|
||||
break;
|
||||
case PaneCategory_MachineHighScore:
|
||||
case PaneCategory_ProfileHighScore:
|
||||
str = NOT_AVAILABLE;
|
||||
break;
|
||||
case PaneCategory_MachineHighName:
|
||||
str = EMPTY_MACHINE_HIGH_SCORE_NAME;
|
||||
break;
|
||||
case PaneCategory_MachineHighScore:
|
||||
case PaneCategory_ProfileHighScore:
|
||||
str = NOT_AVAILABLE;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,8 +186,9 @@ void PaneDisplay::SetContent( PaneCategory c )
|
||||
ProfileSlot slot = ProfileSlot_Machine;
|
||||
switch( c )
|
||||
{
|
||||
case PaneCategory_ProfileHighScore:
|
||||
slot = (ProfileSlot) m_PlayerNumber;
|
||||
case PaneCategory_ProfileHighScore:
|
||||
slot = (ProfileSlot) m_PlayerNumber;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( pSteps )
|
||||
@@ -201,55 +204,58 @@ void PaneDisplay::SetContent( PaneCategory c )
|
||||
|
||||
switch( c )
|
||||
{
|
||||
case PaneCategory_NumSteps: val = rv[RadarCategory_TapsAndHolds]; break;
|
||||
case PaneCategory_Jumps: val = rv[RadarCategory_Jumps]; break;
|
||||
case PaneCategory_Holds: val = rv[RadarCategory_Holds]; break;
|
||||
case PaneCategory_Rolls: val = rv[RadarCategory_Rolls]; break;
|
||||
case PaneCategory_Mines: val = rv[RadarCategory_Mines]; break;
|
||||
case PaneCategory_Hands: val = rv[RadarCategory_Hands]; break;
|
||||
case PaneCategory_Lifts: val = rv[RadarCategory_Lifts]; break;
|
||||
case PaneCategory_Fakes: val = rv[RadarCategory_Fakes]; break;
|
||||
case PaneCategory_ProfileHighScore:
|
||||
case PaneCategory_MachineHighName: // set val for color
|
||||
case PaneCategory_MachineHighScore:
|
||||
CHECKPOINT;
|
||||
val = pHSL->GetTopScore().GetPercentDP();
|
||||
break;
|
||||
case PaneCategory_NumSteps: val = rv[RadarCategory_TapsAndHolds]; break;
|
||||
case PaneCategory_Jumps: val = rv[RadarCategory_Jumps]; break;
|
||||
case PaneCategory_Holds: val = rv[RadarCategory_Holds]; break;
|
||||
case PaneCategory_Rolls: val = rv[RadarCategory_Rolls]; break;
|
||||
case PaneCategory_Mines: val = rv[RadarCategory_Mines]; break;
|
||||
case PaneCategory_Hands: val = rv[RadarCategory_Hands]; break;
|
||||
case PaneCategory_Lifts: val = rv[RadarCategory_Lifts]; break;
|
||||
case PaneCategory_Fakes: val = rv[RadarCategory_Fakes]; break;
|
||||
case PaneCategory_ProfileHighScore:
|
||||
case PaneCategory_MachineHighName: // set val for color
|
||||
case PaneCategory_MachineHighScore:
|
||||
CHECKPOINT;
|
||||
val = pHSL->GetTopScore().GetPercentDP();
|
||||
break;
|
||||
default: break;
|
||||
};
|
||||
|
||||
if( val != RADAR_VAL_UNKNOWN )
|
||||
{
|
||||
switch( c )
|
||||
{
|
||||
case PaneCategory_MachineHighName:
|
||||
if( pHSL->vHighScores.empty() )
|
||||
{
|
||||
str = EMPTY_MACHINE_HIGH_SCORE_NAME;
|
||||
}
|
||||
else
|
||||
{
|
||||
str = pHSL->GetTopScore().GetName();
|
||||
if( str.empty() )
|
||||
str = "????";
|
||||
}
|
||||
break;
|
||||
case PaneCategory_MachineHighScore:
|
||||
case PaneCategory_ProfileHighScore:
|
||||
// Don't show or save machine high scores for edits loaded from a player profile.
|
||||
if( bIsPlayerEdit )
|
||||
str = NOT_AVAILABLE;
|
||||
else
|
||||
str = PlayerStageStats::FormatPercentScore( val );
|
||||
break;
|
||||
case PaneCategory_NumSteps:
|
||||
case PaneCategory_Jumps:
|
||||
case PaneCategory_Holds:
|
||||
case PaneCategory_Rolls:
|
||||
case PaneCategory_Mines:
|
||||
case PaneCategory_Hands:
|
||||
case PaneCategory_Lifts:
|
||||
case PaneCategory_Fakes:
|
||||
str = ssprintf( COUNT_FORMAT.GetValue(), val );
|
||||
case PaneCategory_MachineHighName:
|
||||
if( pHSL->vHighScores.empty() )
|
||||
{
|
||||
str = EMPTY_MACHINE_HIGH_SCORE_NAME;
|
||||
}
|
||||
else
|
||||
{
|
||||
str = pHSL->GetTopScore().GetName();
|
||||
if( str.empty() )
|
||||
str = "????";
|
||||
}
|
||||
break;
|
||||
case PaneCategory_MachineHighScore:
|
||||
case PaneCategory_ProfileHighScore:
|
||||
// Don't show or save machine high scores for edits loaded from a player profile.
|
||||
if( bIsPlayerEdit )
|
||||
str = NOT_AVAILABLE;
|
||||
else
|
||||
str = PlayerStageStats::FormatPercentScore( val );
|
||||
break;
|
||||
case PaneCategory_NumSteps:
|
||||
case PaneCategory_Jumps:
|
||||
case PaneCategory_Holds:
|
||||
case PaneCategory_Rolls:
|
||||
case PaneCategory_Mines:
|
||||
case PaneCategory_Hands:
|
||||
case PaneCategory_Lifts:
|
||||
case PaneCategory_Fakes:
|
||||
str = ssprintf( COUNT_FORMAT.GetValue(), val );
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+33
-27
@@ -628,8 +628,8 @@ void Player::Load()
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_RAVE:
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
case PLAY_MODE_BATTLE:
|
||||
{
|
||||
// ugly, ugly, ugly. Works only w/ dance.
|
||||
// Why does this work only with dance? - Steve
|
||||
@@ -659,8 +659,9 @@ void Player::Load()
|
||||
count++;
|
||||
count %= 4;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
int iDrawDistanceAfterTargetsPixels = GAMESTATE->IsEditing() ? -100 : DRAW_DISTANCE_AFTER_TARGET_PIXELS;
|
||||
@@ -2879,41 +2880,46 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now )
|
||||
int iTrack = iter.Track();
|
||||
switch( tn.type )
|
||||
{
|
||||
case TapNote::hold_head:
|
||||
tn.HoldResult.fLife = INITIAL_HOLD_LIFE;
|
||||
if( !REQUIRE_STEP_ON_HOLD_HEADS )
|
||||
case TapNote::hold_head:
|
||||
{
|
||||
tn.HoldResult.fLife = INITIAL_HOLD_LIFE;
|
||||
if( !REQUIRE_STEP_ON_HOLD_HEADS )
|
||||
{
|
||||
PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
|
||||
GameInput GameI = GAMESTATE->GetCurrentStyle()->StyleInputToGameInput( iTrack, pn );
|
||||
if( PREFSMAN->m_fPadStickSeconds > 0.f )
|
||||
{
|
||||
float fSecsHeld = INPUTMAPPER->GetSecsHeld( GameI, m_pPlayerState->m_mp );
|
||||
if( fSecsHeld >= PREFSMAN->m_fPadStickSeconds )
|
||||
Step( iTrack, -1, now - PREFSMAN->m_fPadStickSeconds, true, false );
|
||||
}
|
||||
else if( INPUTMAPPER->IsBeingPressed(GameI, m_pPlayerState->m_mp) )
|
||||
{
|
||||
Step( iTrack, -1, now, true, false );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TapNote::mine:
|
||||
{
|
||||
// Hold the panel while crossing a mine will cause the mine to explode
|
||||
// TODO: Remove use of PlayerNumber.
|
||||
PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
|
||||
GameInput GameI = GAMESTATE->GetCurrentStyle()->StyleInputToGameInput( iTrack, pn );
|
||||
if( PREFSMAN->m_fPadStickSeconds > 0.f )
|
||||
if( PREFSMAN->m_fPadStickSeconds > 0 )
|
||||
{
|
||||
float fSecsHeld = INPUTMAPPER->GetSecsHeld( GameI, m_pPlayerState->m_mp );
|
||||
if( fSecsHeld >= PREFSMAN->m_fPadStickSeconds )
|
||||
Step( iTrack, -1, now - PREFSMAN->m_fPadStickSeconds, true, false );
|
||||
}
|
||||
else if( INPUTMAPPER->IsBeingPressed(GameI, m_pPlayerState->m_mp) )
|
||||
else
|
||||
{
|
||||
Step( iTrack, -1, now, true, false );
|
||||
if( INPUTMAPPER->IsBeingPressed(GameI, m_pPlayerState->m_mp) )
|
||||
Step( iTrack, iRow, now, true, false );
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TapNote::mine:
|
||||
// Hold the panel while crossing a mine will cause the mine to explode
|
||||
// TODO: Remove use of PlayerNumber.
|
||||
PlayerNumber pn = m_pPlayerState->m_PlayerNumber;
|
||||
GameInput GameI = GAMESTATE->GetCurrentStyle()->StyleInputToGameInput( iTrack, pn );
|
||||
if( PREFSMAN->m_fPadStickSeconds > 0 )
|
||||
{
|
||||
float fSecsHeld = INPUTMAPPER->GetSecsHeld( GameI, m_pPlayerState->m_mp );
|
||||
if( fSecsHeld >= PREFSMAN->m_fPadStickSeconds )
|
||||
Step( iTrack, -1, now - PREFSMAN->m_fPadStickSeconds, true, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( INPUTMAPPER->IsBeingPressed(GameI, m_pPlayerState->m_mp) )
|
||||
Step( iTrack, iRow, now, true, false );
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( iRow != iLastSeenRow )
|
||||
|
||||
+14
-11
@@ -274,6 +274,7 @@ float PlayerStageStats::GetCurMaxPercentDancePoints() const
|
||||
return fCurMaxPercentDancePoints;
|
||||
}
|
||||
|
||||
// TODO: Make this use lua. Let more judgments be possible. -Wolfman2000
|
||||
int PlayerStageStats::GetLessonScoreActual() const
|
||||
{
|
||||
int iScore = 0;
|
||||
@@ -282,14 +283,15 @@ int PlayerStageStats::GetLessonScoreActual() const
|
||||
{
|
||||
switch( tns )
|
||||
{
|
||||
case TNS_AvoidMine:
|
||||
case TNS_W5:
|
||||
case TNS_W4:
|
||||
case TNS_W3:
|
||||
case TNS_W2:
|
||||
case TNS_W1:
|
||||
iScore += m_iTapNoteScores[tns];
|
||||
break;
|
||||
case TNS_AvoidMine:
|
||||
case TNS_W5:
|
||||
case TNS_W4:
|
||||
case TNS_W3:
|
||||
case TNS_W2:
|
||||
case TNS_W1:
|
||||
iScore += m_iTapNoteScores[tns];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,9 +299,10 @@ int PlayerStageStats::GetLessonScoreActual() const
|
||||
{
|
||||
switch( hns )
|
||||
{
|
||||
case HNS_Held:
|
||||
iScore += m_iHoldNoteScores[hns];
|
||||
break;
|
||||
case HNS_Held:
|
||||
iScore += m_iHoldNoteScores[hns];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+21
-20
@@ -1625,6 +1625,7 @@ void RageDisplay_Legacy::SetTextureMode( TextureUnit tu, TextureMode tm )
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND1_ALPHA_EXT), GL_SRC_ALPHA);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE1_ALPHA_EXT), GL_TEXTURE);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1668,15 +1669,16 @@ void RageDisplay_Legacy::SetEffectMode( EffectMode effect )
|
||||
GLhandleARB hShader = 0;
|
||||
switch (effect)
|
||||
{
|
||||
case EffectMode_Normal: hShader = 0; break;
|
||||
case EffectMode_Unpremultiply: hShader = g_bUnpremultiplyShader; break;
|
||||
case EffectMode_ColorBurn: hShader = g_bColorBurnShader; break;
|
||||
case EffectMode_ColorDodge: hShader = g_bColorDodgeShader; break;
|
||||
case EffectMode_VividLight: hShader = g_bVividLightShader; break;
|
||||
case EffectMode_HardMix: hShader = g_hHardMixShader; break;
|
||||
case EffectMode_Overlay: hShader = g_hOverlayShader; break;
|
||||
case EffectMode_Screen: hShader = g_hScreenShader; break;
|
||||
case EffectMode_YUYV422: hShader = g_hYUYV422Shader; break;
|
||||
case EffectMode_Normal: hShader = 0; break;
|
||||
case EffectMode_Unpremultiply: hShader = g_bUnpremultiplyShader; break;
|
||||
case EffectMode_ColorBurn: hShader = g_bColorBurnShader; break;
|
||||
case EffectMode_ColorDodge: hShader = g_bColorDodgeShader; break;
|
||||
case EffectMode_VividLight: hShader = g_bVividLightShader; break;
|
||||
case EffectMode_HardMix: hShader = g_hHardMixShader; break;
|
||||
case EffectMode_Overlay: hShader = g_hOverlayShader; break;
|
||||
case EffectMode_Screen: hShader = g_hScreenShader; break;
|
||||
case EffectMode_YUYV422: hShader = g_hYUYV422Shader; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
DebugFlushGLErrors();
|
||||
@@ -1703,18 +1705,17 @@ bool RageDisplay_Legacy::IsEffectModeSupported( EffectMode effect )
|
||||
{
|
||||
switch( effect )
|
||||
{
|
||||
case EffectMode_Normal: return true;
|
||||
case EffectMode_Unpremultiply: return g_bUnpremultiplyShader != 0;
|
||||
case EffectMode_ColorBurn: return g_bColorBurnShader != 0;
|
||||
case EffectMode_ColorDodge: return g_bColorDodgeShader != 0;
|
||||
case EffectMode_VividLight: return g_bVividLightShader != 0;
|
||||
case EffectMode_HardMix: return g_hHardMixShader != 0;
|
||||
case EffectMode_Overlay: return g_hOverlayShader != 0;
|
||||
case EffectMode_Screen: return g_hScreenShader != 0;
|
||||
case EffectMode_YUYV422: return g_hYUYV422Shader != 0;
|
||||
case EffectMode_Normal: return true;
|
||||
case EffectMode_Unpremultiply: return g_bUnpremultiplyShader != 0;
|
||||
case EffectMode_ColorBurn: return g_bColorBurnShader != 0;
|
||||
case EffectMode_ColorDodge: return g_bColorDodgeShader != 0;
|
||||
case EffectMode_VividLight: return g_bVividLightShader != 0;
|
||||
case EffectMode_HardMix: return g_hHardMixShader != 0;
|
||||
case EffectMode_Overlay: return g_hOverlayShader != 0;
|
||||
case EffectMode_Screen: return g_hScreenShader != 0;
|
||||
case EffectMode_YUYV422: return g_hYUYV422Shader != 0;
|
||||
default: return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void RageDisplay_Legacy::SetBlendMode( BlendMode mode )
|
||||
|
||||
+10
-9
@@ -576,15 +576,16 @@ void RageSound::ApplyParams()
|
||||
|
||||
switch( GetStopMode() )
|
||||
{
|
||||
case RageSoundParams::M_LOOP:
|
||||
m_pSource->SetProperty( "Loop", 1.0f );
|
||||
break;
|
||||
case RageSoundParams::M_STOP:
|
||||
m_pSource->SetProperty( "Stop", 1.0f );
|
||||
break;
|
||||
case RageSoundParams::M_CONTINUE:
|
||||
m_pSource->SetProperty( "Continue", 1.0f );
|
||||
break;
|
||||
case RageSoundParams::M_LOOP:
|
||||
m_pSource->SetProperty( "Loop", 1.0f );
|
||||
break;
|
||||
case RageSoundParams::M_STOP:
|
||||
m_pSource->SetProperty( "Stop", 1.0f );
|
||||
break;
|
||||
case RageSoundParams::M_CONTINUE:
|
||||
m_pSource->SetProperty( "Continue", 1.0f );
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -67,17 +67,18 @@ RageSoundReader_FileReader *RageSoundReader_FileReader::TryOpenFile( RageFileBas
|
||||
bKeepTrying = (ret != OPEN_FATAL_ERROR);
|
||||
switch( ret )
|
||||
{
|
||||
case OPEN_UNKNOWN_FILE_FORMAT:
|
||||
bKeepTrying = true;
|
||||
error = "Unknown file format";
|
||||
break;
|
||||
case OPEN_UNKNOWN_FILE_FORMAT:
|
||||
bKeepTrying = true;
|
||||
error = "Unknown file format";
|
||||
break;
|
||||
|
||||
case OPEN_FATAL_ERROR:
|
||||
/* The file matched, but failed to load. We know it's this type of data;
|
||||
* don't bother trying the other file types. */
|
||||
bKeepTrying = false;
|
||||
error = err;
|
||||
break;
|
||||
case OPEN_FATAL_ERROR:
|
||||
/* The file matched, but failed to load. We know it's this type of data;
|
||||
* don't bother trying the other file types. */
|
||||
bKeepTrying = false;
|
||||
error = err;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
@@ -57,16 +57,17 @@ static RageSurface *TryOpenFile( RString sPath, bool bHeaderOnly, RString &error
|
||||
bKeepTrying = (result != RageSurfaceUtils::OPEN_FATAL_ERROR);
|
||||
switch( result )
|
||||
{
|
||||
case RageSurfaceUtils::OPEN_UNKNOWN_FILE_FORMAT:
|
||||
bKeepTrying = true;
|
||||
error = "Unknown file format";
|
||||
break;
|
||||
case RageSurfaceUtils::OPEN_UNKNOWN_FILE_FORMAT:
|
||||
bKeepTrying = true;
|
||||
error = "Unknown file format";
|
||||
break;
|
||||
|
||||
case RageSurfaceUtils::OPEN_FATAL_ERROR:
|
||||
/* The file matched, but failed to load. We know it's this type of data;
|
||||
* don't bother trying the other file types. */
|
||||
bKeepTrying = false;
|
||||
break;
|
||||
case RageSurfaceUtils::OPEN_FATAL_ERROR:
|
||||
/* The file matched, but failed to load. We know it's this type of data;
|
||||
* don't bother trying the other file types. */
|
||||
bKeepTrying = false;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
@@ -83,7 +83,10 @@ void ScoreKeeperRave::HandleHoldScore( const TapNote &tn )
|
||||
float fPercentToMove = 0;
|
||||
switch( tapScore )
|
||||
{
|
||||
case TNS_HitMine: fPercentToMove = g_fSuperMeterPercentChange[SE_HitMine]; break;
|
||||
case TNS_HitMine:
|
||||
fPercentToMove = g_fSuperMeterPercentChange[SE_HitMine];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
AddSuperMeterDelta( fPercentToMove );
|
||||
}
|
||||
|
||||
@@ -226,6 +226,7 @@ void Screen::Input( const InputEventPlus &input )
|
||||
case GAME_BUTTON_START: this->MenuStart ( input ); return;
|
||||
case GAME_BUTTON_SELECT:this->MenuSelect( input ); return;
|
||||
case GAME_BUTTON_COIN: this->MenuCoin ( input ); return;
|
||||
default: return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+32
-29
@@ -75,34 +75,36 @@ void ScreenAttract::AttractInput( const InputEventPlus &input, ScreenWithMenuEle
|
||||
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_BACK:
|
||||
if( !(bool)BACK_GOES_TO_START_SCREEN )
|
||||
break;
|
||||
// fall through
|
||||
case GAME_BUTTON_START:
|
||||
case GAME_BUTTON_COIN:
|
||||
switch( GAMESTATE->GetCoinMode() )
|
||||
{
|
||||
case CoinMode_Pay:
|
||||
LOG->Trace("ScreenAttract::AttractInput: COIN_PAY (%i/%i, %i)", GAMESTATE->m_iCoins.Get(), PREFSMAN->m_iCoinsPerCredit.Get(), GAMESTATE->GetNumSidesJoined() );
|
||||
if( GAMESTATE->m_iCoins < PREFSMAN->m_iCoinsPerCredit && GAMESTATE->GetNumSidesJoined() == 0 )
|
||||
break; // don't fall through
|
||||
case GAME_BUTTON_BACK:
|
||||
if( !BACK_GOES_TO_START_SCREEN )
|
||||
break;
|
||||
// fall through
|
||||
case CoinMode_Home:
|
||||
case CoinMode_Free:
|
||||
if( pScreen->IsTransitioning() )
|
||||
return;
|
||||
case GAME_BUTTON_START:
|
||||
case GAME_BUTTON_COIN:
|
||||
switch( GAMESTATE->GetCoinMode() )
|
||||
{
|
||||
case CoinMode_Pay:
|
||||
LOG->Trace("ScreenAttract::AttractInput: COIN_PAY (%i/%i, %i)",
|
||||
GAMESTATE->m_iCoins.Get(),
|
||||
PREFSMAN->m_iCoinsPerCredit.Get(),
|
||||
GAMESTATE->GetNumSidesJoined() );
|
||||
if( GAMESTATE->m_iCoins < PREFSMAN->m_iCoinsPerCredit && GAMESTATE->GetNumSidesJoined() == 0 )
|
||||
break; // don't fall through
|
||||
// fall through
|
||||
case CoinMode_Home:
|
||||
case CoinMode_Free:
|
||||
if( pScreen->IsTransitioning() )
|
||||
return;
|
||||
|
||||
// HandleGlobalInputs() already played the coin sound. Don't play it again.
|
||||
if( input.MenuI != GAME_BUTTON_COIN )
|
||||
SCREENMAN->PlayStartSound();
|
||||
// HandleGlobalInputs() already played the coin sound. Don't play it again.
|
||||
if( input.MenuI != GAME_BUTTON_COIN )
|
||||
SCREENMAN->PlayStartSound();
|
||||
|
||||
pScreen->Cancel( SM_GoToStartScreen );
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
break;
|
||||
pScreen->Cancel( SM_GoToStartScreen );
|
||||
break;
|
||||
default: FAIL_M("Invalid Coin Mode! Aborting...");
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( pScreen->IsTransitioning() )
|
||||
@@ -110,10 +112,11 @@ void ScreenAttract::AttractInput( const InputEventPlus &input, ScreenWithMenuEle
|
||||
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_LEFT:
|
||||
case GAME_BUTTON_RIGHT:
|
||||
SCREENMAN->PostMessageToTopScreen( SM_BeginFadingOut, 0 );
|
||||
break;
|
||||
case GAME_BUTTON_LEFT:
|
||||
case GAME_BUTTON_RIGHT:
|
||||
SCREENMAN->PostMessageToTopScreen( SM_BeginFadingOut, 0 );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Screen::Input( input );
|
||||
|
||||
+15
-12
@@ -63,18 +63,21 @@ void ScreenContinue::Input( const InputEventPlus &input )
|
||||
{
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_START:
|
||||
case GAME_BUTTON_UP:
|
||||
case GAME_BUTTON_DOWN:
|
||||
case GAME_BUTTON_LEFT:
|
||||
case GAME_BUTTON_RIGHT:
|
||||
float fSeconds = floorf(m_MenuTimer->GetSeconds()) - 0.0001f;
|
||||
fSeconds = max( fSeconds, 0.0001f ); // don't set to 0
|
||||
m_MenuTimer->SetSeconds( fSeconds );
|
||||
Message msg("HurryTimer");
|
||||
msg.SetParam( "PlayerNumber", input.pn );
|
||||
this->HandleMessage( msg );
|
||||
return; // handled
|
||||
case GAME_BUTTON_START:
|
||||
case GAME_BUTTON_UP:
|
||||
case GAME_BUTTON_DOWN:
|
||||
case GAME_BUTTON_LEFT:
|
||||
case GAME_BUTTON_RIGHT:
|
||||
{
|
||||
float fSeconds = floorf(m_MenuTimer->GetSeconds()) - 0.0001f;
|
||||
fSeconds = max( fSeconds, 0.0001f ); // don't set to 0
|
||||
m_MenuTimer->SetSeconds( fSeconds );
|
||||
Message msg("HurryTimer");
|
||||
msg.SetParam( "PlayerNumber", input.pn );
|
||||
this->HandleMessage( msg );
|
||||
return; // handled
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -813,12 +813,11 @@ class DebugLineProfileSlot : public IDebugLine
|
||||
{
|
||||
switch( g_ProfileSlot )
|
||||
{
|
||||
case ProfileSlot_Machine: return "Machine";
|
||||
case ProfileSlot_Player1: return "Player 1";
|
||||
case ProfileSlot_Player2: return "Player 2";
|
||||
case ProfileSlot_Machine: return "Machine";
|
||||
case ProfileSlot_Player1: return "Player 1";
|
||||
case ProfileSlot_Player2: return "Player 2";
|
||||
default: return RString();
|
||||
}
|
||||
|
||||
return RString();
|
||||
}
|
||||
virtual bool IsEnabled() { return IsSelectProfilePersistent(); }
|
||||
virtual RString GetPageName() const { return "Profiles"; }
|
||||
|
||||
@@ -4245,6 +4245,7 @@ void ScreenEdit::HandleAlterMenuChoice(AlterMenuChoice c, const vector<int> &iAn
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+24
-19
@@ -193,33 +193,38 @@ void ScreenEditMenu::MenuStart( const InputEventPlus &input )
|
||||
|
||||
switch( m_Selector.EDIT_MODE )
|
||||
{
|
||||
case EditMode_Full:
|
||||
{
|
||||
RString sDir = pSong->GetSongDir();
|
||||
RString sTempFile = sDir + TEMP_FILE_NAME;
|
||||
RageFile file;
|
||||
if( !file.Open( sTempFile, RageFile::WRITE ) )
|
||||
case EditMode_Full:
|
||||
{
|
||||
ScreenPrompt::Prompt( SM_None, SONG_DIR_READ_ONLY );
|
||||
return;
|
||||
}
|
||||
RString sDir = pSong->GetSongDir();
|
||||
RString sTempFile = sDir + TEMP_FILE_NAME;
|
||||
RageFile file;
|
||||
if( !file.Open( sTempFile, RageFile::WRITE ) )
|
||||
{
|
||||
ScreenPrompt::Prompt( SM_None, SONG_DIR_READ_ONLY );
|
||||
return;
|
||||
}
|
||||
|
||||
file.Close();
|
||||
FILEMAN->Remove( sTempFile );
|
||||
break;
|
||||
}
|
||||
file.Close();
|
||||
FILEMAN->Remove( sTempFile );
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch( action )
|
||||
{
|
||||
case EditMenuAction_Delete:
|
||||
ASSERT( pSteps );
|
||||
if( pSteps->IsAutogen() )
|
||||
case EditMenuAction_Delete:
|
||||
{
|
||||
SCREENMAN->PlayInvalidSound();
|
||||
SCREENMAN->SystemMessage( DELETED_AUTOGEN_STEPS.GetValue() );
|
||||
return;
|
||||
ASSERT( pSteps );
|
||||
if( pSteps->IsAutogen() )
|
||||
{
|
||||
SCREENMAN->PlayInvalidSound();
|
||||
SCREENMAN->SystemMessage( DELETED_AUTOGEN_STEPS.GetValue() );
|
||||
return;
|
||||
}
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
// Do work
|
||||
|
||||
@@ -93,10 +93,11 @@ void ScreenEnding::Init()
|
||||
m_sprRemoveMemoryCard[p].Load( THEME->GetPathG("ScreenEnding",ssprintf("remove card P%d",p+1)) );
|
||||
switch( MEMCARDMAN->GetCardState(p) )
|
||||
{
|
||||
case MemoryCardState_Removed:
|
||||
case MemoryCardState_NoCard:
|
||||
m_sprRemoveMemoryCard[p].SetVisible( false );
|
||||
break;
|
||||
case MemoryCardState_Removed:
|
||||
case MemoryCardState_NoCard:
|
||||
m_sprRemoveMemoryCard[p].SetVisible( false );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOAD_ALL_COMMANDS_AND_SET_XY_AND_ON_COMMAND( m_sprRemoveMemoryCard[p] );
|
||||
this->AddChild( &m_sprRemoveMemoryCard[p] );
|
||||
@@ -114,9 +115,10 @@ void ScreenEnding::Input( const InputEventPlus &input )
|
||||
{
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_START:
|
||||
SCREENMAN->PostMessageToTopScreen( SM_BeginFadingOut, 0 );
|
||||
break;
|
||||
case GAME_BUTTON_START:
|
||||
SCREENMAN->PostMessageToTopScreen( SM_BeginFadingOut, 0 );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+26
-24
@@ -182,25 +182,26 @@ void ScreenEvaluation::Init()
|
||||
{
|
||||
switch( rc )
|
||||
{
|
||||
case RadarCategory_Stream:
|
||||
case RadarCategory_Voltage:
|
||||
case RadarCategory_Air:
|
||||
case RadarCategory_Freeze:
|
||||
case RadarCategory_Chaos:
|
||||
ss.m_player[p].m_radarPossible[rc] = randomf( 0, 1 );
|
||||
ss.m_player[p].m_radarActual[rc] = randomf( 0, ss.m_player[p].m_radarPossible[rc] );
|
||||
break;
|
||||
case RadarCategory_TapsAndHolds:
|
||||
case RadarCategory_Jumps:
|
||||
case RadarCategory_Holds:
|
||||
case RadarCategory_Mines:
|
||||
case RadarCategory_Hands:
|
||||
case RadarCategory_Rolls:
|
||||
case RadarCategory_Lifts:
|
||||
case RadarCategory_Fakes:
|
||||
ss.m_player[p].m_radarPossible[rc] = 1 + (rand() % 200);
|
||||
ss.m_player[p].m_radarActual[rc] = rand() % (int)(ss.m_player[p].m_radarPossible[rc]);
|
||||
break;
|
||||
case RadarCategory_Stream:
|
||||
case RadarCategory_Voltage:
|
||||
case RadarCategory_Air:
|
||||
case RadarCategory_Freeze:
|
||||
case RadarCategory_Chaos:
|
||||
ss.m_player[p].m_radarPossible[rc] = randomf( 0, 1 );
|
||||
ss.m_player[p].m_radarActual[rc] = randomf( 0, ss.m_player[p].m_radarPossible[rc] );
|
||||
break;
|
||||
case RadarCategory_TapsAndHolds:
|
||||
case RadarCategory_Jumps:
|
||||
case RadarCategory_Holds:
|
||||
case RadarCategory_Mines:
|
||||
case RadarCategory_Hands:
|
||||
case RadarCategory_Rolls:
|
||||
case RadarCategory_Lifts:
|
||||
case RadarCategory_Fakes:
|
||||
ss.m_player[p].m_radarPossible[rc] = 1 + (rand() % 200);
|
||||
ss.m_player[p].m_radarActual[rc] = rand() % (int)(ss.m_player[p].m_radarPossible[rc]);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
; // filled in by ScreenGameplay on start of notes
|
||||
@@ -651,11 +652,12 @@ void ScreenEvaluation::Init()
|
||||
|
||||
switch( best_grade )
|
||||
{
|
||||
case Grade_Tier01:
|
||||
case Grade_Tier02:
|
||||
case Grade_Tier03:
|
||||
this->PostScreenMessage( SM_PlayCheer, CHEER_DELAY_SECONDS );
|
||||
break;
|
||||
case Grade_Tier01:
|
||||
case Grade_Tier02:
|
||||
case Grade_Tier03:
|
||||
this->PostScreenMessage( SM_PlayCheer, CHEER_DELAY_SECONDS );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+270
-260
@@ -151,10 +151,11 @@ void PlayerInfo::Load( PlayerNumber pn, MultiPlayer mp, bool bShowNoteField, int
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pSecondaryScoreDisplay = new ScoreDisplayRave;
|
||||
m_pSecondaryScoreDisplay->SetName( "ScoreDisplayRave" );
|
||||
break;
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pSecondaryScoreDisplay = new ScoreDisplayRave;
|
||||
m_pSecondaryScoreDisplay->SetName( "ScoreDisplayRave" );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if( m_pSecondaryScoreDisplay )
|
||||
@@ -164,9 +165,10 @@ void PlayerInfo::Load( PlayerNumber pn, MultiPlayer mp, bool bShowNoteField, int
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pSecondaryScoreKeeper = new ScoreKeeperRave( pPlayerState, pPlayerStageStats );
|
||||
break;
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pSecondaryScoreKeeper = new ScoreKeeperRave( pPlayerState, pPlayerStageStats );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
m_ptextPlayerOptions = NULL;
|
||||
@@ -522,13 +524,14 @@ void ScreenGameplay::Init()
|
||||
// Add combined life meter
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pCombinedLifeMeter = new CombinedLifeMeterTug;
|
||||
m_pCombinedLifeMeter->SetName( "CombinedLife" );
|
||||
LOAD_ALL_COMMANDS_AND_SET_XY( *m_pCombinedLifeMeter );
|
||||
this->AddChild( m_pCombinedLifeMeter );
|
||||
break;
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
m_pCombinedLifeMeter = new CombinedLifeMeterTug;
|
||||
m_pCombinedLifeMeter->SetName( "CombinedLife" );
|
||||
LOAD_ALL_COMMANDS_AND_SET_XY( *m_pCombinedLifeMeter );
|
||||
this->AddChild( m_pCombinedLifeMeter );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Before the lifemeter loads, if Networking is required
|
||||
@@ -541,25 +544,26 @@ void ScreenGameplay::Init()
|
||||
// Add individual life meter
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_REGULAR:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
FOREACH_PlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
if( !GAMESTATE->IsPlayerEnabled(pi->m_pn) && !SHOW_LIFE_METER_FOR_DISABLED_PLAYERS )
|
||||
continue; // skip
|
||||
case PLAY_MODE_REGULAR:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
FOREACH_PlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
if( !GAMESTATE->IsPlayerEnabled(pi->m_pn) && !SHOW_LIFE_METER_FOR_DISABLED_PLAYERS )
|
||||
continue; // skip
|
||||
|
||||
pi->m_pLifeMeter = LifeMeter::MakeLifeMeter( GAMESTATE->m_SongOptions.GetStage().m_LifeType );
|
||||
pi->m_pLifeMeter->Load( pi->GetPlayerState(), pi->GetPlayerStageStats() );
|
||||
pi->m_pLifeMeter->SetName( ssprintf("Life%s",pi->GetName().c_str()) );
|
||||
LOAD_ALL_COMMANDS_AND_SET_XY( pi->m_pLifeMeter );
|
||||
this->AddChild( pi->m_pLifeMeter );
|
||||
}
|
||||
break;
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
break;
|
||||
pi->m_pLifeMeter = LifeMeter::MakeLifeMeter( GAMESTATE->m_SongOptions.GetStage().m_LifeType );
|
||||
pi->m_pLifeMeter->Load( pi->GetPlayerState(), pi->GetPlayerStageStats() );
|
||||
pi->m_pLifeMeter->SetName( ssprintf("Life%s",pi->GetName().c_str()) );
|
||||
LOAD_ALL_COMMANDS_AND_SET_XY( pi->m_pLifeMeter );
|
||||
this->AddChild( pi->m_pLifeMeter );
|
||||
}
|
||||
break;
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
m_bShowScoreboard = false;
|
||||
@@ -718,11 +722,12 @@ void ScreenGameplay::Init()
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
m_soundBattleTrickLevel1.Load( THEME->GetPathS(m_sName,"battle trick level1"), true );
|
||||
m_soundBattleTrickLevel2.Load( THEME->GetPathS(m_sName,"battle trick level2"), true );
|
||||
m_soundBattleTrickLevel3.Load( THEME->GetPathS(m_sName,"battle trick level3"), true );
|
||||
break;
|
||||
case PLAY_MODE_BATTLE:
|
||||
m_soundBattleTrickLevel1.Load( THEME->GetPathS(m_sName,"battle trick level1"), true );
|
||||
m_soundBattleTrickLevel2.Load( THEME->GetPathS(m_sName,"battle trick level2"), true );
|
||||
m_soundBattleTrickLevel3.Load( THEME->GetPathS(m_sName,"battle trick level3"), true );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -996,9 +1001,10 @@ void ScreenGameplay::SetupSong( int iSongIndex )
|
||||
RString sType;
|
||||
switch( GAMESTATE->m_SongOptions.GetCurrent().m_SoundEffectType )
|
||||
{
|
||||
case SongOptions::SOUNDEFFECT_OFF: sType = "SoundEffectControl_Off"; break;
|
||||
case SongOptions::SOUNDEFFECT_SPEED: sType = "SoundEffectControl_Speed"; break;
|
||||
case SongOptions::SOUNDEFFECT_PITCH: sType = "SoundEffectControl_Pitch"; break;
|
||||
case SongOptions::SOUNDEFFECT_OFF: sType = "SoundEffectControl_Off"; break;
|
||||
case SongOptions::SOUNDEFFECT_SPEED: sType = "SoundEffectControl_Speed"; break;
|
||||
case SongOptions::SOUNDEFFECT_PITCH: sType = "SoundEffectControl_Pitch"; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
pi->m_SoundEffectControl.Load( sType, pi->GetPlayerState(), &pi->m_NoteData );
|
||||
@@ -1630,246 +1636,250 @@ void ScreenGameplay::Update( float fDeltaTime )
|
||||
|
||||
switch( m_DancingState )
|
||||
{
|
||||
case STATE_DANCING:
|
||||
/* Set STATSMAN->m_CurStageStats.bFailed for failed players. In, FAIL_IMMEDIATE, send
|
||||
* SM_BeginFailed if all players failed, and kill dead Oni players. */
|
||||
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
|
||||
case STATE_DANCING:
|
||||
{
|
||||
PlayerNumber pn = pi->GetStepsAndTrailIndex();
|
||||
|
||||
PlayerOptions::FailType ft = GAMESTATE->GetPlayerFailType( pi->GetPlayerState() );
|
||||
SongOptions::LifeType lt = GAMESTATE->m_SongOptions.GetCurrent().m_LifeType;
|
||||
|
||||
if( ft == PlayerOptions::FAIL_OFF || ft == PlayerOptions::FAIL_AT_END )
|
||||
continue;
|
||||
|
||||
// check for individual fail
|
||||
if( pi->m_pLifeMeter == NULL || !pi->m_pLifeMeter->IsFailing() )
|
||||
continue; /* isn't failing */
|
||||
if( pi->GetPlayerStageStats()->m_bFailed )
|
||||
continue; /* failed and is already dead */
|
||||
|
||||
LOG->Trace("Player %d failed", (int)pn);
|
||||
pi->GetPlayerStageStats()->m_bFailed = true; // fail
|
||||
|
||||
/* Set STATSMAN->m_CurStageStats.bFailed for failed players. In, FAIL_IMMEDIATE, send
|
||||
* SM_BeginFailed if all players failed, and kill dead Oni players. */
|
||||
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
Message msg("PlayerFailed");
|
||||
msg.SetParam( "PlayerNumber", pi->m_pn );
|
||||
MESSAGEMAN->Broadcast( msg );
|
||||
}
|
||||
PlayerNumber pn = pi->GetStepsAndTrailIndex();
|
||||
|
||||
PlayerOptions::FailType ft = GAMESTATE->GetPlayerFailType( pi->GetPlayerState() );
|
||||
SongOptions::LifeType lt = GAMESTATE->m_SongOptions.GetCurrent().m_LifeType;
|
||||
|
||||
if( ft == PlayerOptions::FAIL_OFF || ft == PlayerOptions::FAIL_AT_END )
|
||||
continue;
|
||||
|
||||
// check for individual fail
|
||||
if( pi->m_pLifeMeter == NULL || !pi->m_pLifeMeter->IsFailing() )
|
||||
continue; /* isn't failing */
|
||||
if( pi->GetPlayerStageStats()->m_bFailed )
|
||||
continue; /* failed and is already dead */
|
||||
|
||||
LOG->Trace("Player %d failed", (int)pn);
|
||||
pi->GetPlayerStageStats()->m_bFailed = true; // fail
|
||||
|
||||
// Check for and do Oni die.
|
||||
bool bAllowOniDie = false;
|
||||
switch( lt )
|
||||
{
|
||||
case SongOptions::LIFE_BATTERY:
|
||||
bAllowOniDie = true;
|
||||
break;
|
||||
}
|
||||
if( bAllowOniDie && ft == PlayerOptions::FAIL_IMMEDIATE )
|
||||
{
|
||||
if( !STATSMAN->m_CurStageStats.AllFailed() ) // if not the last one to fail
|
||||
{
|
||||
// kill them!
|
||||
SOUND->PlayOnceFromDir( THEME->GetPathS(m_sName,"oni die") );
|
||||
pi->ShowOniGameOver();
|
||||
pi->m_NoteData.Init(); // remove all notes and scoring
|
||||
pi->m_pPlayer->FadeToFail(); // tell the NoteField to fade to white
|
||||
Message msg("PlayerFailed");
|
||||
msg.SetParam( "PlayerNumber", pi->m_pn );
|
||||
MESSAGEMAN->Broadcast( msg );
|
||||
}
|
||||
|
||||
// Check for and do Oni die.
|
||||
bool bAllowOniDie = false;
|
||||
switch( lt )
|
||||
{
|
||||
case SongOptions::LIFE_BATTERY:
|
||||
bAllowOniDie = true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if( bAllowOniDie && ft == PlayerOptions::FAIL_IMMEDIATE )
|
||||
{
|
||||
if( !STATSMAN->m_CurStageStats.AllFailed() ) // if not the last one to fail
|
||||
{
|
||||
// kill them!
|
||||
SOUND->PlayOnceFromDir( THEME->GetPathS(m_sName,"oni die") );
|
||||
pi->ShowOniGameOver();
|
||||
pi->m_NoteData.Init(); // remove all notes and scoring
|
||||
pi->m_pPlayer->FadeToFail(); // tell the NoteField to fade to white
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool bAllFailed = true;
|
||||
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
PlayerOptions::FailType ft = GAMESTATE->GetPlayerFailType( pi->GetPlayerState() );
|
||||
switch( ft )
|
||||
bool bAllFailed = true;
|
||||
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
case PlayerOptions::FAIL_IMMEDIATE:
|
||||
if( pi->m_pLifeMeter == NULL || (pi->m_pLifeMeter && !pi->m_pLifeMeter->IsFailing()) )
|
||||
bAllFailed = false;
|
||||
break;
|
||||
case PlayerOptions::FAIL_IMMEDIATE_CONTINUE:
|
||||
case PlayerOptions::FAIL_AT_END:
|
||||
bAllFailed = false; // wait until the end of the song to fail.
|
||||
break;
|
||||
case PlayerOptions::FAIL_OFF:
|
||||
bAllFailed = false; // never fail.
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
if( bAllFailed )
|
||||
{
|
||||
m_pSoundMusic->StopPlaying();
|
||||
SCREENMAN->PostMessageToTopScreen( SM_NotesEnded, 0 );
|
||||
// todo: stop lyrics (m_LyricDisplay) from animating -aj
|
||||
}
|
||||
|
||||
// Update living players' alive time
|
||||
// HACK: Don't scale alive time when using tab/tilde. Instead of accumulating time from a timer,
|
||||
// this time should instead be tied to the music position.
|
||||
float fUnscaledDeltaTime = m_timerGameplaySeconds.GetDeltaTime();
|
||||
|
||||
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
|
||||
if( !pi->GetPlayerStageStats()->m_bFailed )
|
||||
pi->GetPlayerStageStats()->m_fAliveSeconds += fUnscaledDeltaTime * GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate;
|
||||
|
||||
// update fGameplaySeconds
|
||||
STATSMAN->m_CurStageStats.m_fGameplaySeconds += fUnscaledDeltaTime;
|
||||
float curBeat = GAMESTATE->m_Position.m_fSongBeat;
|
||||
Song &s = *GAMESTATE->m_pCurSong;
|
||||
|
||||
if( curBeat >= s.GetFirstBeat() && curBeat < s.GetLastBeat() )
|
||||
{
|
||||
STATSMAN->m_CurStageStats.m_fStepsSeconds += fUnscaledDeltaTime;
|
||||
|
||||
if( GAMESTATE->m_SongOptions.GetCurrent().m_fHaste != 0.0f )
|
||||
{
|
||||
float fHasteRate = GetHasteRate();
|
||||
GAMESTATE->m_fAccumulatedHasteSeconds += (fUnscaledDeltaTime * fHasteRate) - fUnscaledDeltaTime;
|
||||
}
|
||||
}
|
||||
|
||||
// Check for end of song
|
||||
{
|
||||
float fSecondsToStartFadingOutMusic, fSecondsToStartTransitioningOut;
|
||||
GetMusicEndTiming( fSecondsToStartFadingOutMusic, fSecondsToStartTransitioningOut );
|
||||
|
||||
bool bAllReallyFailed = STATSMAN->m_CurStageStats.AllFailed();
|
||||
if( bAllReallyFailed )
|
||||
fSecondsToStartTransitioningOut += BEGIN_FAILED_DELAY;
|
||||
|
||||
if( GAMESTATE->m_Position.m_fMusicSeconds >= fSecondsToStartTransitioningOut && !m_NextSong.IsTransitioning() )
|
||||
this->PostScreenMessage( SM_NotesEnded, 0 );
|
||||
}
|
||||
|
||||
// update 2d dancing characters
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
DancingCharacters *pCharacter = NULL;
|
||||
if( m_pSongBackground )
|
||||
pCharacter = m_pSongBackground->GetDancingCharacters();
|
||||
if( pCharacter != NULL )
|
||||
{
|
||||
TapNoteScore tns = pi->m_pPlayer->GetLastTapNoteScore();
|
||||
|
||||
ANIM_STATES_2D state = AS2D_MISS;
|
||||
|
||||
switch( tns )
|
||||
PlayerOptions::FailType ft = GAMESTATE->GetPlayerFailType( pi->GetPlayerState() );
|
||||
switch( ft )
|
||||
{
|
||||
case TNS_W4:
|
||||
case TNS_W3:
|
||||
state = AS2D_GOOD;
|
||||
case PlayerOptions::FAIL_IMMEDIATE:
|
||||
if( pi->m_pLifeMeter == NULL || (pi->m_pLifeMeter && !pi->m_pLifeMeter->IsFailing()) )
|
||||
bAllFailed = false;
|
||||
break;
|
||||
case TNS_W2:
|
||||
case TNS_W1:
|
||||
state = AS2D_GREAT;
|
||||
case PlayerOptions::FAIL_IMMEDIATE_CONTINUE:
|
||||
case PlayerOptions::FAIL_AT_END:
|
||||
bAllFailed = false; // wait until the end of the song to fail.
|
||||
break;
|
||||
case PlayerOptions::FAIL_OFF:
|
||||
bAllFailed = false; // never fail.
|
||||
break;
|
||||
default:
|
||||
state = AS2D_MISS;
|
||||
break;
|
||||
}
|
||||
|
||||
if( state == AS2D_GREAT && pi->GetPlayerState()->m_HealthState == HealthState_Hot )
|
||||
state = AS2D_FEVER;
|
||||
|
||||
pCharacter->Change2DAnimState( pi->m_pn, state );
|
||||
}
|
||||
}
|
||||
|
||||
// Check for enemy death in enemy battle
|
||||
static float fLastSeenEnemyHealth = 1;
|
||||
if( fLastSeenEnemyHealth != GAMESTATE->m_fOpponentHealthPercent )
|
||||
{
|
||||
fLastSeenEnemyHealth = GAMESTATE->m_fOpponentHealthPercent;
|
||||
|
||||
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
|
||||
{
|
||||
// HACK: Load incorrect directory on purpose for now.
|
||||
PlayAnnouncer( "gameplay battle damage level3", 0 );
|
||||
|
||||
GAMESTATE->RemoveAllActiveAttacks();
|
||||
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
if( !GAMESTATE->IsCpuPlayer(pi->m_pn) )
|
||||
continue;
|
||||
|
||||
SOUND->PlayOnceFromDir( THEME->GetPathS(m_sName,"oni die") );
|
||||
pi->ShowOniGameOver();
|
||||
pi->m_NoteData.Init(); // remove all notes and scoring
|
||||
pi->m_pPlayer->FadeToFail(); // tell the NoteField to fade to white
|
||||
FAIL_M("Invalid fail type! Aborting...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// update give up
|
||||
bool bGiveUpTimerFired = !m_GiveUpTimer.IsZero() && m_GiveUpTimer.Ago() > 2.5f;
|
||||
|
||||
|
||||
bool bAllHumanHaveBigMissCombo = true;
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
if (pi->GetPlayerState()->m_PlayerOptions.GetCurrent().m_FailType == PlayerOptions::FAIL_OFF ||
|
||||
pi->GetPlayerState()->m_HealthState < HealthState_Dead )
|
||||
{
|
||||
bAllHumanHaveBigMissCombo = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (bAllHumanHaveBigMissCombo) // possible to get in here.
|
||||
{
|
||||
bAllHumanHaveBigMissCombo = FAIL_ON_MISS_COMBO.GetValue() != -1 && STATSMAN->m_CurStageStats.GetMinimumMissCombo() >= FAIL_ON_MISS_COMBO;
|
||||
}
|
||||
if( bGiveUpTimerFired || bAllHumanHaveBigMissCombo )
|
||||
{
|
||||
STATSMAN->m_CurStageStats.m_bGaveUp = true;
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
pi->GetPlayerStageStats()->m_bFailed |= bAllHumanHaveBigMissCombo;
|
||||
pi->GetPlayerStageStats()->m_bDisqualified |= bGiveUpTimerFired; // Don't disqualify if failing for miss combo. The player should still be eligable for a high score on courses.
|
||||
}
|
||||
|
||||
AbortGiveUp( false );
|
||||
|
||||
if( GIVING_UP_GOES_TO_PREV_SCREEN )
|
||||
{
|
||||
BeginBackingOutFromGameplay();
|
||||
}
|
||||
else
|
||||
if( bAllFailed )
|
||||
{
|
||||
m_pSoundMusic->StopPlaying();
|
||||
this->PostScreenMessage( SM_NotesEnded, 0 );
|
||||
SCREENMAN->PostMessageToTopScreen( SM_NotesEnded, 0 );
|
||||
// todo: stop lyrics (m_LyricDisplay) from animating -aj
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Check to see if it's time to play a ScreenGameplay comment
|
||||
m_fTimeSinceLastDancingComment += fDeltaTime;
|
||||
// Update living players' alive time
|
||||
// HACK: Don't scale alive time when using tab/tilde. Instead of accumulating time from a timer,
|
||||
// this time should instead be tied to the music position.
|
||||
float fUnscaledDeltaTime = m_timerGameplaySeconds.GetDeltaTime();
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_REGULAR:
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
if( GAMESTATE->OneIsHot() )
|
||||
PlayAnnouncer( "gameplay comment hot", SECONDS_BETWEEN_COMMENTS );
|
||||
else if( GAMESTATE->AllAreInDangerOrWorse() )
|
||||
PlayAnnouncer( "gameplay comment danger", SECONDS_BETWEEN_COMMENTS );
|
||||
else
|
||||
PlayAnnouncer( "gameplay comment good", SECONDS_BETWEEN_COMMENTS );
|
||||
break;
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
PlayAnnouncer( "gameplay comment oni", SECONDS_BETWEEN_COMMENTS );
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi )
|
||||
if( !pi->GetPlayerStageStats()->m_bFailed )
|
||||
pi->GetPlayerStageStats()->m_fAliveSeconds += fUnscaledDeltaTime * GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate;
|
||||
|
||||
// update fGameplaySeconds
|
||||
STATSMAN->m_CurStageStats.m_fGameplaySeconds += fUnscaledDeltaTime;
|
||||
float curBeat = GAMESTATE->m_Position.m_fSongBeat;
|
||||
Song &s = *GAMESTATE->m_pCurSong;
|
||||
|
||||
if( curBeat >= s.GetFirstBeat() && curBeat < s.GetLastBeat() )
|
||||
{
|
||||
STATSMAN->m_CurStageStats.m_fStepsSeconds += fUnscaledDeltaTime;
|
||||
|
||||
if( GAMESTATE->m_SongOptions.GetCurrent().m_fHaste != 0.0f )
|
||||
{
|
||||
float fHasteRate = GetHasteRate();
|
||||
GAMESTATE->m_fAccumulatedHasteSeconds += (fUnscaledDeltaTime * fHasteRate) - fUnscaledDeltaTime;
|
||||
}
|
||||
}
|
||||
|
||||
// Check for end of song
|
||||
{
|
||||
float fSecondsToStartFadingOutMusic, fSecondsToStartTransitioningOut;
|
||||
GetMusicEndTiming( fSecondsToStartFadingOutMusic, fSecondsToStartTransitioningOut );
|
||||
|
||||
bool bAllReallyFailed = STATSMAN->m_CurStageStats.AllFailed();
|
||||
if( bAllReallyFailed )
|
||||
fSecondsToStartTransitioningOut += BEGIN_FAILED_DELAY;
|
||||
|
||||
if( GAMESTATE->m_Position.m_fMusicSeconds >= fSecondsToStartTransitioningOut && !m_NextSong.IsTransitioning() )
|
||||
this->PostScreenMessage( SM_NotesEnded, 0 );
|
||||
}
|
||||
|
||||
// update 2d dancing characters
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
DancingCharacters *pCharacter = NULL;
|
||||
if( m_pSongBackground )
|
||||
pCharacter = m_pSongBackground->GetDancingCharacters();
|
||||
if( pCharacter != NULL )
|
||||
{
|
||||
TapNoteScore tns = pi->m_pPlayer->GetLastTapNoteScore();
|
||||
|
||||
ANIM_STATES_2D state = AS2D_MISS;
|
||||
|
||||
switch( tns )
|
||||
{
|
||||
case TNS_W4:
|
||||
case TNS_W3:
|
||||
state = AS2D_GOOD;
|
||||
break;
|
||||
case TNS_W2:
|
||||
case TNS_W1:
|
||||
state = AS2D_GREAT;
|
||||
break;
|
||||
default:
|
||||
state = AS2D_MISS;
|
||||
break;
|
||||
}
|
||||
|
||||
if( state == AS2D_GREAT && pi->GetPlayerState()->m_HealthState == HealthState_Hot )
|
||||
state = AS2D_FEVER;
|
||||
|
||||
pCharacter->Change2DAnimState( pi->m_pn, state );
|
||||
}
|
||||
}
|
||||
|
||||
// Check for enemy death in enemy battle
|
||||
static float fLastSeenEnemyHealth = 1;
|
||||
if( fLastSeenEnemyHealth != GAMESTATE->m_fOpponentHealthPercent )
|
||||
{
|
||||
fLastSeenEnemyHealth = GAMESTATE->m_fOpponentHealthPercent;
|
||||
|
||||
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
|
||||
{
|
||||
// HACK: Load incorrect directory on purpose for now.
|
||||
PlayAnnouncer( "gameplay battle damage level3", 0 );
|
||||
|
||||
GAMESTATE->RemoveAllActiveAttacks();
|
||||
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
if( !GAMESTATE->IsCpuPlayer(pi->m_pn) )
|
||||
continue;
|
||||
|
||||
SOUND->PlayOnceFromDir( THEME->GetPathS(m_sName,"oni die") );
|
||||
pi->ShowOniGameOver();
|
||||
pi->m_NoteData.Init(); // remove all notes and scoring
|
||||
pi->m_pPlayer->FadeToFail(); // tell the NoteField to fade to white
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// update give up
|
||||
bool bGiveUpTimerFired = !m_GiveUpTimer.IsZero() && m_GiveUpTimer.Ago() > 2.5f;
|
||||
|
||||
|
||||
bool bAllHumanHaveBigMissCombo = true;
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
if (pi->GetPlayerState()->m_PlayerOptions.GetCurrent().m_FailType == PlayerOptions::FAIL_OFF ||
|
||||
pi->GetPlayerState()->m_HealthState < HealthState_Dead )
|
||||
{
|
||||
bAllHumanHaveBigMissCombo = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (bAllHumanHaveBigMissCombo) // possible to get in here.
|
||||
{
|
||||
bAllHumanHaveBigMissCombo = FAIL_ON_MISS_COMBO.GetValue() != -1 && STATSMAN->m_CurStageStats.GetMinimumMissCombo() >= FAIL_ON_MISS_COMBO;
|
||||
}
|
||||
if( bGiveUpTimerFired || bAllHumanHaveBigMissCombo )
|
||||
{
|
||||
STATSMAN->m_CurStageStats.m_bGaveUp = true;
|
||||
FOREACH_EnabledPlayerNumberInfo( m_vPlayerInfo, pi )
|
||||
{
|
||||
pi->GetPlayerStageStats()->m_bFailed |= bAllHumanHaveBigMissCombo;
|
||||
pi->GetPlayerStageStats()->m_bDisqualified |= bGiveUpTimerFired; // Don't disqualify if failing for miss combo. The player should still be eligable for a high score on courses.
|
||||
}
|
||||
|
||||
AbortGiveUp( false );
|
||||
|
||||
if( GIVING_UP_GOES_TO_PREV_SCREEN )
|
||||
{
|
||||
BeginBackingOutFromGameplay();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSoundMusic->StopPlaying();
|
||||
this->PostScreenMessage( SM_NotesEnded, 0 );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Check to see if it's time to play a ScreenGameplay comment
|
||||
m_fTimeSinceLastDancingComment += fDeltaTime;
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_REGULAR:
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
if( GAMESTATE->OneIsHot() )
|
||||
PlayAnnouncer( "gameplay comment hot", SECONDS_BETWEEN_COMMENTS );
|
||||
else if( GAMESTATE->AllAreInDangerOrWorse() )
|
||||
PlayAnnouncer( "gameplay comment danger", SECONDS_BETWEEN_COMMENTS );
|
||||
else
|
||||
PlayAnnouncer( "gameplay comment good", SECONDS_BETWEEN_COMMENTS );
|
||||
break;
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
PlayAnnouncer( "gameplay comment oni", SECONDS_BETWEEN_COMMENTS );
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
PlayTicks();
|
||||
|
||||
@@ -248,10 +248,12 @@ void ScreenJukebox::Input( const InputEventPlus &input )
|
||||
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_LEFT:
|
||||
case GAME_BUTTON_RIGHT:
|
||||
SCREENMAN->PostMessageToTopScreen( SM_NotesEnded, 0 );
|
||||
return;
|
||||
case GAME_BUTTON_LEFT:
|
||||
case GAME_BUTTON_RIGHT:
|
||||
SCREENMAN->PostMessageToTopScreen( SM_NotesEnded, 0 );
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
ScreenAttract::AttractInput( input, this );
|
||||
|
||||
+40
-32
@@ -465,12 +465,13 @@ void ScreenOptions::TweenCursor( PlayerNumber pn )
|
||||
bool bCanGoRight = false;
|
||||
switch( row.GetRowDef().m_layoutType )
|
||||
{
|
||||
case LAYOUT_SHOW_ONE_IN_ROW:
|
||||
bCanGoLeft = iChoiceWithFocus > 0;
|
||||
bCanGoRight = iChoiceWithFocus >= 0 && iChoiceWithFocus < (int) row.GetRowDef().m_vsChoices.size()-1;
|
||||
break;
|
||||
case LAYOUT_SHOW_ALL_IN_ROW:
|
||||
break;
|
||||
case LAYOUT_SHOW_ONE_IN_ROW:
|
||||
bCanGoLeft = iChoiceWithFocus > 0;
|
||||
bCanGoRight = iChoiceWithFocus >= 0 && iChoiceWithFocus < (int) row.GetRowDef().m_vsChoices.size()-1;
|
||||
break;
|
||||
case LAYOUT_SHOW_ALL_IN_ROW:
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
cursor.SetCanGo( bCanGoLeft, bCanGoRight );
|
||||
|
||||
@@ -505,13 +506,15 @@ void ScreenOptions::Input( const InputEventPlus &input )
|
||||
{
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_START:
|
||||
case GAME_BUTTON_SELECT:
|
||||
case GAME_BUTTON_MENURIGHT:
|
||||
case GAME_BUTTON_MENULEFT:
|
||||
INPUTMAPPER->ResetKeyRepeat( GAME_BUTTON_START, input.pn );
|
||||
INPUTMAPPER->ResetKeyRepeat( GAME_BUTTON_RIGHT, input.pn );
|
||||
INPUTMAPPER->ResetKeyRepeat( GAME_BUTTON_LEFT, input.pn );
|
||||
case GAME_BUTTON_START:
|
||||
case GAME_BUTTON_SELECT:
|
||||
case GAME_BUTTON_MENURIGHT:
|
||||
case GAME_BUTTON_MENULEFT:
|
||||
INPUTMAPPER->ResetKeyRepeat( GAME_BUTTON_START, input.pn );
|
||||
INPUTMAPPER->ResetKeyRepeat( GAME_BUTTON_RIGHT, input.pn );
|
||||
INPUTMAPPER->ResetKeyRepeat( GAME_BUTTON_LEFT, input.pn );
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -736,12 +739,13 @@ void ScreenOptions::AfterChangeValueOrRow( PlayerNumber pn )
|
||||
BitmapText *pText = NULL;
|
||||
switch( m_InputMode )
|
||||
{
|
||||
case INPUTMODE_INDIVIDUAL:
|
||||
pText = &m_textExplanation[pn];
|
||||
break;
|
||||
case INPUTMODE_SHARE_CURSOR:
|
||||
pText = &m_textExplanationTogether;
|
||||
break;
|
||||
case INPUTMODE_INDIVIDUAL:
|
||||
pText = &m_textExplanation[pn];
|
||||
break;
|
||||
case INPUTMODE_SHARE_CURSOR:
|
||||
pText = &m_textExplanationTogether;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
if( pText->GetText() != text )
|
||||
{
|
||||
@@ -787,8 +791,8 @@ void ScreenOptions::MenuStart( const InputEventPlus &input )
|
||||
* GAME_BUTTON_RIGHT are being held. */
|
||||
switch( m_OptionsNavigation )
|
||||
{
|
||||
case NAV_THREE_KEY:
|
||||
case NAV_TOGGLE_THREE_KEY:
|
||||
case NAV_THREE_KEY:
|
||||
case NAV_TOGGLE_THREE_KEY:
|
||||
{
|
||||
bool bHoldingLeftAndRight =
|
||||
INPUTMAPPER->IsBeingPressed( GAME_BUTTON_RIGHT, pn ) &&
|
||||
@@ -800,6 +804,7 @@ void ScreenOptions::MenuStart( const InputEventPlus &input )
|
||||
return;
|
||||
}
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
this->ProcessMenuStart( input );
|
||||
@@ -1170,23 +1175,26 @@ void ScreenOptions::AfterChangeRow( PlayerNumber pn )
|
||||
OptionRow &row = *m_pRows[iRow];
|
||||
switch( m_OptionsNavigation )
|
||||
{
|
||||
case NAV_TOGGLE_FIVE_KEY:
|
||||
if( row.GetRowDef().m_layoutType != LAYOUT_SHOW_ONE_IN_ROW )
|
||||
case NAV_TOGGLE_FIVE_KEY:
|
||||
{
|
||||
int iSelectionDist = -1;
|
||||
for( unsigned i = 0; i < row.GetTextItemsSize(); ++i )
|
||||
if( row.GetRowDef().m_layoutType != LAYOUT_SHOW_ONE_IN_ROW )
|
||||
{
|
||||
int iWidth, iX, iY;
|
||||
GetWidthXY( pn, m_iCurrentRow[pn], i, iWidth, iX, iY );
|
||||
const int iDist = abs( iX-m_iFocusX[pn] );
|
||||
if( iSelectionDist == -1 || iDist < iSelectionDist )
|
||||
int iSelectionDist = -1;
|
||||
for( unsigned i = 0; i < row.GetTextItemsSize(); ++i )
|
||||
{
|
||||
iSelectionDist = iDist;
|
||||
row.SetChoiceInRowWithFocus( pn, i );
|
||||
int iWidth, iX, iY;
|
||||
GetWidthXY( pn, m_iCurrentRow[pn], i, iWidth, iX, iY );
|
||||
const int iDist = abs( iX-m_iFocusX[pn] );
|
||||
if( iSelectionDist == -1 || iDist < iSelectionDist )
|
||||
{
|
||||
iSelectionDist = iDist;
|
||||
row.SetChoiceInRowWithFocus( pn, i );
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( row.GetFirstItemGoesDown() )
|
||||
|
||||
+23
-20
@@ -118,12 +118,13 @@ void ScreenPrompt::Input( const InputEventPlus &input )
|
||||
{
|
||||
switch( input.DeviceI.button )
|
||||
{
|
||||
case KEY_LEFT:
|
||||
this->MenuLeft( input );
|
||||
return;
|
||||
case KEY_RIGHT:
|
||||
this->MenuRight( input );
|
||||
return;
|
||||
case KEY_LEFT:
|
||||
this->MenuLeft( input );
|
||||
return;
|
||||
case KEY_RIGHT:
|
||||
this->MenuRight( input );
|
||||
return;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,12 +199,13 @@ void ScreenPrompt::End( bool bCancelled )
|
||||
{
|
||||
switch( m_Answer )
|
||||
{
|
||||
case ANSWER_YES:
|
||||
m_smSendOnPop = SM_Success;
|
||||
break;
|
||||
case ANSWER_NO:
|
||||
m_smSendOnPop = SM_Failure;
|
||||
break;
|
||||
case ANSWER_YES:
|
||||
m_smSendOnPop = SM_Success;
|
||||
break;
|
||||
case ANSWER_NO:
|
||||
m_smSendOnPop = SM_Failure;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( bCancelled )
|
||||
@@ -218,14 +220,15 @@ void ScreenPrompt::End( bool bCancelled )
|
||||
|
||||
switch( m_Answer )
|
||||
{
|
||||
case ANSWER_YES:
|
||||
if( g_pOnYes )
|
||||
g_pOnYes(g_pCallbackData);
|
||||
break;
|
||||
case ANSWER_NO:
|
||||
if( g_pOnNo )
|
||||
g_pOnNo(g_pCallbackData);
|
||||
break;
|
||||
case ANSWER_YES:
|
||||
if( g_pOnYes )
|
||||
g_pOnYes(g_pCallbackData);
|
||||
break;
|
||||
case ANSWER_NO:
|
||||
if( g_pOnNo )
|
||||
g_pOnNo(g_pCallbackData);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
s_LastAnswer = bCancelled ? ANSWER_CANCEL : m_Answer;
|
||||
|
||||
@@ -212,14 +212,15 @@ float ScreenRanking::SetPage( const PageToShow &pts )
|
||||
bool bShowTime = false;
|
||||
switch( RANKING_TYPE )
|
||||
{
|
||||
case RankingType_Category:
|
||||
bShowScores = true;
|
||||
break;
|
||||
case RankingType_SpecificTrail:
|
||||
bShowScores = !pts.pCourse->IsOni();
|
||||
bShowPoints = pts.pCourse->IsOni();
|
||||
bShowTime = pts.pCourse->IsOni();
|
||||
break;
|
||||
case RankingType_Category:
|
||||
bShowScores = true;
|
||||
break;
|
||||
case RankingType_SpecificTrail:
|
||||
bShowScores = !pts.pCourse->IsOni();
|
||||
bShowPoints = pts.pCourse->IsOni();
|
||||
bShowTime = pts.pCourse->IsOni();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
for( int l=0; l<NUM_RANKING_LINES; l++ )
|
||||
|
||||
@@ -205,10 +205,11 @@ void ScreenSelectCharacter::BeforeRowChange( PlayerNumber pn )
|
||||
PlayerNumber pnAffected = GetAffectedPlayerNumber(pn);
|
||||
switch( m_SelectionRow[pn] )
|
||||
{
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
m_sprCardArrows[pnAffected].StopEffect();
|
||||
break;
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
m_sprCardArrows[pnAffected].StopEffect();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,10 +218,11 @@ void ScreenSelectCharacter::AfterRowChange( PlayerNumber pn )
|
||||
PlayerNumber pnAffected = GetAffectedPlayerNumber(pn);
|
||||
switch( m_SelectionRow[pn] )
|
||||
{
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
m_sprCardArrows[pnAffected].SetEffectGlowShift();
|
||||
break;
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
m_sprCardArrows[pnAffected].SetEffectGlowShift();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,15 +299,18 @@ void ScreenSelectCharacter::Move( PlayerNumber pn, int deltaValue )
|
||||
PlayerNumber pnAffected = GetAffectedPlayerNumber(pn);
|
||||
switch( m_SelectionRow[pn] )
|
||||
{
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
vector<Character*> apCharacters;
|
||||
CHARMAN->GetCharacters( apCharacters );
|
||||
m_iSelectedCharacter[pnAffected] += deltaValue;
|
||||
wrap( m_iSelectedCharacter[pnAffected], apCharacters.size() );
|
||||
AfterValueChange(pn);
|
||||
m_soundChange.Play();
|
||||
break;
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
{
|
||||
vector<Character*> apCharacters;
|
||||
CHARMAN->GetCharacters( apCharacters );
|
||||
m_iSelectedCharacter[pnAffected] += deltaValue;
|
||||
wrap( m_iSelectedCharacter[pnAffected], apCharacters.size() );
|
||||
AfterValueChange(pn);
|
||||
m_soundChange.Play();
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,12 +337,13 @@ void ScreenSelectCharacter::MakeSelection( PlayerNumber pn )
|
||||
BeforeRowChange(pn);
|
||||
switch( m_SelectionRow[pn] )
|
||||
{
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
m_SelectionRow[pn] = GAMESTATE->AnyPlayersAreCpu() ? CHOOSING_CPU_CHARACTER : FINISHED_CHOOSING;
|
||||
break;
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
m_SelectionRow[pn] = FINISHED_CHOOSING;
|
||||
break;
|
||||
case CHOOSING_HUMAN_CHARACTER:
|
||||
m_SelectionRow[pn] = GAMESTATE->AnyPlayersAreCpu() ? CHOOSING_CPU_CHARACTER : FINISHED_CHOOSING;
|
||||
break;
|
||||
case CHOOSING_CPU_CHARACTER:
|
||||
m_SelectionRow[pn] = FINISHED_CHOOSING;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
AfterRowChange(pn);
|
||||
AfterValueChange(pn);
|
||||
|
||||
+16
-15
@@ -528,21 +528,22 @@ void ScreenSelectMusic::Input( const InputEventPlus &input )
|
||||
{
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_LEFT:
|
||||
ChangeSteps( input.pn, -1 );
|
||||
m_bAcceptSelectRelease[input.pn] = false;
|
||||
break;
|
||||
case GAME_BUTTON_RIGHT:
|
||||
ChangeSteps( input.pn, +1 );
|
||||
m_bAcceptSelectRelease[input.pn] = false;
|
||||
break;
|
||||
case GAME_BUTTON_START:
|
||||
m_bAcceptSelectRelease[input.pn] = false;
|
||||
if( MODE_MENU_AVAILABLE )
|
||||
m_MusicWheel.NextSort();
|
||||
else
|
||||
m_soundLocked.Play();
|
||||
break;
|
||||
case GAME_BUTTON_LEFT:
|
||||
ChangeSteps( input.pn, -1 );
|
||||
m_bAcceptSelectRelease[input.pn] = false;
|
||||
break;
|
||||
case GAME_BUTTON_RIGHT:
|
||||
ChangeSteps( input.pn, +1 );
|
||||
m_bAcceptSelectRelease[input.pn] = false;
|
||||
break;
|
||||
case GAME_BUTTON_START:
|
||||
m_bAcceptSelectRelease[input.pn] = false;
|
||||
if( MODE_MENU_AVAILABLE )
|
||||
m_MusicWheel.NextSort();
|
||||
else
|
||||
m_soundLocked.Play();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
else if( input.type == IET_FIRST_PRESS && input.MenuI != GAME_BUTTON_SELECT )
|
||||
|
||||
+36
-24
@@ -212,12 +212,16 @@ bool ScreenSyncOverlay::OverlayInput( const InputEventPlus &input )
|
||||
}
|
||||
switch( input.type )
|
||||
{
|
||||
case IET_RELEASE: fDelta *= 0; break;
|
||||
case IET_REPEAT:
|
||||
if( INPUTFILTER->GetSecsHeld(input.DeviceI) < 1.0f )
|
||||
fDelta *= 0;
|
||||
else
|
||||
fDelta *= 10;
|
||||
case IET_RELEASE: fDelta *= 0; break;
|
||||
case IET_REPEAT:
|
||||
{
|
||||
if( INPUTFILTER->GetSecsHeld(input.DeviceI) < 1.0f )
|
||||
fDelta *= 0;
|
||||
else
|
||||
fDelta *= 10;
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
if( GAMESTATE->m_pCurSong != NULL )
|
||||
{
|
||||
@@ -237,31 +241,39 @@ bool ScreenSyncOverlay::OverlayInput( const InputEventPlus &input )
|
||||
}
|
||||
switch( input.type )
|
||||
{
|
||||
case IET_RELEASE: fDelta *= 0; break;
|
||||
case IET_REPEAT:
|
||||
if( INPUTFILTER->GetSecsHeld(input.DeviceI) < 1.0f )
|
||||
fDelta *= 0;
|
||||
else
|
||||
fDelta *= 10;
|
||||
case IET_RELEASE: fDelta *= 0; break;
|
||||
case IET_REPEAT:
|
||||
{
|
||||
if( INPUTFILTER->GetSecsHeld(input.DeviceI) < 1.0f )
|
||||
fDelta *= 0;
|
||||
else
|
||||
fDelta *= 10;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
switch( a )
|
||||
{
|
||||
case ChangeGlobalOffset:
|
||||
case ChangeGlobalOffset:
|
||||
{
|
||||
PREFSMAN->m_fGlobalOffsetSeconds.Set( PREFSMAN->m_fGlobalOffsetSeconds + fDelta );
|
||||
break;
|
||||
|
||||
case ChangeSongOffset:
|
||||
if( GAMESTATE->m_pCurSong != NULL )
|
||||
{
|
||||
GAMESTATE->m_pCurSong->m_SongTiming.m_fBeat0OffsetInSeconds += fDelta;
|
||||
const vector<Steps *>& vpSteps = GAMESTATE->m_pCurSong->GetAllSteps();
|
||||
FOREACH( Steps*, const_cast<vector<Steps *>&>(vpSteps), s )
|
||||
{
|
||||
(*s)->m_Timing.m_fBeat0OffsetInSeconds += fDelta;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ChangeSongOffset:
|
||||
{
|
||||
if( GAMESTATE->m_pCurSong != NULL )
|
||||
{
|
||||
GAMESTATE->m_pCurSong->m_SongTiming.m_fBeat0OffsetInSeconds += fDelta;
|
||||
const vector<Steps *>& vpSteps = GAMESTATE->m_pCurSong->GetAllSteps();
|
||||
FOREACH( Steps*, const_cast<vector<Steps *>&>(vpSteps), s )
|
||||
{
|
||||
(*s)->m_Timing.m_fBeat0OffsetInSeconds += fDelta;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
+11
-6
@@ -95,14 +95,19 @@ void ScreenTestInput::Input( const InputEventPlus &input )
|
||||
RString sMessage = input.DeviceI.ToString();
|
||||
switch( input.type )
|
||||
{
|
||||
case IET_FIRST_PRESS:
|
||||
case IET_RELEASE:
|
||||
switch( input.type )
|
||||
case IET_FIRST_PRESS:
|
||||
case IET_RELEASE:
|
||||
{
|
||||
case IET_FIRST_PRESS: sMessage += "Pressed"; break;
|
||||
case IET_RELEASE: sMessage += "Released"; break;
|
||||
switch( input.type )
|
||||
{
|
||||
case IET_FIRST_PRESS: sMessage += "Pressed"; break;
|
||||
case IET_RELEASE: sMessage += "Released"; break;
|
||||
default: break;
|
||||
}
|
||||
MESSAGEMAN->Broadcast( sMessage );
|
||||
break;
|
||||
}
|
||||
MESSAGEMAN->Broadcast( sMessage );
|
||||
default: break;
|
||||
}
|
||||
|
||||
Screen::Input( input ); // default handler
|
||||
|
||||
@@ -59,12 +59,13 @@ void ScreenTestLights::Update( float fDeltaTime )
|
||||
|
||||
switch( LIGHTSMAN->GetLightsMode() )
|
||||
{
|
||||
case LIGHTSMODE_TEST_AUTO_CYCLE:
|
||||
s += AUTO_CYCLE.GetValue()+"\n";
|
||||
break;
|
||||
case LIGHTSMODE_TEST_MANUAL_CYCLE:
|
||||
s += MANUAL_CYCLE.GetValue()+"\n";
|
||||
break;
|
||||
case LIGHTSMODE_TEST_AUTO_CYCLE:
|
||||
s += AUTO_CYCLE.GetValue()+"\n";
|
||||
break;
|
||||
case LIGHTSMODE_TEST_MANUAL_CYCLE:
|
||||
s += MANUAL_CYCLE.GetValue()+"\n";
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( cl == CabinetLight_Invalid )
|
||||
|
||||
+44
-43
@@ -137,68 +137,69 @@ void ScreenTestSound::Input( const InputEventPlus &input )
|
||||
case DEVICE_KEYBOARD:
|
||||
switch( input.DeviceI.button )
|
||||
{
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5': selected = input.DeviceI.button - '0'-1; break;
|
||||
case 'p':
|
||||
{
|
||||
/* We want to be able to read the position of copied sounds; if we let
|
||||
* RageSound copy itself, then the copy will be owned by RageSoundManager
|
||||
* and we won't be allowed to touch it. Copy it ourself. */
|
||||
RageSound *pCopy = new RageSound( s[selected].s );
|
||||
m_sSoundCopies[selected].push_back( pCopy );
|
||||
pCopy->Play();
|
||||
break;
|
||||
}
|
||||
case 's':
|
||||
for( int i = 0; i < nsounds; ++i )
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5': selected = input.DeviceI.button - '0'-1; break;
|
||||
case 'p':
|
||||
{
|
||||
/* Stop copied sounds. */
|
||||
vector<RageSound *> &snds = m_sSoundCopies[i];
|
||||
for( unsigned j = 0; j < snds.size(); ++j )
|
||||
snds[j]->Stop();
|
||||
/* We want to be able to read the position of copied sounds; if we let
|
||||
* RageSound copy itself, then the copy will be owned by RageSoundManager
|
||||
* and we won't be allowed to touch it. Copy it ourself. */
|
||||
RageSound *pCopy = new RageSound( s[selected].s );
|
||||
m_sSoundCopies[selected].push_back( pCopy );
|
||||
pCopy->Play();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'l':
|
||||
case 's':
|
||||
{
|
||||
for( int i = 0; i < nsounds; ++i )
|
||||
{
|
||||
/* Stop copied sounds. */
|
||||
vector<RageSound *> &snds = m_sSoundCopies[i];
|
||||
for( unsigned j = 0; j < snds.size(); ++j )
|
||||
snds[j]->Stop();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'l':
|
||||
{
|
||||
RageSoundParams p = s[selected].s.GetParams();
|
||||
p.StopMode = RageSoundParams::M_LOOP;
|
||||
s[selected].s.SetParams( p );
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case 'a':
|
||||
case 'a':
|
||||
{
|
||||
RageSoundParams p = s[selected].s.GetParams();
|
||||
p.StopMode = RageSoundParams::M_STOP;
|
||||
s[selected].s.SetParams( p );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'c':
|
||||
case 'c':
|
||||
{
|
||||
RageSoundParams p = s[selected].s.GetParams();
|
||||
p.StopMode = RageSoundParams::M_CONTINUE;
|
||||
s[selected].s.SetParams( p );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
/* case KEY_LEFT:
|
||||
obj.SetX(obj.GetX() - 10);
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
obj.SetX(obj.GetX() + 10);
|
||||
break;
|
||||
case KEY_UP:
|
||||
obj.SetY(obj.GetY() - 10);
|
||||
break;
|
||||
case KEY_DOWN:
|
||||
obj.SetY(obj.GetY() + 10);
|
||||
break;
|
||||
/* case KEY_LEFT:
|
||||
obj.SetX(obj.GetX() - 10);
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
obj.SetX(obj.GetX() + 10);
|
||||
break;
|
||||
case KEY_UP:
|
||||
obj.SetY(obj.GetY() - 10);
|
||||
break;
|
||||
case KEY_DOWN:
|
||||
obj.SetY(obj.GetY() + 10);
|
||||
break;
|
||||
*/
|
||||
default: break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -200,10 +200,11 @@ void ScreenTextEntry::Input( const InputEventPlus &input )
|
||||
{
|
||||
switch( input.type )
|
||||
{
|
||||
case IET_FIRST_PRESS:
|
||||
case IET_REPEAT:
|
||||
BackspaceInAnswer();
|
||||
break;
|
||||
case IET_FIRST_PRESS:
|
||||
case IET_REPEAT:
|
||||
BackspaceInAnswer();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if( input.type == IET_FIRST_PRESS )
|
||||
|
||||
+6
-5
@@ -497,7 +497,7 @@ RageColor SongManager::GetSongColor( const Song* pSong ) const
|
||||
int i = m_vPreferredSongSort.size();
|
||||
return SONG_GROUP_COLOR.GetValue( i%NUM_SONG_GROUP_COLORS );
|
||||
}
|
||||
else
|
||||
else // TODO: Have a better fallback plan with colors?
|
||||
{
|
||||
/* XXX: Previously, this matched all notes, which set a song to "extra"
|
||||
* if it had any 10-foot steps at all, even edits or doubles.
|
||||
@@ -516,9 +516,10 @@ RageColor SongManager::GetSongColor( const Song* pSong ) const
|
||||
const Steps* pSteps = vpSteps[i];
|
||||
switch( pSteps->GetDifficulty() )
|
||||
{
|
||||
case Difficulty_Challenge:
|
||||
case Difficulty_Edit:
|
||||
continue;
|
||||
case Difficulty_Challenge:
|
||||
case Difficulty_Edit:
|
||||
continue;
|
||||
default: break;
|
||||
}
|
||||
|
||||
//if(pSteps->m_StepsType != st)
|
||||
@@ -527,7 +528,7 @@ RageColor SongManager::GetSongColor( const Song* pSong ) const
|
||||
if( pSteps->GetMeter() >= EXTRA_COLOR_METER )
|
||||
return (RageColor)EXTRA_COLOR;
|
||||
}
|
||||
if( pSong->m_sMainTitle == "DVNO")
|
||||
if( pSong->m_sMainTitle == "DVNO") // XXX: What IS this? An easter egg? -Wolfman2000
|
||||
{
|
||||
return RageColor(1.0f,0.8f,0.0f,1.0f);
|
||||
}
|
||||
|
||||
+4
-3
@@ -166,9 +166,10 @@ void StageStats::FinalizeScores( bool bSummary )
|
||||
{
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
return; // don't save scores in battle
|
||||
case PLAY_MODE_BATTLE:
|
||||
case PLAY_MODE_RAVE:
|
||||
return; // don't save scores in battle
|
||||
default: break;
|
||||
}
|
||||
|
||||
if( PREFSMAN->m_sTestInitialScreen.Get() != "" )
|
||||
|
||||
+22
-21
@@ -1273,28 +1273,29 @@ bool HandleGlobalInputs( const InputEventPlus &input )
|
||||
|
||||
switch( input.MenuI )
|
||||
{
|
||||
case GAME_BUTTON_OPERATOR:
|
||||
/* Global operator key, to get quick access to the options menu. Don't
|
||||
* do this if we're on a "system menu", which includes the editor
|
||||
* (to prevent quitting without storing changes). */
|
||||
if( SCREENMAN->AllowOperatorMenuButton() )
|
||||
{
|
||||
SCREENMAN->SystemMessage( SERVICE_SWITCH_PRESSED );
|
||||
SCREENMAN->PopAllScreens();
|
||||
GAMESTATE->Reset();
|
||||
SCREENMAN->SetNewScreen( CommonMetrics::OPERATOR_MENU_SCREEN );
|
||||
}
|
||||
return true;
|
||||
case GAME_BUTTON_OPERATOR:
|
||||
/* Global operator key, to get quick access to the options menu. Don't
|
||||
* do this if we're on a "system menu", which includes the editor
|
||||
* (to prevent quitting without storing changes). */
|
||||
if( SCREENMAN->AllowOperatorMenuButton() )
|
||||
{
|
||||
SCREENMAN->SystemMessage( SERVICE_SWITCH_PRESSED );
|
||||
SCREENMAN->PopAllScreens();
|
||||
GAMESTATE->Reset();
|
||||
SCREENMAN->SetNewScreen( CommonMetrics::OPERATOR_MENU_SCREEN );
|
||||
}
|
||||
return true;
|
||||
|
||||
case GAME_BUTTON_COIN:
|
||||
// Handle a coin insertion.
|
||||
if( GAMESTATE->IsEditing() ) // no coins while editing
|
||||
{
|
||||
LOG->Trace( "Ignored coin insertion (editing)" );
|
||||
break;
|
||||
}
|
||||
StepMania::InsertCoin();
|
||||
return false; // Attract needs to know because it goes to TitleMenu on > 1 credit
|
||||
case GAME_BUTTON_COIN:
|
||||
// Handle a coin insertion.
|
||||
if( GAMESTATE->IsEditing() ) // no coins while editing
|
||||
{
|
||||
LOG->Trace( "Ignored coin insertion (editing)" );
|
||||
break;
|
||||
}
|
||||
StepMania::InsertCoin();
|
||||
return false; // Attract needs to know because it goes to TitleMenu on > 1 credit
|
||||
default: break;
|
||||
}
|
||||
|
||||
/* Re-added for StepMania 3.9 theming veterans, plus it's just faster than
|
||||
|
||||
+15
-10
@@ -268,18 +268,20 @@ static float GetArcadePoints( const Profile *pProfile )
|
||||
{
|
||||
switch(pm)
|
||||
{
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
fAP += pProfile->m_iNumSongsPlayedByPlayMode[pm];
|
||||
break;
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
{
|
||||
fAP += pProfile->m_iNumSongsPlayedByPlayMode[pm];
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return fAP;
|
||||
}
|
||||
|
||||
// TODO: Make this more flexible for games with many grade tiers. Lua-ize it? -Wolfman2000
|
||||
static float GetSongPoints( const Profile *pProfile )
|
||||
{
|
||||
float fSP = 0;
|
||||
@@ -297,6 +299,7 @@ static float GetSongPoints( const Profile *pProfile )
|
||||
case Grade_Tier07:/*D*/ fSP += 1* pProfile->m_iNumStagesPassedByGrade[g]; break;
|
||||
case Grade_Failed:
|
||||
case Grade_NoData:
|
||||
default:
|
||||
; // no points
|
||||
break;
|
||||
}
|
||||
@@ -306,11 +309,13 @@ static float GetSongPoints( const Profile *pProfile )
|
||||
{
|
||||
switch(pm)
|
||||
{
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
case PLAY_MODE_NONSTOP:
|
||||
case PLAY_MODE_ONI:
|
||||
case PLAY_MODE_ENDLESS:
|
||||
{
|
||||
fSP += pProfile->m_iNumSongsPlayedByPlayMode[pm];
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user