fucking...

This commit is contained in:
AJ Kelly
2011-08-01 16:59:12 -05:00
4 changed files with 86 additions and 14 deletions
+2 -1
View File
@@ -676,7 +676,8 @@ bool SSCLoader::LoadFromSimfile( const RString &sPath, Song &out, bool bFromCach
{
ProcessLabels(stepsTiming, sParams[1]);
}
/* If this is called, the chart does not use the same attacks
* as the Song's timing. No other changes are required. */
else if( sValueName=="ATTACKS" )
{
ProcessAttackString(pNewNotes->m_sAttackString, sParams);
+8 -4
View File
@@ -345,11 +345,15 @@ static RString GetSSCNoteData( const Song &song, const Steps &in, bool bSavingCa
lines.push_back( ssprintf( "#RADARVALUES:%s;", join(",",asRadarValues).c_str() ) );
lines.push_back( ssprintf( "#CREDIT:%s;", SmEscape(in.GetCredit()).c_str() ) );
lines.push_back( ssprintf( "#OFFSET:%.6f;", in.m_Timing.m_fBeat0OffsetInSeconds ) );
GetTimingTags( lines, in.m_Timing );
lines.push_back( ssprintf("#ATTACKS:%s;", in.GetAttackString().c_str()));
// XXX: Is there a better way to write this?
if (const_cast<TimingData &>(song.m_SongTiming) != in.m_Timing)
{
lines.push_back( ssprintf( "#OFFSET:%.6f;", in.m_Timing.m_fBeat0OffsetInSeconds ) );
GetTimingTags( lines, in.m_Timing );
}
if (song.GetAttackString() != in.GetAttackString())
lines.push_back( ssprintf("#ATTACKS:%s;", in.GetAttackString().c_str()));
switch( in.GetDisplayBPM() )
{
+1 -1
View File
@@ -41,7 +41,7 @@
* @brief The internal version of the cache for StepMania.
*
* Increment this value to invalidate the current cache. */
const int FILE_CACHE_VERSION = 199;
const int FILE_CACHE_VERSION = 200;
/** @brief How long does a song sample last by default? */
const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f;
+75 -8
View File
@@ -8,7 +8,7 @@
struct lua_State;
/** @brief Compare a TimingData segment's properties with one another. */
#define COMPARE(x) if(x!=other.x) return false;
#define COMPARE(x) if(this->x!=other.x) return false;
/**
* @brief Holds data for translating beats<->seconds.
@@ -743,15 +743,82 @@ public:
*/
bool operator==( const TimingData &other )
{
for (int i = 0; i < NUM_TimingSegmentType; i++)
unsigned i;
#define COMPARE_SEGMENT(kind, tst, i) \
if (static_cast<kind *>(this->allTimingSegments[tst][i]) != \
static_cast<kind *>(other.allTimingSegments[tst][i])) \
return false
COMPARE(allTimingSegments[SEGMENT_BPM].size());
for (i = 0; i < allTimingSegments[SEGMENT_BPM].size(); i++)
{
COMPARE(allTimingSegments[i].size());
for (unsigned j=0; j < allTimingSegments[i].size(); j++)
{
COMPARE(allTimingSegments[i][j]);
}
COMPARE_SEGMENT(BPMSegment, SEGMENT_BPM, i);
}
COMPARE(allTimingSegments[SEGMENT_STOP].size());
for (i = 0; i < allTimingSegments[SEGMENT_STOP].size(); i++)
{
COMPARE_SEGMENT(StopSegment, SEGMENT_STOP, i);
}
COMPARE(allTimingSegments[SEGMENT_DELAY].size());
for (i = 0; i < allTimingSegments[SEGMENT_DELAY].size(); i++)
{
COMPARE_SEGMENT(DelaySegment, SEGMENT_DELAY, i);
}
COMPARE(allTimingSegments[SEGMENT_WARP].size());
for (i = 0; i < allTimingSegments[SEGMENT_WARP].size(); i++)
{
COMPARE_SEGMENT(WarpSegment, SEGMENT_WARP, i);
}
COMPARE(allTimingSegments[SEGMENT_TIME_SIG].size());
for (i = 0; i < allTimingSegments[SEGMENT_TIME_SIG].size(); i++)
{
COMPARE_SEGMENT(TimeSignatureSegment, SEGMENT_TIME_SIG, i);
}
COMPARE(allTimingSegments[SEGMENT_TICKCOUNT].size());
for (i = 0; i < allTimingSegments[SEGMENT_TICKCOUNT].size(); i++)
{
COMPARE_SEGMENT(TickcountSegment, SEGMENT_TICKCOUNT, i);
}
COMPARE(allTimingSegments[SEGMENT_COMBO].size());
for (i = 0; i < allTimingSegments[SEGMENT_COMBO].size(); i++)
{
COMPARE_SEGMENT(ComboSegment, SEGMENT_COMBO, i);
}
COMPARE(allTimingSegments[SEGMENT_SPEED].size());
for (i = 0; i < allTimingSegments[SEGMENT_SPEED].size(); i++)
{
COMPARE_SEGMENT(SpeedSegment, SEGMENT_SPEED, i);
}
COMPARE(allTimingSegments[SEGMENT_SCROLL].size());
for (i = 0; i < allTimingSegments[SEGMENT_SCROLL].size(); i++)
{
COMPARE_SEGMENT(ScrollSegment, SEGMENT_SCROLL, i);
}
COMPARE(allTimingSegments[SEGMENT_LABEL].size());
for (i = 0; i < allTimingSegments[SEGMENT_LABEL].size(); i++)
{
COMPARE_SEGMENT(LabelSegment, SEGMENT_LABEL, i);
}
COMPARE(allTimingSegments[SEGMENT_FAKE].size());
for (i = 0; i < allTimingSegments[SEGMENT_FAKE].size(); i++)
{
COMPARE_SEGMENT(FakeSegment, SEGMENT_FAKE, i);
}
COMPARE( m_fBeat0OffsetInSeconds );
#undef COMPARE_SEGMENT
return true;
}
/**
@@ -760,7 +827,7 @@ public:
* @return the inequality or lack thereof of the two TimingData.
*/
bool operator!=( const TimingData &other ) { return !operator==(other); }
void ScaleRegion( float fScale = 1, int iStartRow = 0, int iEndRow = MAX_NOTE_ROW, bool bAdjustBPM = false );
void InsertRows( int iStartRow, int iRowsToAdd );
void DeleteRows( int iStartRow, int iRowsToDelete );