fix "PaneDisplay shows bogus values for edits"
This commit is contained in:
+141
-136
@@ -142,163 +142,168 @@ void PaneDisplay::Update( float fDeltaTime )
|
|||||||
|
|
||||||
void PaneDisplay::SetContent( PaneContents c )
|
void PaneDisplay::SetContent( PaneContents c )
|
||||||
{
|
{
|
||||||
m_textContents[c].SetText( "" );
|
CString str = "?"; // fill this in
|
||||||
|
float val = 0; // fill this in
|
||||||
if( (g_Contents[c].req&NEED_NOTES) && !GAMESTATE->m_pCurSteps[m_PlayerNumber] )
|
|
||||||
return;
|
|
||||||
if( (g_Contents[c].req&NEED_COURSE) && !GAMESTATE->m_pCurTrail[m_PlayerNumber] )
|
|
||||||
return;
|
|
||||||
if( (g_Contents[c].req&NEED_PROFILE) && !PROFILEMAN->IsUsingProfile( m_PlayerNumber ) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
const Song *pSong = GAMESTATE->m_pCurSong;
|
const Song *pSong = GAMESTATE->m_pCurSong;
|
||||||
const Steps *pSteps = GAMESTATE->m_pCurSteps[m_PlayerNumber];
|
const Steps *pSteps = GAMESTATE->m_pCurSteps[m_PlayerNumber];
|
||||||
const Course *pCourse = GAMESTATE->m_pCurCourse;
|
const Course *pCourse = GAMESTATE->m_pCurCourse;
|
||||||
const Trail *pTrail = GAMESTATE->m_pCurTrail[m_PlayerNumber];
|
const Trail *pTrail = GAMESTATE->m_pCurTrail[m_PlayerNumber];
|
||||||
|
const Profile *pProfile = PROFILEMAN->GetProfile( m_PlayerNumber );
|
||||||
|
|
||||||
RadarValues rv;
|
if( (g_Contents[c].req&NEED_NOTES) && !pSteps )
|
||||||
|
goto done;
|
||||||
|
if( (g_Contents[c].req&NEED_COURSE) && !pTrail )
|
||||||
|
goto done;
|
||||||
|
if( (g_Contents[c].req&NEED_PROFILE) && !pProfile )
|
||||||
|
goto done;
|
||||||
|
|
||||||
if( g_Contents[c].req&NEED_NOTES )
|
|
||||||
rv = pSteps->GetRadarValues();
|
|
||||||
else if( g_Contents[c].req&NEED_COURSE )
|
|
||||||
rv = pTrail->GetRadarValues();
|
|
||||||
|
|
||||||
float val = 0;
|
|
||||||
CString str;
|
|
||||||
switch( c )
|
|
||||||
{
|
{
|
||||||
case COURSE_NUM_STEPS:
|
RadarValues rv;
|
||||||
case SONG_NUM_STEPS: val = rv[RADAR_NUM_TAPS_AND_HOLDS]; break;
|
|
||||||
case COURSE_JUMPS:
|
|
||||||
case SONG_JUMPS: val = rv[RADAR_NUM_JUMPS]; break;
|
|
||||||
case COURSE_HOLDS:
|
|
||||||
case SONG_HOLDS: val = rv[RADAR_NUM_HOLDS]; break;
|
|
||||||
case COURSE_MINES:
|
|
||||||
case SONG_MINES: val = rv[RADAR_NUM_MINES]; break;
|
|
||||||
case COURSE_HANDS:
|
|
||||||
case SONG_HANDS: val = rv[RADAR_NUM_HANDS]; break;
|
|
||||||
case SONG_DIFFICULTY_RADAR_STREAM: val = rv[RADAR_STREAM]; break;
|
|
||||||
case SONG_DIFFICULTY_RADAR_VOLTAGE: val = rv[RADAR_VOLTAGE]; break;
|
|
||||||
case SONG_DIFFICULTY_RADAR_AIR: val = rv[RADAR_AIR]; break;
|
|
||||||
case SONG_DIFFICULTY_RADAR_FREEZE: val = rv[RADAR_FREEZE]; break;
|
|
||||||
case SONG_DIFFICULTY_RADAR_CHAOS: val = rv[RADAR_CHAOS]; break;
|
|
||||||
case SONG_PROFILE_HIGH_SCORE:
|
|
||||||
val = 100.0f * PROFILEMAN->GetProfile(m_PlayerNumber)->GetStepsHighScoreList(pSong,pSteps).GetTopScore().fPercentDP;
|
|
||||||
break;
|
|
||||||
case SONG_PROFILE_NUM_PLAYS:
|
|
||||||
val = (float) PROFILEMAN->GetProfile(m_PlayerNumber)->GetStepsNumTimesPlayed(pSong,pSteps);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SONG_MACHINE_HIGH_NAME: /* set val for color */
|
if( g_Contents[c].req&NEED_NOTES )
|
||||||
case SONG_MACHINE_HIGH_SCORE:
|
rv = pSteps->GetRadarValues();
|
||||||
CHECKPOINT;
|
else if( g_Contents[c].req&NEED_COURSE )
|
||||||
val = 100.0f * PROFILEMAN->GetMachineProfile()->GetStepsHighScoreList(pSong,pSteps).GetTopScore().fPercentDP;
|
rv = pTrail->GetRadarValues();
|
||||||
break;
|
|
||||||
|
|
||||||
case SONG_MACHINE_RANK:
|
switch( c )
|
||||||
{
|
{
|
||||||
const vector<Song*> best = SONGMAN->GetBestSongs( PROFILE_SLOT_MACHINE );
|
case COURSE_NUM_STEPS:
|
||||||
val = (float) FindIndex( best.begin(), best.end(), pSong );
|
case SONG_NUM_STEPS: val = rv[RADAR_NUM_TAPS_AND_HOLDS]; break;
|
||||||
val += 1;
|
case COURSE_JUMPS:
|
||||||
break;
|
case SONG_JUMPS: val = rv[RADAR_NUM_JUMPS]; break;
|
||||||
|
case COURSE_HOLDS:
|
||||||
|
case SONG_HOLDS: val = rv[RADAR_NUM_HOLDS]; break;
|
||||||
|
case COURSE_MINES:
|
||||||
|
case SONG_MINES: val = rv[RADAR_NUM_MINES]; break;
|
||||||
|
case COURSE_HANDS:
|
||||||
|
case SONG_HANDS: val = rv[RADAR_NUM_HANDS]; break;
|
||||||
|
case SONG_DIFFICULTY_RADAR_STREAM: val = rv[RADAR_STREAM]; break;
|
||||||
|
case SONG_DIFFICULTY_RADAR_VOLTAGE: val = rv[RADAR_VOLTAGE]; break;
|
||||||
|
case SONG_DIFFICULTY_RADAR_AIR: val = rv[RADAR_AIR]; break;
|
||||||
|
case SONG_DIFFICULTY_RADAR_FREEZE: val = rv[RADAR_FREEZE]; break;
|
||||||
|
case SONG_DIFFICULTY_RADAR_CHAOS: val = rv[RADAR_CHAOS]; break;
|
||||||
|
case SONG_PROFILE_HIGH_SCORE:
|
||||||
|
val = 100.0f * PROFILEMAN->GetProfile(m_PlayerNumber)->GetStepsHighScoreList(pSong,pSteps).GetTopScore().fPercentDP;
|
||||||
|
break;
|
||||||
|
case SONG_PROFILE_NUM_PLAYS:
|
||||||
|
val = (float) PROFILEMAN->GetProfile(m_PlayerNumber)->GetStepsNumTimesPlayed(pSong,pSteps);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SONG_MACHINE_HIGH_NAME: /* set val for color */
|
||||||
|
case SONG_MACHINE_HIGH_SCORE:
|
||||||
|
CHECKPOINT;
|
||||||
|
val = 100.0f * PROFILEMAN->GetMachineProfile()->GetStepsHighScoreList(pSong,pSteps).GetTopScore().fPercentDP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SONG_MACHINE_RANK:
|
||||||
|
{
|
||||||
|
const vector<Song*> best = SONGMAN->GetBestSongs( PROFILE_SLOT_MACHINE );
|
||||||
|
val = (float) FindIndex( best.begin(), best.end(), pSong );
|
||||||
|
val += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SONG_PROFILE_RANK:
|
||||||
|
{
|
||||||
|
const vector<Song*> best = SONGMAN->GetBestSongs( PlayerMemCard(m_PlayerNumber) );
|
||||||
|
val = (float) FindIndex( best.begin(), best.end(), pSong );
|
||||||
|
val += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case COURSE_MACHINE_HIGH_NAME: /* set val for color */
|
||||||
|
case COURSE_MACHINE_HIGH_SCORE:
|
||||||
|
val = 100.0f * PROFILEMAN->GetMachineProfile()->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().fPercentDP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COURSE_MACHINE_NUM_PLAYS:
|
||||||
|
val = (float) PROFILEMAN->GetMachineProfile()->GetCourseNumTimesPlayed( pCourse );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COURSE_MACHINE_RANK:
|
||||||
|
{
|
||||||
|
const vector<Course*> best = SONGMAN->GetBestCourses( PROFILE_SLOT_MACHINE );
|
||||||
|
val = (float) FindIndex( best.begin(), best.end(), pCourse );
|
||||||
|
val += 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COURSE_PROFILE_HIGH_SCORE:
|
||||||
|
val = 100.0f * PROFILEMAN->GetProfile(m_PlayerNumber)->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().fPercentDP;
|
||||||
|
break;
|
||||||
|
case COURSE_PROFILE_NUM_PLAYS:
|
||||||
|
val = (float) PROFILEMAN->GetProfile(m_PlayerNumber)->GetCourseNumTimesPlayed( pCourse );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COURSE_PROFILE_RANK:
|
||||||
|
const vector<Course*> best = SONGMAN->GetBestCourses( PlayerMemCard(m_PlayerNumber) );
|
||||||
|
val = (float) FindIndex( best.begin(), best.end(), pCourse );
|
||||||
|
val += 1;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
if( val == RADAR_VAL_UNKNOWN )
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
/* Scale, round, clamp, etc. for floats: */
|
||||||
|
switch( c )
|
||||||
|
{
|
||||||
|
case SONG_DIFFICULTY_RADAR_STREAM:
|
||||||
|
case SONG_DIFFICULTY_RADAR_VOLTAGE:
|
||||||
|
case SONG_DIFFICULTY_RADAR_AIR:
|
||||||
|
case SONG_DIFFICULTY_RADAR_FREEZE:
|
||||||
|
case SONG_DIFFICULTY_RADAR_CHAOS:
|
||||||
|
val = roundf( SCALE( val, 0, 1, 0, 10 ) );
|
||||||
|
val = clamp( val, 0, 10 );
|
||||||
|
str = ssprintf( "%.0f", val );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case SONG_PROFILE_RANK:
|
switch( c )
|
||||||
{
|
{
|
||||||
const vector<Song*> best = SONGMAN->GetBestSongs( PlayerMemCard(m_PlayerNumber) );
|
case SONG_MACHINE_HIGH_NAME:
|
||||||
val = (float) FindIndex( best.begin(), best.end(), pSong );
|
str = PROFILEMAN->GetMachineProfile()->GetStepsHighScoreList(pSong,pSteps).GetTopScore().sName;
|
||||||
val += 1;
|
break;
|
||||||
break;
|
case COURSE_MACHINE_HIGH_NAME:
|
||||||
|
|
||||||
|
str = PROFILEMAN->GetMachineProfile()->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().sName;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SONG_MACHINE_HIGH_SCORE:
|
||||||
|
case COURSE_MACHINE_HIGH_SCORE:
|
||||||
|
case SONG_PROFILE_HIGH_SCORE:
|
||||||
|
case COURSE_PROFILE_HIGH_SCORE:
|
||||||
|
str = ssprintf( "%.2f%%", val );
|
||||||
|
break;
|
||||||
|
case SONG_NUM_STEPS:
|
||||||
|
case SONG_JUMPS:
|
||||||
|
case SONG_HOLDS:
|
||||||
|
case SONG_MINES:
|
||||||
|
case SONG_HANDS:
|
||||||
|
case COURSE_NUM_STEPS:
|
||||||
|
case COURSE_JUMPS:
|
||||||
|
case COURSE_HOLDS:
|
||||||
|
case COURSE_MINES:
|
||||||
|
case COURSE_HANDS:
|
||||||
|
case SONG_MACHINE_NUM_PLAYS:
|
||||||
|
case COURSE_MACHINE_NUM_PLAYS:
|
||||||
|
case SONG_PROFILE_NUM_PLAYS:
|
||||||
|
case COURSE_PROFILE_NUM_PLAYS:
|
||||||
|
case SONG_MACHINE_RANK:
|
||||||
|
case COURSE_MACHINE_RANK:
|
||||||
|
case SONG_PROFILE_RANK:
|
||||||
|
case COURSE_PROFILE_RANK:
|
||||||
|
str = ssprintf( "%.0f", val );
|
||||||
}
|
}
|
||||||
|
|
||||||
case COURSE_MACHINE_HIGH_NAME: /* set val for color */
|
|
||||||
case COURSE_MACHINE_HIGH_SCORE:
|
|
||||||
val = 100.0f * PROFILEMAN->GetMachineProfile()->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().fPercentDP;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case COURSE_MACHINE_NUM_PLAYS:
|
|
||||||
val = (float) PROFILEMAN->GetMachineProfile()->GetCourseNumTimesPlayed( pCourse );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case COURSE_MACHINE_RANK:
|
|
||||||
{
|
|
||||||
const vector<Course*> best = SONGMAN->GetBestCourses( PROFILE_SLOT_MACHINE );
|
|
||||||
val = (float) FindIndex( best.begin(), best.end(), pCourse );
|
|
||||||
val += 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case COURSE_PROFILE_HIGH_SCORE:
|
|
||||||
val = 100.0f * PROFILEMAN->GetProfile(m_PlayerNumber)->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().fPercentDP;
|
|
||||||
break;
|
|
||||||
case COURSE_PROFILE_NUM_PLAYS:
|
|
||||||
val = (float) PROFILEMAN->GetProfile(m_PlayerNumber)->GetCourseNumTimesPlayed( pCourse );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case COURSE_PROFILE_RANK:
|
|
||||||
const vector<Course*> best = SONGMAN->GetBestCourses( PlayerMemCard(m_PlayerNumber) );
|
|
||||||
val = (float) FindIndex( best.begin(), best.end(), pCourse );
|
|
||||||
val += 1;
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Scale, round, clamp, etc. for floats: */
|
|
||||||
switch( c )
|
|
||||||
{
|
|
||||||
case SONG_DIFFICULTY_RADAR_STREAM:
|
|
||||||
case SONG_DIFFICULTY_RADAR_VOLTAGE:
|
|
||||||
case SONG_DIFFICULTY_RADAR_AIR:
|
|
||||||
case SONG_DIFFICULTY_RADAR_FREEZE:
|
|
||||||
case SONG_DIFFICULTY_RADAR_CHAOS:
|
|
||||||
val = roundf( SCALE( val, 0, 1, 0, 10 ) );
|
|
||||||
val = clamp( val, 0, 10 );
|
|
||||||
str = ssprintf( "%.0f", val );
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( c )
|
|
||||||
{
|
|
||||||
case SONG_MACHINE_HIGH_NAME:
|
|
||||||
str = PROFILEMAN->GetMachineProfile()->GetStepsHighScoreList(pSong,pSteps).GetTopScore().sName;
|
|
||||||
break;
|
|
||||||
case COURSE_MACHINE_HIGH_NAME:
|
|
||||||
|
|
||||||
str = PROFILEMAN->GetMachineProfile()->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().sName;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SONG_MACHINE_HIGH_SCORE:
|
|
||||||
case COURSE_MACHINE_HIGH_SCORE:
|
|
||||||
case SONG_PROFILE_HIGH_SCORE:
|
|
||||||
case COURSE_PROFILE_HIGH_SCORE:
|
|
||||||
str = ssprintf( "%.2f%%", val );
|
|
||||||
break;
|
|
||||||
case SONG_NUM_STEPS:
|
|
||||||
case SONG_JUMPS:
|
|
||||||
case SONG_HOLDS:
|
|
||||||
case SONG_MINES:
|
|
||||||
case SONG_HANDS:
|
|
||||||
case COURSE_NUM_STEPS:
|
|
||||||
case COURSE_JUMPS:
|
|
||||||
case COURSE_HOLDS:
|
|
||||||
case COURSE_MINES:
|
|
||||||
case COURSE_HANDS:
|
|
||||||
case SONG_MACHINE_NUM_PLAYS:
|
|
||||||
case COURSE_MACHINE_NUM_PLAYS:
|
|
||||||
case SONG_PROFILE_NUM_PLAYS:
|
|
||||||
case COURSE_PROFILE_NUM_PLAYS:
|
|
||||||
case SONG_MACHINE_RANK:
|
|
||||||
case COURSE_MACHINE_RANK:
|
|
||||||
case SONG_PROFILE_RANK:
|
|
||||||
case COURSE_PROFILE_RANK:
|
|
||||||
str = ssprintf( "%.0f", val );
|
|
||||||
}
|
|
||||||
|
|
||||||
int p;
|
|
||||||
|
|
||||||
|
done:
|
||||||
m_textContents[c].SetText( str );
|
m_textContents[c].SetText( str );
|
||||||
|
|
||||||
const int num = NUM_ITEM_COLORS( g_Contents[c].name );
|
const int num = NUM_ITEM_COLORS( g_Contents[c].name );
|
||||||
for( p = 0; p < num; ++p )
|
for( int p = 0; p < num; ++p )
|
||||||
{
|
{
|
||||||
const CString metric = ITEM_COLOR(g_Contents[c].name, p);
|
const CString metric = ITEM_COLOR(g_Contents[c].name, p);
|
||||||
CStringArray spec;
|
CStringArray spec;
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ RadarValues::RadarValues()
|
|||||||
|
|
||||||
void RadarValues::Init()
|
void RadarValues::Init()
|
||||||
{
|
{
|
||||||
ZERO( *this );
|
FOREACH_RadarCategory( rc )
|
||||||
|
m_fValues[rc] = RADAR_VAL_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
XNode* RadarValues::CreateNode() const
|
XNode* RadarValues::CreateNode() const
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
#include "GameConstantsAndTypes.h"
|
#include "GameConstantsAndTypes.h"
|
||||||
|
|
||||||
|
#define RADAR_VAL_UNKNOWN -1
|
||||||
|
|
||||||
struct XNode;
|
struct XNode;
|
||||||
|
|
||||||
struct RadarValues
|
struct RadarValues
|
||||||
|
|||||||
Reference in New Issue
Block a user