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