Commit Graph

160 Commits

Author SHA1 Message Date
Steve Checkoway 15611d510b Simplify. Remove the condition from the iterator. Almost nothing uses it (although other things could), it seems more trouble than it's worth. 2007-09-17 03:27:33 +00:00
Chris Danford 215fd9f2ad fix TapNotes being given TNS_Miss after they were already judged (also caused non-checkpoint HoldNotes to LetGo)
fix HoldNotes never receive judgment because out of range ones were not being passed to UpdateHoldNotes.
2007-09-17 00:03:43 +00:00
Chris Danford c330dd6ae0 add to all_tracks_iterator: copy constructor, operator=, GetIter 2007-09-13 05:18:05 +00:00
Chris Danford 5a73f14767 add IsEmptyTrack 2007-09-04 04:21:35 +00:00
Chris Danford fb1fd171cb add bInclusive option to _all_tracks_iterator 2007-01-15 11:30:40 +00:00
Chris Danford 668158658e move Jump window and Hopo window values to be preferences 2006-12-11 12:59:32 +00:00
Chris Danford 8dad4f1ac1 show hopo-possible notes with addition coloring 2006-12-01 14:18:18 +00:00
Chris Danford 6b07fcaed5 add hammer-ons and pull-offs ("hopo") 2006-11-30 12:29:01 +00:00
Steve Checkoway 9d19fd5008 Simplify. 2006-10-23 03:35:34 +00:00
Steve Checkoway 802b2349a1 Simplify reverse iterators. There isn't a "past the beginning" iterator so this is hard to make a true bidirectional iterator. Instead restrict this to a single direction based on the m_bReverse parameter. Use the "past the end" iterator in place of the "past the beginning" iterator when in reverse. 2006-10-23 03:33:24 +00:00
Steve Checkoway cd9ec6d6c0 Pointers to a member function Foo::Bar() have the form &Foo::Bar. The & is mandatory, unlike pointers to functions. 2006-10-23 00:14:12 +00:00
Chris Danford 21fafaa046 add all_tracks_reverse_iterator 2006-10-22 23:08:13 +00:00
Steve Checkoway c9850c2eb3 Cleanup. 2006-08-23 23:34:53 +00:00
Steve Checkoway 468b44805b Comment. 2006-08-23 22:44:32 +00:00
Steve Checkoway e319f9205e Header guard. 2006-08-23 22:39:43 +00:00
Steve Checkoway 8cffb9666f Simplify. 2006-08-23 22:33:08 +00:00
Steve Checkoway 63b3bc4cb7 Header cleanup. 2006-08-17 18:14:24 +00:00
Steve Checkoway 5ccbffebfc Simplify IsAtEnd logic. (I forgot to mention that these iterators have a one time O(log n) cost to construct.) 2006-08-17 18:05:42 +00:00
Steve Checkoway f57bc1ef78 Use NoteData::iterator instead of a track-row pair. With n nonempty rows in the NoteData and m nonempty rows in the range, iterating over the whole range took O(m log n). Now, it takes O(m). (Saves the map look ups which are amortized log-time.) 2006-08-17 17:58:45 +00:00
Steve Checkoway 44615a7224 Fix comments. 2006-08-16 12:08:27 +00:00
Steve Checkoway 993fe3832e Add const versions. 2006-08-16 12:06:35 +00:00
Steve Checkoway 6bfccc7f4c Remove IteratorCondition, use NULL to signify what was previously IteratorCondition::All. 2006-08-16 11:57:24 +00:00
Steve Checkoway dc9361a4ef Move class template's member function definitions out of the header, explicitly instantiate all_tracks_iterator and all_tracks_const_iterator.
Apart from cleaning up the header (the main goal), this should improve compile time by instantiating in a single place so the linker doesn't have to combine multiple definitions.
2006-08-16 11:37:38 +00:00
Steve Checkoway b9de4e9965 Specialize std::swap() for NoteData in terms of NoteData::swap() so that swap( a, b ) takes constant time. 2006-07-24 05:58:11 +00:00
Steve Checkoway 0cb3814965 Implement swap(). Instead of doing
foo( NoteData &inout )
{
	NoteData temp;
	/* some operation on temp involving inout. */
	inout = temp;
}
which requires copying all of temp, replace the assignment with swap which takes constant time instead of linear (or likely n log n since they're in maps) in the number of notes.
2006-07-24 04:49:03 +00:00
Josh Allen b4040ae8c9 Fix warnings 2006-07-21 16:01:43 +00:00
Steve Checkoway 077f826afd No need for friend. This only uses the public interface. 2006-07-21 08:03:13 +00:00
Steve Checkoway 28e8e9148e GetTapNoteRangeAllTracks() returns an all_tracks_iterator which can be used to iterate over all of the tracks in all of the rows in the range. 2006-07-21 07:58:30 +00:00
Steve Checkoway 8129d943ba It's hard to maintain this information when using begin() and end() so rather than wrapping the iterators, just check each time IsComposite() is called since it doesn't happen _that_ often. Just don't call IsComposite() often. 2006-06-26 09:33:11 +00:00
Steve Checkoway 91f1329653 Composite NoteData for when one NoteData represents multiple NoteDatas. 2006-06-20 13:20:45 +00:00
Chris Danford 1ad58b4631 experimental: save NoteData to XML for recording played games 2005-11-22 21:18:45 +00:00
Glenn Maynard b8838ba5c0 comment to make IsHoldNoteAtRow's behavior clear, add IsHoldHeadOrBodyAtRow 2005-07-22 00:34:54 +00:00
Glenn Maynard 4ec405f13b IsHoldNoteAtBeat -> IsHoldNoteAtRow 2005-07-22 00:14:24 +00:00
Glenn Maynard 5769d00abf implement GetPrevTapNoteRowForAllTracks 2005-07-21 22:30:00 +00:00
Glenn Maynard 73f5051118 add NoteData::GetNumRolls 2005-04-25 09:33:58 +00:00
Chris Danford cd8b35e801 fix "can't paste from clipboard with only one row in clipboard"
fix "can't Undo to a blank NoteField"
clamp paste area so that pasting past the maximum beat is impossible
2005-03-29 20:25:14 +00:00
Glenn Maynard 34b8c2a01a fix hands counting 2005-03-23 10:37:36 +00:00
Chris Danford 5befb60456 method name cleanup, add comments 2005-03-20 20:15:41 +00:00
Glenn Maynard f752e1c3b0 hide NoteData::InsertHoldTails away in NoteDataUtils 2005-02-07 22:03:32 +00:00
Glenn Maynard 10bc0bf336 remove NoteData::RemoveHoldTails
cleanup
2005-02-07 21:55:43 +00:00
Glenn Maynard bb7482e722 evil big commit (sorry):
Remove m_HoldNote array entirely.  Remove 2sAnd3s.  Store hold note
durations in the hold head.  hold_tail only still exists when InsertHoldTails
is used, to make SM parsing a little easier (may go away).  Add helpers
for iterating over ranges while including or excluding adjacent and overlapping
hold notes.  Range operations are now [start,end) instead of [start,end].
(probably more details coming to sm-dev soon)
2005-01-25 05:02:35 +00:00
Glenn Maynard 206363742d remove 4s 2005-01-23 21:37:40 +00:00
Glenn Maynard 5da9c848d6 make NoteDataUtil::LoadTransformedLights work 2005-01-23 17:58:32 +00:00
Glenn Maynard 7cf3351851 implement NoteDataUtil::ClearLeft and NoteDataUtil::ClearRight without 4s 2005-01-23 05:31:55 +00:00
Glenn Maynard 14bc4ae9f6 reduce use of 4s 2005-01-22 20:22:12 +00:00
Glenn Maynard a769bc7c41 cleanup 2005-01-22 19:25:05 +00:00
Glenn Maynard cd9b66220a use MAX_NOTE_ROW, fixes 2005-01-22 19:18:42 +00:00
Glenn Maynard 77d58c0d63 "Beat rows" are really just a fixed-point representation of beats. Prefer
using them in general over beats: it's more precise (we can tell exactly
how it'll round, and we can compare them without ugly error-margin hacks),
and it's what we need to use them with NoteData.
2005-01-22 17:34:10 +00:00
Glenn Maynard 754bce5c98 optimize rendering iteration 2005-01-22 03:11:29 +00:00
Glenn Maynard d581ae240e fix row 0 being skipped 2004-11-03 08:22:20 +00:00