4#include "Etterna/Actor/Base/Actor.h"
5#include "Etterna/Models/Misc/CubicSpline.h"
6#include "Etterna/Models/Misc/GameInput.h"
7#include "Etterna/Models/NoteData/NoteData.h"
8#include "Etterna/Models/Misc/PlayerNumber.h"
29 NotePart_HoldBottomCap,
37 NoteColorType_Denominator,
38 NoteColorType_Progress,
43NoteColorTypeToString(NoteColorType nct) ->
const std::string&;
45StringToNoteColorType(
const std::string& s) -> NoteColorType;
53 void Load(
const std::string& sButton,
54 const std::string& sElement,
58 auto Get(
const std::string&) ->
Actor*;
61 std::map<std::string, NoteResource*> g_p;
68 void Load(
const std::string& sButton,
69 const std::string& sElement,
73 auto Get(
const std::string&) ->
Sprite*;
76 std::map<std::string, NoteResource*> g_p;
88#define FOREACH_HoldType(i) FOREACH_ENUM(HoldType, i)
90HoldTypeToString(HoldType ht) ->
const std::string&;
100#define FOREACH_ActiveType(i) FOREACH_ENUM(ActiveType, i)
102ActiveTypeToString(ActiveType at) ->
const std::string&;
104enum NoteColumnSplineMode
109 NUM_NoteColumnSplineMode,
110 NoteColumnSplineMode_Invalid
114NoteColumnSplineModeToString(NoteColumnSplineMode ncsm) ->
const std::string&;
115LuaDeclareType(NoteColumnSplineMode);
122 float reverse_offset_pixels;
130 float draw_pixels_before_targets;
131 float draw_pixels_after_targets;
132 int* selection_begin_marker;
133 int* selection_end_marker;
134 float selection_glow;
136 float fade_before_targets;
146 m_spline.redimension(3);
147 m_spline.m_owned_by_actor =
true;
148 m_spline_mode = NCSM_Disabled;
150 m_beats_per_t = 1.0F;
151 m_subtract_song_beat_from_curr =
true;
154 [[nodiscard]]
auto BeatToTValue(
float song_beat,
float note_beat)
const
156 void EvalForBeat(
float song_beat,
float note_beat,
RageVector3& ret)
const;
157 void EvalDerivForBeat(
float song_beat,
160 void EvalForReceptor(
float song_beat,
RageVector3& ret)
const;
167 NoteColumnSplineMode m_spline_mode;
170 bool m_subtract_song_beat_from_curr;
172 void PushSelf(lua_State* L);
177 void spae_pos_for_beat(
const PlayerState* player_state,
180 float y_reverse_offset,
187 static void SetPRZForActor(
Actor* actor,
210 void Load(
int iColNum,
212 float fYReverseOffsetPixels);
214 static void Update(
float fDeltaTime);
216 auto DrawHoldsInRange(
219 const std::vector<NoteData::TrackMap::const_iterator>& tap_set) -> bool;
220 auto DrawTapsInRange(
223 const std::vector<NoteData::TrackMap::const_iterator>& tap_set) -> bool;
243 bool bOnSameRowAsHoldStart,
244 bool bOnSameRowAsRollBeat,
246 float fPercentFadeToFail);
247 void DrawHold(
const TapNote& tn,
254 float fPercentFadeToFail);
256 [[nodiscard]]
auto DrawHoldHeadForTapsOnSameRow()
const -> bool;
257 [[nodiscard]]
auto DrawRollHeadForTapsOnSameRow()
const -> bool;
258 float m_fYReverseOffsetPixels;
261 void SetActiveFrame(
float fNoteBeat,
263 float fAnimationLength,
265 auto GetTapActor(
NoteColorActor& nca, NotePart part,
float fNoteBeat)
const
267 auto GetHoldActor(
NoteColorActor nca[NUM_HoldType][NUM_ActiveType],
271 bool bIsBeingHeld)
const ->
Actor*;
276 bool bIsBeingHeld)
const ->
Sprite*;
278 struct draw_hold_part_args
281 float percent_fade_to_fail;
283 float overlapped_time;
293 bool flip_texture_vertically;
296 void DrawActor(
const TapNote& tn,
304 float fPercentFadeToFail,
306 bool is_being_held)
const;
307 void DrawReplayActors(
const TapNote& tn,
310 const int& row)
const;
312 void DrawHoldPart(std::vector<Sprite*>& vpSpr,
315 const draw_hold_part_args& part_args,
317 int part_type)
const;
318 void DrawHoldBodyInternal(std::vector<Sprite*>& sprite_top,
319 std::vector<Sprite*>& sprite_body,
320 std::vector<Sprite*>& sprite_bottom,
323 draw_hold_part_args& part_args,
324 float head_minus_top,
325 float tail_plus_bottom,
332 void DrawHoldBody(
const TapNote& tn,
340 float percent_fade_to_fail,
358 Actor* replay_offset_start;
359 Actor* replay_offset_body;
360 Actor* replay_offset_end;
383 void UpdateReceptorGhostStuff(
Actor* receptor)
const;
385 void PushSelf(lua_State* L)
override;
400 return !operator==(other);
406 if (NCR_Tweens.empty()) {
409 return NCR_Tweens.back();
412 [[nodiscard]]
auto NCR_DestTweenState() const -> const NCR_TweenState&
417 void SetCurrentTweenStart()
override;
418 void EraseHeadTween()
override;
419 void UpdatePercentThroughTween(
float between)
override;
420 void BeginTweening(
float time,
ITween* interp)
override;
421 void StopTweening()
override;
422 void FinishTweening()
override;
426 return &NCR_DestTweenState().m_pos_handler;
430 return &NCR_DestTweenState().m_rot_handler;
434 return &NCR_DestTweenState().m_zoom_handler;
438 std::vector<NCR_TweenState> NCR_Tweens;
439 NCR_TweenState NCR_current;
440 NCR_TweenState NCR_start;
Base class for all objects that appear on the screen.
Definition Actor.h:78
Row of GhostArrow Actors.
Definition GhostArrowRow.h:11
The interface for simple interpolation.
Definition Tween.h:29
Holds data about the notes that the player is supposed to hit.
Definition NoteData.h:43
Draws TapNotes and HoldNotes.
Definition NoteDisplay.h:205
void DrawTap(const TapNote &tn, const NoteFieldRenderArgs &field_args, const NoteColumnRenderArgs &column_args, float fBeat, bool bOnSameRowAsHoldStart, bool bOnSameRowAsRollBeat, bool bIsAddition, float fPercentFadeToFail)
Draw the TapNote onto the NoteField.
Definition NoteDisplay.cpp:1899
The player's indivdual state.
Definition PlayerState.h:30
A row of ReceptorArrow objects.
Definition ReceptorArrowRow.h:12
A bitmap Actor that animates and moves around.
Definition Sprite.h:13
Definition CubicSpline.h:55
The result of holding (or letting go of) a hold note.
Definition NoteTypes.h:42
Definition NoteDisplay.h:143
Definition NoteDisplay.h:50
Definition NoteDisplay.h:65
Definition NoteDisplay.h:176
Definition NoteDisplay.h:388
Definition NoteDisplay.h:374
void DrawPrimitives() override
Draw the primitives of the Actor.
Definition NoteDisplay.cpp:2075
Definition NoteDisplay.h:120
Definition NoteDisplay.cpp:66
Definition NoteDisplay.cpp:231
Definition RageTypes.h:332
Definition RageTypes.h:172
The various properties of a tap note.
Definition NoteTypes.h:149