diff --git a/NoteSkins/common/common/Fallback Ovceptor.redir b/NoteSkins/common/common/Fallback Ovceptor.redir new file mode 100644 index 0000000000..04b2ead777 --- /dev/null +++ b/NoteSkins/common/common/Fallback Ovceptor.redir @@ -0,0 +1 @@ +_blank \ No newline at end of file diff --git a/src/NoteField.cpp b/src/NoteField.cpp index 74f0671f75..de5c7ec6ab 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -949,7 +949,8 @@ void NoteField::DrawPrimitives() m_ColumnRenderers[c].Draw(); } - cur->m_GhostArrowRow.Draw(); + cur->m_GhostArrowRow.Draw(); + cur->m_ReceptorArrowRow.DrawOverlay(); } void NoteField::DrawBoardPrimitive() diff --git a/src/NoteField.h b/src/NoteField.h index cbae8f18f3..0784f6cba2 100644 --- a/src/NoteField.h +++ b/src/NoteField.h @@ -1,4 +1,4 @@ -#ifndef NOTE_FIELD_H +#ifndef NOTE_FIELD_H #define NOTE_FIELD_H #include "ActorFrame.h" diff --git a/src/ReceptorArrow.cpp b/src/ReceptorArrow.cpp index dc4b450ab8..0a66c9b535 100644 --- a/src/ReceptorArrow.cpp +++ b/src/ReceptorArrow.cpp @@ -1,4 +1,4 @@ -#include "global.h" +#include "global.h" #include "GameState.h" #include "NoteSkinManager.h" #include "PlayerState.h" @@ -13,7 +13,7 @@ ReceptorArrow::ReceptorArrow() m_bWasReverse = false; } -void ReceptorArrow::Load( const PlayerState* pPlayerState, int iColNo ) +void ReceptorArrow::Load( const PlayerState* pPlayerState, int iColNo, RString Type ) { m_pPlayerState = pPlayerState; m_iColNo = iColNo; @@ -29,7 +29,7 @@ void ReceptorArrow::Load( const PlayerState* pPlayerState, int iColNo ) NOTESKIN->SetGameController( GameI[0].controller ); RString sButton = GAMESTATE->GetCurrentStyle(pn)->ColToButtonName( iColNo ); - m_pReceptor.Load( NOTESKIN->LoadActor(sButton, "Receptor") ); + m_pReceptor.Load( NOTESKIN->LoadActor(sButton,Type) ); this->AddChild( m_pReceptor ); bool bReverse = m_pPlayerState->m_PlayerOptions.GetCurrent().GetReversePercentForColumn(m_iColNo) > 0.5f; diff --git a/src/ReceptorArrow.h b/src/ReceptorArrow.h index 17fc0f9ef3..88486aa986 100644 --- a/src/ReceptorArrow.h +++ b/src/ReceptorArrow.h @@ -1,4 +1,4 @@ -#ifndef RECEPTOR_ARROW_H +#ifndef RECEPTOR_ARROW_H #define RECEPTOR_ARROW_H #include "ActorFrame.h" @@ -11,7 +11,7 @@ class ReceptorArrow : public ActorFrame { public: ReceptorArrow(); - void Load( const PlayerState* pPlayerState, int iColNo ); + void Load( const PlayerState* pPlayerState, int iColNo, RString Type ); void DrawPrimitives() override; void Update( float fDeltaTime ) override; diff --git a/src/ReceptorArrowRow.cpp b/src/ReceptorArrowRow.cpp index 67ebe585b6..f13acc614b 100644 --- a/src/ReceptorArrowRow.cpp +++ b/src/ReceptorArrowRow.cpp @@ -1,4 +1,4 @@ -#include "global.h" +#include "global.h" #include "ArrowEffects.h" #include "GameConstantsAndTypes.h" #include "GameState.h" @@ -24,10 +24,14 @@ void ReceptorArrowRow::Load( const PlayerState* pPlayerState, float fYReverseOff for( int c=0; cm_iColsPerPlayer; c++ ) { - m_ReceptorArrow.push_back( new ReceptorArrow ); - m_ReceptorArrow[c]->SetName( "ReceptorArrow" ); - m_ReceptorArrow[c]->Load( m_pPlayerState, c ); - this->AddChild( m_ReceptorArrow[c] ); + m_ReceptorArrow.push_back( new ReceptorArrow ); + m_OverlayReceptorArrow.push_back(new ReceptorArrow); + m_ReceptorArrow[c]->SetName( "ReceptorArrow" ); + m_OverlayReceptorArrow[c]->SetName("OverlayReceptor"); + m_ReceptorArrow[c]->Load( m_pPlayerState, c, "Receptor" ); + m_OverlayReceptorArrow[c]->Load( m_pPlayerState, c, "Ovceptor" ); + this->AddChild( m_ReceptorArrow[c] ); + this->AddChild( m_OverlayReceptorArrow[c] ); } } @@ -68,19 +72,22 @@ void ReceptorArrowRow::Update( float fDeltaTime ) fBaseAlpha *= (1 - m_fFadeToFailPercent); } CLAMP( fBaseAlpha, 0.0f, 1.0f ); - m_ReceptorArrow[c]->SetBaseAlpha( fBaseAlpha ); + m_ReceptorArrow[c]->SetBaseAlpha( fBaseAlpha ); + m_OverlayReceptorArrow[c]->SetBaseAlpha(fBaseAlpha); if(m_renderers != NULL) { // set arrow XYZ - (*m_renderers)[c].UpdateReceptorGhostStuff(m_ReceptorArrow[c]); + (*m_renderers)[c].UpdateReceptorGhostStuff(m_ReceptorArrow[c]); + (*m_renderers)[c].UpdateReceptorGhostStuff(m_OverlayReceptorArrow[c]); } else { // ScreenNameEntry uses ReceptorArrowRow but doesn't have or need // column renderers. Just do the lazy thing and offset x. -Kyz const Style* style= GAMESTATE->GetCurrentStyle(m_pPlayerState->m_PlayerNumber); - m_ReceptorArrow[c]->SetX(style->m_ColumnInfo[m_pPlayerState->m_PlayerNumber][c].fXOffset); + m_ReceptorArrow[c]->SetX(style->m_ColumnInfo[m_pPlayerState->m_PlayerNumber][c].fXOffset); + m_OverlayReceptorArrow[c]->SetX(style->m_ColumnInfo[m_pPlayerState->m_PlayerNumber][c].fXOffset); } } } @@ -93,6 +100,16 @@ void ReceptorArrowRow::DrawPrimitives() const int c = pStyle->m_iColumnDrawOrder[i]; m_ReceptorArrow[c]->Draw(); } +} + +void ReceptorArrowRow::DrawOverlay() +{ + const Style* pStyle = GAMESTATE->GetCurrentStyle(m_pPlayerState->m_PlayerNumber); + for (unsigned i = 0; im_iColumnDrawOrder[i]; + m_OverlayReceptorArrow[c]->Draw(); + } } void ReceptorArrowRow::Step( int iCol, TapNoteScore score ) diff --git a/src/ReceptorArrowRow.h b/src/ReceptorArrowRow.h index 77fe7d8ca4..9e4a46a5c3 100644 --- a/src/ReceptorArrowRow.h +++ b/src/ReceptorArrowRow.h @@ -14,7 +14,8 @@ class ReceptorArrowRow : public ActorFrame ReceptorArrowRow(); ~ReceptorArrowRow() override; void Update( float fDeltaTime ) override; - void DrawPrimitives() override; + void DrawPrimitives() override; + void DrawOverlay(); void Load( const PlayerState* pPlayerState, float fYReverseOffset ); void SetColumnRenderers(vector& renderers); @@ -31,7 +32,8 @@ class ReceptorArrowRow : public ActorFrame float m_fFadeToFailPercent; vector const* m_renderers; - vector m_ReceptorArrow; + vector m_ReceptorArrow; + vector m_OverlayReceptorArrow; }; #endif