Commit Graph

148 Commits

Author SHA1 Message Date
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
Glenn Maynard 20a278fb92 optimize 2004-10-26 18:34:52 +00:00
Glenn Maynard b6091d6cd5 NoteData::EliminateAllButOneTap -> NoteDataUtil::RemoveAllButOneTap;
use accessors for NoteData::GetFirstRow, NoteData::GetLastRow
2004-10-25 03:36:42 +00:00
Glenn Maynard a99d7e0dc4 remove ReserveRows 2004-10-25 03:17:56 +00:00
Glenn Maynard f63c57b5f4 remove GetTapNoteX 2004-10-25 03:16:40 +00:00
Glenn Maynard c55dfd354f remove PadTapNotes 2004-10-25 03:12:11 +00:00
Glenn Maynard 514f184fef NoteData::GetPrevTapNoteRowForTrack 2004-10-25 00:25:49 +00:00
Chris Danford 1b3c786213 cleanup: variable name and const 2004-10-24 10:20:24 +00:00
Chris Danford 584189a10c naming cleanup: iNoteIndex -> row 2004-10-24 00:17:15 +00:00
Chris Danford 3ac1dba044 simplify TapAttack storage:
store attack info in TapNote
  in the SMNoteData string, store the attack params inline (like with keysounds)
play keysounds when hit
  still doesn't play keysounds on a miss
  still doesn't play autoKeysounds
2004-10-23 23:41:49 +00:00
Chris Danford 09193d9e4b cleanup:
use references when passing NoteData
  Have player own a NoteDataWithScoring, not derive from it
2004-10-23 17:43:49 +00:00
Chris Danford 0f6ed81faf Use a associative arrays instead of normal vectors to hold TapNotes.
More places NoteDataUtil, NoteDataWithScoring need to be converted to use the new row iteration macros.
2004-09-29 06:43:57 +00:00
Chris Danford 3e140b0af9 remove hard-coded track limit in NoteData 2004-09-25 07:59:56 +00:00