Temp branch [timing] for conversion process.
May need some help with Notes*Json.
This commit is contained in:
@@ -31,8 +31,9 @@ static void Deserialize(StopSegment &seg, const Json::Value &root)
|
||||
|
||||
static void Deserialize(TimingData &td, const Json::Value &root)
|
||||
{
|
||||
JsonUtil::DeserializeVectorObjects( td.m_BPMSegments, Deserialize, root["BpmSegments"] );
|
||||
JsonUtil::DeserializeVectorObjects( td.m_StopSegments, Deserialize, root["StopSegments"] );
|
||||
vector<TimingSegment *> &bpms = td.allTimingSegments[SEGMENT_BPM];
|
||||
// JsonUtil::DeserializeVectorObjects( &bpms, Deserialize, root["BpmSegments"] );
|
||||
// JsonUtil::DeserializeVectorObjects( *(td).allTimingSegments[SEGMENT_STOP_DELAY], Deserialize, root["StopSegments"] );
|
||||
}
|
||||
|
||||
static void Deserialize(LyricSegment &o, const Json::Value &root)
|
||||
|
||||
@@ -932,7 +932,8 @@ bool SMLoader::LoadFromSimfile( const RString &sPath, Song &out, bool bFromCache
|
||||
}
|
||||
|
||||
// Ensure all warps from negative time changes are in order.
|
||||
sort(out.m_SongTiming.m_WarpSegments.begin(), out.m_SongTiming.m_WarpSegments.end());
|
||||
vector<TimingSegment *> &warps = out.m_SongTiming.allTimingSegments[SEGMENT_WARP];
|
||||
sort(warps.begin(), warps.end());
|
||||
TidyUpData( out, bFromCache );
|
||||
return true;
|
||||
}
|
||||
|
||||
+18
-13
@@ -352,9 +352,13 @@ bool NotesWriterDWI::Write( RString sPath, const Song &out )
|
||||
/* Write transliterations, if we have them, since DWI doesn't support UTF-8. */
|
||||
f.PutLine( ssprintf("#TITLE:%s;", DwiEscape(out.GetTranslitFullTitle()).c_str()) );
|
||||
f.PutLine( ssprintf("#ARTIST:%s;", DwiEscape(out.GetTranslitArtist()).c_str()) );
|
||||
ASSERT( out.m_SongTiming.m_BPMSegments[0].GetRow() == 0 );
|
||||
|
||||
const vector<TimingSegment *> &bpms = out.m_SongTiming.allTimingSegments[SEGMENT_BPM];
|
||||
|
||||
ASSERT_M(bpms[0]->GetRow() == 0,
|
||||
ssprintf("The first BPM Segment must be defined at row 0, not %d!", bpms[0]->GetRow()) );
|
||||
f.PutLine( ssprintf("#FILE:%s;", DwiEscape(out.m_sMusicFile).c_str()) );
|
||||
f.PutLine( ssprintf("#BPM:%.3f;", out.m_SongTiming.m_BPMSegments[0].GetBPM()) );
|
||||
f.PutLine( ssprintf("#BPM:%.3f;", static_cast<BPMSegment *>(bpms[0])->GetBPM()) );
|
||||
f.PutLine( ssprintf("#GAP:%ld;", -lrintf( out.m_SongTiming.m_fBeat0OffsetInSeconds*1000 )) );
|
||||
f.PutLine( ssprintf("#SAMPLESTART:%.3f;", out.m_fMusicSampleStartSeconds) );
|
||||
f.PutLine( ssprintf("#SAMPLELENGTH:%.3f;", out.m_fMusicSampleLengthSeconds) );
|
||||
@@ -376,29 +380,30 @@ bool NotesWriterDWI::Write( RString sPath, const Song &out )
|
||||
break;
|
||||
}
|
||||
|
||||
if( !out.m_SongTiming.m_StopSegments.empty() )
|
||||
const vector<TimingSegment *> &stops = out.m_SongTiming.allTimingSegments[SEGMENT_STOP_DELAY];
|
||||
if( !stops.empty() )
|
||||
{
|
||||
f.Write( "#FREEZE:" );
|
||||
|
||||
for( unsigned i=0; i<out.m_SongTiming.m_StopSegments.size(); i++ )
|
||||
for( unsigned i=0; i<stops.size(); i++ )
|
||||
{
|
||||
const StopSegment &fs = out.m_SongTiming.m_StopSegments[i];
|
||||
f.Write( ssprintf("%.3f=%.3f", fs.GetRow() * 4.0f / ROWS_PER_BEAT,
|
||||
roundf(fs.GetPause()*1000)) );
|
||||
if( i != out.m_SongTiming.m_StopSegments.size()-1 )
|
||||
const StopSegment *fs = static_cast<StopSegment *>(stops[i]);
|
||||
f.Write( ssprintf("%.3f=%.3f", fs->GetRow() * 4.0f / ROWS_PER_BEAT,
|
||||
roundf(fs->GetPause()*1000)) );
|
||||
if( i != stops.size()-1 )
|
||||
f.Write( "," );
|
||||
}
|
||||
f.PutLine( ";" );
|
||||
}
|
||||
|
||||
if( out.m_SongTiming.m_BPMSegments.size() > 1)
|
||||
if( bpms.size() > 1)
|
||||
{
|
||||
f.Write( "#CHANGEBPM:" );
|
||||
for( unsigned i=1; i<out.m_SongTiming.m_BPMSegments.size(); i++ )
|
||||
for( unsigned i=1; i<bpms.size(); i++ )
|
||||
{
|
||||
const BPMSegment &bs = out.m_SongTiming.m_BPMSegments[i];
|
||||
f.Write( ssprintf("%.3f=%.3f", bs.GetRow() * 4.0f / ROWS_PER_BEAT, bs.GetBPM() ) );
|
||||
if( i != out.m_SongTiming.m_BPMSegments.size()-1 )
|
||||
const BPMSegment *bs = static_cast<BPMSegment *>(bpms[i]);
|
||||
f.Write( ssprintf("%.3f=%.3f", bs->GetRow() * 4.0f / ROWS_PER_BEAT, bs->GetBPM() ) );
|
||||
if( i != bpms.size()-1 )
|
||||
f.Write( "," );
|
||||
}
|
||||
f.PutLine( ";" );
|
||||
|
||||
+2
-6
@@ -8,14 +8,10 @@
|
||||
#include <float.h>
|
||||
|
||||
|
||||
TimingData::TimingData() :
|
||||
m_fBeat0OffsetInSeconds(0)
|
||||
{
|
||||
}
|
||||
|
||||
TimingData::TimingData(float fOffset) :
|
||||
m_fBeat0OffsetInSeconds(fOffset)
|
||||
{
|
||||
{
|
||||
// allTimingSegments[SEGMENT_BPM] = new vector<BPMSegment>();
|
||||
}
|
||||
|
||||
void TimingData::GetActualBPM( float &fMinBPMOut, float &fMaxBPMOut, float highest ) const
|
||||
|
||||
+12
-69
@@ -16,14 +16,10 @@ struct lua_State;
|
||||
class TimingData
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @brief Sets up initial timing data.
|
||||
*/
|
||||
TimingData();
|
||||
/**
|
||||
* @brief Sets up initial timing data with a defined offset.
|
||||
* @param fOffset the offset from the 0th beat. */
|
||||
TimingData(float fOffset);
|
||||
TimingData(float fOffset = 0);
|
||||
/**
|
||||
* @brief Gets the actual BPM of the song,
|
||||
* while respecting a limit.
|
||||
@@ -1303,36 +1299,14 @@ public:
|
||||
*/
|
||||
bool operator==( const TimingData &other )
|
||||
{
|
||||
COMPARE( m_BPMSegments.size() );
|
||||
for( unsigned i=0; i<m_BPMSegments.size(); i++ )
|
||||
COMPARE( m_BPMSegments[i] );
|
||||
COMPARE( m_StopSegments.size() );
|
||||
for( unsigned i=0; i<m_StopSegments.size(); i++ )
|
||||
COMPARE( m_StopSegments[i] );
|
||||
COMPARE( m_WarpSegments.size() );
|
||||
for( unsigned i=0; i<m_WarpSegments.size(); i++ )
|
||||
COMPARE( m_WarpSegments[i] );
|
||||
COMPARE( m_vTimeSignatureSegments.size() );
|
||||
for( unsigned i=0; i<m_vTimeSignatureSegments.size(); i++)
|
||||
COMPARE( m_vTimeSignatureSegments[i] );
|
||||
COMPARE( m_TickcountSegments.size() );
|
||||
for( unsigned i=0; i<m_TickcountSegments.size(); i++ )
|
||||
COMPARE( m_TickcountSegments[i] );
|
||||
COMPARE( m_ComboSegments.size() );
|
||||
for( unsigned i=0; i<m_ComboSegments.size(); i++ )
|
||||
COMPARE( m_ComboSegments[i] );
|
||||
COMPARE( m_LabelSegments.size() );
|
||||
for( unsigned i=0; i<m_LabelSegments.size(); i++ )
|
||||
COMPARE( m_LabelSegments[i] );
|
||||
COMPARE( m_SpeedSegments.size() );
|
||||
for( unsigned i=0; i<m_SpeedSegments.size(); i++ )
|
||||
COMPARE( m_SpeedSegments[i] );
|
||||
COMPARE( m_ScrollSegments.size() );
|
||||
for( unsigned i=0; i<m_ScrollSegments.size(); i++ )
|
||||
COMPARE( m_ScrollSegments[i] );
|
||||
COMPARE( m_FakeSegments.size() );
|
||||
for( unsigned i=0; i<m_FakeSegments.size(); i++ )
|
||||
COMPARE( m_FakeSegments[i] );
|
||||
for (int i = 0; i < NUM_TimingSegmentTypes; i++)
|
||||
{
|
||||
COMPARE(allTimingSegments[i].size());
|
||||
for (unsigned j=0; j < allTimingSegments[i].size(); j++)
|
||||
{
|
||||
COMPARE(allTimingSegments[i][j]);
|
||||
}
|
||||
}
|
||||
COMPARE( m_fBeat0OffsetInSeconds );
|
||||
return true;
|
||||
}
|
||||
@@ -1361,40 +1335,9 @@ public:
|
||||
*/
|
||||
RString m_sFile;
|
||||
// All of the following vectors must be sorted before gameplay.
|
||||
/**
|
||||
* @brief The collection of BPMSegments.
|
||||
*/
|
||||
vector<BPMSegment> m_BPMSegments;
|
||||
/**
|
||||
* @brief The collection of StopSegments & DelaySegments.
|
||||
*/
|
||||
vector<StopSegment> m_StopSegments;
|
||||
/**
|
||||
* @brief The collection of TimeSignatureSegments.
|
||||
*/
|
||||
vector<TimeSignatureSegment> m_vTimeSignatureSegments;
|
||||
/**
|
||||
* @brief The collection of WarpSegments.
|
||||
*/
|
||||
vector<WarpSegment> m_WarpSegments;
|
||||
/**
|
||||
* @brief The collection of TickcountSegments.
|
||||
*/
|
||||
vector<TickcountSegment> m_TickcountSegments;
|
||||
/**
|
||||
* @brief The collection of ComboSegments.
|
||||
*/
|
||||
vector<ComboSegment> m_ComboSegments;
|
||||
/**
|
||||
* @brief The collection of LabelSegments.
|
||||
*/
|
||||
vector<LabelSegment> m_LabelSegments;
|
||||
/** @brief The collection of SpeedSegments. */
|
||||
vector<SpeedSegment> m_SpeedSegments;
|
||||
/** @brief The collection of ScrollSegments. */
|
||||
vector<ScrollSegment> m_ScrollSegments;
|
||||
/** @brief The collection of FakeSegments. */
|
||||
vector<FakeSegment> m_FakeSegments;
|
||||
|
||||
|
||||
vector<TimingSegment *> allTimingSegments[NUM_TimingSegmentTypes];
|
||||
|
||||
/**
|
||||
* @brief The initial offset of a song.
|
||||
|
||||
Reference in New Issue
Block a user