Added: Beatmania style arrow-block thingies that appear when you press a key
More Pop'n Noteskin Fun.
This commit is contained in:
@@ -819,6 +819,7 @@ StyleIcon=1
|
||||
NextScreen=ScreenGameplay
|
||||
|
||||
[ScreenGameplay]
|
||||
PressBlockY=10
|
||||
StaticBGY=240
|
||||
StaticBGX=320
|
||||
PrevScreenArcade=ScreenSelectMusic
|
||||
|
||||
@@ -29,7 +29,7 @@ GrayArrow::GrayArrow()
|
||||
{
|
||||
GR_STEP_SECONDS.Refresh();
|
||||
GR_STEP_ZOOM.Refresh();
|
||||
|
||||
m_bIsPressed = false;
|
||||
StopAnimating();
|
||||
}
|
||||
|
||||
@@ -47,7 +47,10 @@ bool GrayArrow::Load( CString NoteSkin, PlayerNumber pn, int iColNo )
|
||||
GetNumStates() != 3 )
|
||||
RageException::Throw( "'%s' must have 2 or 3 frames", sPath.c_str() );
|
||||
|
||||
return ret;
|
||||
sPath = NOTESKIN->GetPathTo( NoteSkin, Button, "KeypressBlock" );
|
||||
bool ret2 = m_sprPressBlock.Load( sPath );
|
||||
m_sprPressBlock.SetXY(0, THEME->GetMetricI ("ScreenGameplay","PressBlockY"));
|
||||
return ret&ret2; // return both loaded or fail
|
||||
}
|
||||
|
||||
void GrayArrow::Update( float fDeltaTime )
|
||||
@@ -85,6 +88,17 @@ void GrayArrow::Update( float fDeltaTime )
|
||||
cur_beat -= flash_offset;
|
||||
float fPercentIntoBeat = fmodf(cur_beat, 1);
|
||||
SetState( (fPercentIntoBeat<flash_length)? OnState : OffState );
|
||||
m_sprPressBlock.Update(fDeltaTime);
|
||||
}
|
||||
|
||||
void GrayArrow::Draw()
|
||||
{
|
||||
Sprite::Draw();
|
||||
if(m_bIsPressed)
|
||||
{
|
||||
m_sprPressBlock.Draw();
|
||||
m_bIsPressed = false;
|
||||
}
|
||||
}
|
||||
|
||||
void GrayArrow::Step()
|
||||
|
||||
@@ -22,8 +22,13 @@ public:
|
||||
GrayArrow();
|
||||
bool Load( CString NoteSkin, PlayerNumber pn, int iColNo );
|
||||
|
||||
virtual void Draw();
|
||||
virtual void Update( float fDeltaTime );
|
||||
void Step();
|
||||
void UpdateBars() { m_bIsPressed = true; };
|
||||
private:
|
||||
Sprite m_sprPressBlock;
|
||||
bool m_bIsPressed;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -146,6 +146,12 @@ void NoteFieldPlus::Step( int iCol )
|
||||
m_GrayArrow[iCol].Step();
|
||||
}
|
||||
|
||||
void NoteFieldPlus::UpdateBars( int iCol )
|
||||
{
|
||||
ASSERT( iCol >= 0 && iCol < m_iNumCols );
|
||||
m_GrayArrow[iCol].UpdateBars();
|
||||
}
|
||||
|
||||
void NoteFieldPlus::TapNote( int iCol, TapNoteScore score, bool bBright )
|
||||
{
|
||||
ASSERT( iCol >= 0 && iCol < m_iNumCols );
|
||||
|
||||
@@ -31,7 +31,8 @@ public:
|
||||
void TapNote( int iCol, TapNoteScore score, bool bBright );
|
||||
void TapMine( int iCol, TapNoteScore score );
|
||||
void HoldNote( int iCol );
|
||||
|
||||
void UpdateBars( int iCol );
|
||||
int GetNumCols() { return m_iNumCols; };
|
||||
protected:
|
||||
int m_iNumCols;
|
||||
|
||||
|
||||
@@ -230,6 +230,15 @@ void PlayerMinus::Update( float fDeltaTime )
|
||||
//
|
||||
UpdateTapNotesMissedOlderThan( GetMaxStepDistanceSeconds() );
|
||||
|
||||
for(int bar=0; bar < m_pNoteField->GetNumCols(); bar++)
|
||||
{
|
||||
const StyleInput StyleI( m_PlayerNumber, bar );
|
||||
const GameInput GameI = GAMESTATE->GetCurrentStyleDef()->StyleInputToGameInput( StyleI );
|
||||
bool bIsHoldingButton = INPUTMAPPER->IsButtonDown( GameI );
|
||||
if(bIsHoldingButton)
|
||||
m_pNoteField->UpdateBars(bar);
|
||||
}
|
||||
|
||||
//
|
||||
// update HoldNotes logic
|
||||
//
|
||||
@@ -651,6 +660,7 @@ void PlayerMinus::Step( int col, RageTimer tm )
|
||||
|
||||
if( bGrayArrowStep )
|
||||
m_pNoteField->Step( col );
|
||||
|
||||
}
|
||||
|
||||
void PlayerMinus::HandleAutosync(float fNoteOffset)
|
||||
|
||||
Reference in New Issue
Block a user