[splittiming] PlayerOptions -> HasTimingChanges.

Steps gained most of the functionality and lua doc.
Leaving song version in: may still have a use
thanks to #DISPLAYBPM.
This commit is contained in:
Jason Felds
2011-05-15 14:05:02 -04:00
parent 9ffe6166e2
commit 640f8fe9fc
5 changed files with 28 additions and 1 deletions
+1
View File
@@ -1349,6 +1349,7 @@
<Function name='GetMeter'/> <Function name='GetMeter'/>
<Function name='GetRadarValues'/> <Function name='GetRadarValues'/>
<Function name='GetStepsType'/> <Function name='GetStepsType'/>
<Function name='HasSignificantTimingChanges'/>
<Function name='IsAPlayerEdit'/> <Function name='IsAPlayerEdit'/>
<Function name='IsAnEdit'/> <Function name='IsAnEdit'/>
<Function name='IsAutogen'/> <Function name='IsAutogen'/>
+3
View File
@@ -3368,6 +3368,9 @@
<Function name='GetMeter' return='int' arguments=''> <Function name='GetMeter' return='int' arguments=''>
Returns the numerical difficulty of the Steps. Returns the numerical difficulty of the Steps.
</Function> </Function>
<Function name='HasSignificantTimingChanges' sm-ssc='true' return='bool' arguments=''>
Returns <code>true</code> if the song has significant timing changes.
</Function>
<Function name='GetRadarValues' return='RadarValues' arguments='PlayerNumber pn'> <Function name='GetRadarValues' return='RadarValues' arguments='PlayerNumber pn'>
Returns the complete list of RadarValues for player <code>pn</code>. Use <Link class='RadarValues' function='GetValue' /> to grab a specific value. Returns the complete list of RadarValues for player <code>pn</code>. Use <Link class='RadarValues' function='GetValue' /> to grab a specific value.
</Function> </Function>
+1 -1
View File
@@ -680,7 +680,7 @@ bool PlayerOptions::operator==( const PlayerOptions &other ) const
bool PlayerOptions::IsEasierForSongAndSteps( Song* pSong, Steps* pSteps, PlayerNumber pn ) const bool PlayerOptions::IsEasierForSongAndSteps( Song* pSong, Steps* pSteps, PlayerNumber pn ) const
{ {
if( m_fTimeSpacing && pSong->HasSignificantBpmChangesOrStops() ) if( m_fTimeSpacing && pSteps->HasSignificantTimingChanges() )
return true; return true;
const RadarValues &rv = pSteps->GetRadarValues( pn ); const RadarValues &rv = pSteps->GetRadarValues( pn );
if( m_bTransforms[TRANSFORM_NOHOLDS] && rv[RadarCategory_Holds]>0 ) if( m_bTransforms[TRANSFORM_NOHOLDS] && rv[RadarCategory_Holds]>0 )
+18
View File
@@ -402,6 +402,21 @@ void Steps::SetMeter( int meter )
m_iMeter = meter; m_iMeter = meter;
} }
bool Steps::HasSignificantTimingChanges() const
{
if( m_Timing.HasStops() )
return true;
/* TODO: Deal with DisplayBPM here...if possible?
* Song's version may still be useful. */
else if( m_Timing.HasBpmChanges() || m_Timing.HasWarps() || m_Timing.HasSpeedChanges() )
{
return true;
}
return false;
}
void Steps::SetCachedRadarValues( const RadarValues v[NUM_PLAYERS] ) void Steps::SetCachedRadarValues( const RadarValues v[NUM_PLAYERS] )
{ {
DeAutogen(); DeAutogen();
@@ -426,6 +441,8 @@ public:
DEFINE_METHOD( IsAnEdit, IsAnEdit() ) DEFINE_METHOD( IsAnEdit, IsAnEdit() )
DEFINE_METHOD( IsAPlayerEdit, IsAPlayerEdit() ) DEFINE_METHOD( IsAPlayerEdit, IsAPlayerEdit() )
static int HasSignificantTimingChanges( T* p, lua_State *L ) { lua_pushboolean(L, p->HasSignificantTimingChanges()); return 1; }
static int GetRadarValues( T* p, lua_State *L ) static int GetRadarValues( T* p, lua_State *L )
{ {
PlayerNumber pn = Enum::Check<PlayerNumber>(L, 1); PlayerNumber pn = Enum::Check<PlayerNumber>(L, 1);
@@ -454,6 +471,7 @@ public:
ADD_METHOD( GetFilename ); ADD_METHOD( GetFilename );
ADD_METHOD( GetHash ); ADD_METHOD( GetHash );
ADD_METHOD( GetMeter ); ADD_METHOD( GetMeter );
ADD_METHOD( HasSignificantTimingChanges );
ADD_METHOD( GetRadarValues ); ADD_METHOD( GetRadarValues );
//ADD_METHOD( GetSMNoteData ); //ADD_METHOD( GetSMNoteData );
ADD_METHOD( GetStepsType ); ADD_METHOD( GetStepsType );
+5
View File
@@ -121,6 +121,11 @@ public:
/** @brief Timing data */ /** @brief Timing data */
TimingData m_Timing; TimingData m_Timing;
/**
* @brief Determine if the Steps have any major timing changes during gameplay.
* @return true if it does, or false otherwise. */
bool HasSignificantTimingChanges() const;
// Lua // Lua
void PushSelf( lua_State *L ); void PushSelf( lua_State *L );