Etterna 0.74.4
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
NoteData Class Reference

Holds data about the notes that the player is supposed to hit. More...

#include <NoteData.h>

Classes

class  _all_tracks_iterator
 

Public Types

using TrackMap = std::map< int, TapNote >
 
using iterator = std::map< int, TapNote >::iterator
 
using const_iterator = std::map< int, TapNote >::const_iterator
 
using reverse_iterator = std::map< int, TapNote >::reverse_iterator
 
using const_reverse_iterator = std::map< int, TapNote >::const_reverse_iterator
 
using all_tracks_iterator = _all_tracks_iterator< NoteData, iterator, TapNote >
 
using all_tracks_const_iterator = _all_tracks_iterator< const NoteData, const_iterator, const TapNote >
 
using all_tracks_reverse_iterator = all_tracks_iterator
 
using all_tracks_const_reverse_iterator = all_tracks_const_iterator
 

Public Member Functions

auto begin (int iTrack) -> iterator
 
auto begin (int iTrack) const -> const_iterator
 
auto rbegin (int iTrack) -> reverse_iterator
 
auto rbegin (int iTrack) const -> const_reverse_iterator
 
auto end (int iTrack) -> iterator
 
auto end (int iTrack) const -> const_iterator
 
auto rend (int iTrack) -> reverse_iterator
 
auto rend (int iTrack) const -> const_reverse_iterator
 
auto lower_bound (int iTrack, int iRow) -> iterator
 
auto lower_bound (int iTrack, int iRow) const -> const_iterator
 
auto upper_bound (int iTrack, int iRow) -> iterator
 
auto upper_bound (int iTrack, int iRow) const -> const_iterator
 
void swap (NoteData &nd)
 
void Init ()
 
void LogNonEmptyRows (TimingData *ts)
 
void UnsetNerv ()
 
void UnsetSerializedNoteData ()
 
auto BuildAndGetNerv (TimingData *ts) -> const std::vector< int > &
 
