@@ -496,7 +496,7 @@ void NoteDataUtil::LoadFromETTNoteDataString( NoteData& out, const RString &sSMN
496
496
out.RevalidateATIs (vector<int >(), false );
497
497
}
498
498
499
- void NoteDataUtil::LoadFromSMNoteDataString ( NoteData &out, const RString &sSMNoteData_ , bool bComposite )
499
+ void NoteDataUtil::LoadFromSMNoteDataString ( NoteData &out, const RString &sSMNoteData_ )
500
500
{
501
501
// Load note data
502
502
RString sSMNoteData ;
@@ -520,31 +520,7 @@ void NoteDataUtil::LoadFromSMNoteDataString( NoteData &out, const RString &sSMNo
520
520
int iNumTracks = out.GetNumTracks ();
521
521
out.Init ();
522
522
out.SetNumTracks ( iNumTracks );
523
-
524
- if ( !bComposite )
525
- {
526
- LoadFromSMNoteDataStringWithPlayer ( out, sSMNoteData , 0 , sSMNoteData .size (),
527
- PLAYER_INVALID, iNumTracks );
528
- return ;
529
- }
530
-
531
- int start = 0 , size = -1 ;
532
-
533
- vector<NoteData> vParts;
534
- FOREACH_PlayerNumber ( pn )
535
- {
536
- // Split in place.
537
- split ( sSMNoteData , " &" , start, size, false );
538
- if ( unsigned (start) == sSMNoteData .size () )
539
- break ;
540
- vParts.push_back ( NoteData () );
541
- NoteData &nd = vParts.back ();
542
-
543
- nd.SetNumTracks ( iNumTracks );
544
- LoadFromSMNoteDataStringWithPlayer ( nd, sSMNoteData , start, size, pn, iNumTracks );
545
- }
546
- CombineCompositeNoteData ( out, vParts );
547
- out.RevalidateATIs (vector<int >(), false );
523
+ LoadFromSMNoteDataStringWithPlayer ( out, sSMNoteData , 0 , sSMNoteData .size (), PLAYER_INVALID, iNumTracks );
548
524
}
549
525
550
526
void NoteDataUtil::InsertHoldTails ( NoteData &inout )
@@ -578,8 +554,6 @@ void NoteDataUtil::GetSMNoteDataString( const NoteData &in, RString &sRet )
578
554
vector<NoteData> parts;
579
555
float fLastBeat = -1 .0f ;
580
556
581
- SplitCompositeNoteData ( in, parts );
582
-
583
557
FOREACH ( NoteData, parts, nd )
584
558
{
585
559
InsertHoldTails ( *nd );
@@ -657,7 +631,6 @@ void NoteDataUtil::GetETTNoteDataString(const NoteData &in, RString &sRet) {
657
631
// Get note data
658
632
vector<NoteData> parts;
659
633
float fLastBeat = -1 .f ;
660
- SplitCompositeNoteData (in, parts);
661
634
662
635
FOREACH (NoteData, parts, nd) {
663
636
fLastBeat = max (fLastBeat , nd->GetLastBeat ());
@@ -810,72 +783,6 @@ void NoteDataUtil::GetETTNoteDataString(const NoteData &in, RString &sRet) {
810
783
sRet .shrink_to_fit ();
811
784
}
812
785
813
- void NoteDataUtil::SplitCompositeNoteData ( const NoteData &in, vector<NoteData> &out )
814
- {
815
- if ( !in.IsComposite () )
816
- {
817
- out.push_back ( in );
818
- return ;
819
- }
820
-
821
- FOREACH_PlayerNumber ( pn )
822
- {
823
- out.push_back ( NoteData () );
824
- out.back ().SetNumTracks ( in.GetNumTracks () );
825
- }
826
-
827
- for ( int t = 0 ; t < in.GetNumTracks (); ++t )
828
- {
829
- for ( NoteData::const_iterator iter = in.begin (t); iter != in.end (t); ++iter )
830
- {
831
- int row = iter->first ;
832
- TapNote tn = iter->second ;
833
- /*
834
- XXX: This code is (hopefully) a temporary hack to make sure that
835
- routine charts don't have any notes without players assigned to them.
836
- I suspect this is due to a related bug that these problems were
837
- occuring to begin with, but at this time, I am unsure how to deal with it.
838
- Hopefully this hack can be removed soon. -- Jason "Wolfman2000" Felds
839
- */
840
- const Style *curStyle = GAMESTATE->GetCurrentStyle (PLAYER_INVALID);
841
- if ( (curStyle == NULL || curStyle->m_StyleType == StyleType_TwoPlayersSharedSides )
842
- && static_cast <int >( tn.pn ) > NUM_PlayerNumber )
843
- {
844
- tn.pn = PLAYER_1;
845
- }
846
- unsigned index = static_cast <int >( tn.pn );
847
-
848
- ASSERT_M ( index < NUM_PlayerNumber, ssprintf (" We have a note not assigned to a player. The note in question is on beat %f, column %i." , NoteRowToBeat (row), t + 1 ) );
849
- tn.pn = PLAYER_INVALID;
850
- out[index].SetTapNote ( t, row, tn );
851
- }
852
- }
853
- }
854
-
855
- void NoteDataUtil::CombineCompositeNoteData ( NoteData &out, const vector<NoteData> &in )
856
- {
857
- FOREACH_CONST ( NoteData, in, nd )
858
- {
859
- const int iMaxTracks = min ( out.GetNumTracks (), nd->GetNumTracks () );
860
-
861
- for ( int track = 0 ; track < iMaxTracks; ++track )
862
- {
863
- for ( NoteData::const_iterator i = nd->begin (track); i != nd->end (track); ++i )
864
- {
865
- int row = i->first ;
866
- if ( out.IsHoldNoteAtRow (track, i->first ) )
867
- continue ;
868
- if ( i->second .type == TapNoteType_HoldHead )
869
- out.AddHoldNote ( track, row, row + i->second .iDuration , i->second );
870
- else
871
- out.SetTapNote ( track, row, i->second );
872
- }
873
- }
874
- }
875
- out.RevalidateATIs (vector<int >(), false );
876
- }
877
-
878
-
879
786
void NoteDataUtil::LoadTransformedSlidingWindow ( const NoteData &in, NoteData &out, int iNewNumTracks )
880
787
{
881
788
// reset all notes
@@ -1282,18 +1189,7 @@ void NoteDataUtil::RemoveSimultaneousNotes( NoteData &in, int iMaxSimultaneous,
1282
1189
// given time. Never touch data outside of the range given; if many hold notes are overlapping
1283
1190
// iStartIndex, and we'd have to change those holds to obey iMaxSimultaneous, just do the best
1284
1191
// we can without doing so.
1285
- if ( in.IsComposite () )
1286
- {
1287
- // Do this per part.
1288
- vector<NoteData> vParts;
1289
-
1290
- SplitCompositeNoteData ( in, vParts );
1291
- FOREACH ( NoteData, vParts, nd )
1292
- RemoveSimultaneousNotes ( *nd, iMaxSimultaneous, iStartIndex, iEndIndex );
1293
- in.Init ();
1294
- in.SetNumTracks ( vParts.front ().GetNumTracks () );
1295
- CombineCompositeNoteData ( in, vParts );
1296
- }
1192
+
1297
1193
FOREACH_NONEMPTY_ROW_ALL_TRACKS_RANGE ( in, r, iStartIndex, iEndIndex )
1298
1194
{
1299
1195
set<int > viTracksHeld;
0 commit comments