auto WifeTotalScoreCalc (TimingData *td, int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNonEmptyRowVector () -> std::vector< int > &
 
auto SerializeNoteData (const std::vector< float > &etaner) -> const std::vector< NoteInfo > &
 
auto SerializeNoteData2 (TimingData *ts, bool unset_nerv_when_done=true, bool unset_etaner_when_done=true) -> const std::vector< NoteInfo > &
 
auto GetNumTracks () const -> int
 
void SetNumTracks (int iNewNumTracks)
 
auto operator== (const NoteData &nd) const -> bool
 
auto operator!= (const NoteData &nd) const -> bool
 
auto GetTapNote (const unsigned &track, const int &row) const -> const TapNote &
 
auto FindTapNote (unsigned iTrack, int iRow) -> iterator
 
auto FindTapNote (unsigned iTrack, int iRow) const -> const_iterator
 
void RemoveTapNote (unsigned iTrack, iterator it)
 
void GetTapNoteRange (int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &begin, TrackMap::const_iterator &end) const
 Return an iterator range for [rowBegin,rowEnd).
 
void GetTapNoteRange (int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &begin, TrackMap::iterator &end)
 Return a constant iterator range for [rowBegin,rowEnd).
 
auto GetTapNoteRangeAllTracks (int iStartRow, int iEndRow, bool bInclusive=false) -> all_tracks_iterator
 
auto GetTapNoteRangeAllTracks (int iStartRow, int iEndRow, bool bInclusive=false) const -> all_tracks_const_iterator
 
auto GetTapNoteRangeAllTracksReverse (int iStartRow, int iEndRow, bool bInclusive=false) -> all_tracks_reverse_iterator
 
auto GetTapNoteRangeAllTracksReverse (int iStartRow, int iEndRow, bool bInclusive=false) const -> all_tracks_const_reverse_iterator
 
void RevalidateATIs (std::vector< int > const &added_or_removed_tracks, bool added)
 
void GetTapNoteRangeInclusive (int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &begin, TrackMap::const_iterator &end, bool bIncludeAdjacent=false) const
 
void GetTapNoteRangeInclusive (int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &begin, TrackMap::iterator &end, bool bIncludeAdjacent=false)
 
void GetTapNoteRangeExclusive (int iTrack, int iStartRow, int iEndRow, TrackMap::const_iterator &begin, TrackMap::const_iterator &end) const
 
void GetTapNoteRangeExclusive (int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &begin, TrackMap::iterator &end)
 
auto GetNextTapNoteRowForTrack (int track, int &rowInOut, bool ignoreAutoKeysounds=false) const -> bool
 
auto GetNextTapNoteRowForAllTracks (int &rowInOut) const -> bool
 
auto GetPrevTapNoteRowForTrack (int track, int &rowInOut) const -> bool
 
auto GetPrevTapNoteRowForAllTracks (int &rowInOut) const -> bool
 
void MoveTapNoteTrack (int dest, int src)
 
void SetTapNote (int track, int row, const TapNote &tn)
 
void AddHoldNote (int iTrack, int iStartRow, int iEndRow, TapNote tn)
 Add a hold note, merging other overlapping holds and destroying tap notes underneath.
 
void ClearRangeForTrack (int rowBegin, int rowEnd, int iTrack)
 
void ClearRange (int rowBegin, int rowEnd)
 
void ClearAll ()
 
void CopyRange (const NoteData &from, int rowFromBegin, int rowFromEnd, int rowToBegin=0)
 
void CopyAll (const NoteData &from)
 
auto IsRowEmpty (int row) const -> bool
 
auto IsRangeEmpty (int track, int rowBegin, int rowEnd) const -> bool
 
auto GetNumTapNonEmptyTracks (int row) const -> int
 
void GetTapNonEmptyTracks (int row, std::set< int > &addTo) const
 
auto GetTapFirstNonEmptyTrack (int row, int &iNonEmptyTrackOut) const -> bool
 
auto GetTapFirstEmptyTrack (int row, int &iEmptyTrackOut) const -> bool
 
auto GetTapLastEmptyTrack (int row, int &iEmptyTrackOut) const -> bool
 
auto GetNumTracksWithTap (int row) const -> int
 
auto GetNumTracksWithTapOrHoldHead (int row) const -> int
 
auto GetFirstTrackWithTap (int row) const -> int
 
auto GetFirstTrackWithTapOrHoldHead (int row) const -> int
 
auto GetLastTrackWithTapOrHoldHead (int row) const -> int
 
auto IsThereATapAtRow (int row) const -> bool
 
auto IsThereATapOrHoldHeadAtRow (int row) const -> bool
 
void GetTracksHeldAtRow (int row, std::set< int > &addTo) const
 
auto GetNumTracksHeldAtRow (int row) -> int
 
auto IsHoldNoteAtRow (int iTrack, int iRow, int *pHeadRow=nullptr) const -> bool
 
auto IsHoldHeadOrBodyAtRow (int iTrack, int iRow, int *pHeadRow) const -> bool
 
auto IsEmpty () const -> bool
 
auto IsTrackEmpty (int iTrack) const -> bool
 
auto GetFirstRow () const -> int
 
auto GetLastRow () const -> int
 
auto GetFirstBeat () const -> float
 
auto GetLastBeat () const -> float
 
auto GetNumTapNotes (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumTapNotesNoTiming (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumTapNotesInRow (int iRow) const -> int
 
auto GetNumMines (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumRowsWithTap (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumRowsWithTapOrHoldHead (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumHoldNotes (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumRolls (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumRowsWithSimultaneousTaps (int iMinTaps, int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumJumps (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto RowNeedsAtLeastSimultaneousPresses (int iMinSimultaneousPresses, int row) const -> bool
 
auto RowNeedsHands (int row) const -> bool
 
auto GetNumRowsWithSimultaneousPresses (int iMinSimultaneousPresses, int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumHands (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumQuads (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumLifts (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumFakes (int iStartIndex=0, int iEndIndex=MAX_NOTE_ROW) const -> int
 
auto GetNumTracksLCD () const -> int
 
void LoadTransformed (const NoteData &in, int iNewNumTracks, const int iOriginalTrackToTakeFrom[])
 
auto CreateNode () const -> XNode *
 

Static Public Member Functions

static void LoadFromNode (const XNode *pNode)
 

Friends

class _all_tracks_iterator< NoteData, iterator, TapNote >
 
class _all_tracks_iterator< const NoteData, const_iterator, const TapNote >
 

Detailed Description

Holds data about the notes that the player is supposed to hit.

Member Function Documentation

◆ AddHoldNote()

void NoteData::AddHoldNote ( int  iTrack,
int  iStartRow,
int  iEndRow,
TapNote  tn 
)

Add a hold note, merging other overlapping holds and destroying tap notes underneath.

Parameters
iTrackthe column to work with.
iStartRowthe starting row.
iEndRowthe ending row.
tnthe tap note.

◆ GetTapNoteRange() [1/2]

void NoteData::GetTapNoteRange ( int  iTrack,
int  iStartRow,
int  iEndRow,
TrackMap::const_iterator &  begin,
TrackMap::const_iterator &  end 
) const

Return an iterator range for [rowBegin,rowEnd).

This can be used to efficiently iterate trackwise over a range of notes. It's like FOREACH_NONEMPTY_ROW_IN_TRACK_RANGE, except it only requires two map searches (iterating is constant time), but the iterators will become invalid if the notes they represent disappear, so you need to pay attention to how you modify the data.

Parameters
iTrackthe column to use.
iStartRowthe starting point.
iEndRowthe ending point.
beginthe eventual beginning point of the range.
endthe eventual end point of the range.

◆ GetTapNoteRange() [2/2]

void NoteData::GetTapNoteRange ( int  iTrack,
int  iStartRow,
int  iEndRow,
TrackMap::iterator &  begin,
TrackMap::iterator &  end 
)

Return a constant iterator range for [rowBegin,rowEnd).

Parameters
iTrackthe column to use.
iStartRowthe starting point.
iEndRowthe ending point.
beginthe eventual beginning point of the range.
endthe eventual end point of the range.

The documentation for this class was generated from the following files: