Add mines transform

This commit is contained in:
Chris Danford
2003-08-10 10:12:50 +00:00
parent 1e514c1c51
commit 1f8a45cbee
11 changed files with 59 additions and 15 deletions
@@ -2,6 +2,7 @@
DrawHoldHeadForTapsOnSameRow=1
TapNoteAnimationLengthInBeats=4
TapAdditionAnimationLengthInBeats=4
TapMineAnimationLengthInBeats=1
HoldHeadAnimationLengthInBeats=4 // doesn't matter. Only 1 frame anyway.
HoldTopCapAnimationLengthInBeats=4 // doesn't matter. Only 1 frame anyway.
HoldBottomCapAnimationLengthInBeats=4 // doesn't matter. Only 1 frame anyway.
@@ -9,6 +10,7 @@ HoldBodyAnimationLengthInBeats=4 // doesn't matter. Only 1 frame anyway.
HoldTailAnimationLengthInBeats=4 // doesn't matter. Only 1 frame anyway.
TapNoteAnimationIsVivid=1
TapAdditionAnimationIsVivid=1
TapMineAnimationIsVivid=0
HoldHeadAnimationIsVivid=0
HoldTopCapAnimationIsVivid=0
HoldBodyAnimationIsVivid=0
+14
View File
@@ -876,3 +876,17 @@ void NoteDataUtil::ConvertAdditionsToRegular( NoteData &in )
if( in.GetTapNote(t,r) == TAP_ADDITION )
in.SetTapNote(t,r,TAP_TAP);
}
void NoteDataUtil::Mines( NoteData &in )
{
int iTapCount = 0;
for( int r=0; r<=in.GetLastRow(); r++ )
for( int t=0; t<in.GetNumTracks(); t++ )
if( in.GetTapNote(t,r) == TAP_TAP )
{
iTapCount++;
if( (iTapCount%7) == 6 )
in.SetTapNote(t,r,TAP_MINE);
}
}
+1
View File
@@ -46,6 +46,7 @@ namespace NoteDataUtil
void Big( NoteData &in );
void Quick( NoteData &in );
void Skippy( NoteData &in );
void Mines( NoteData &in );
void InsertIntelligentTaps( NoteData &in, float fBeatInterval, float fInsertBeatOffset, bool bNewTapSameAsBeginning );
void SuperShuffleTaps( NoteData &in );
+27 -10
View File
@@ -46,13 +46,15 @@ Actor* MakeModelOrSprite( CString sFile )
#define DRAW_HOLD_HEAD_FOR_TAPS_ON_SAME_ROW NOTESKIN->GetMetricB(pn,name,"DrawHoldHeadForTapsOnSameRow")
#define TAP_NOTE_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"TapNoteAnimationLengthInBeats")
#define TAP_ADDITION_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"TapAdditionAnimationLengthInBeats")
#define TAP_MINE_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"TapMineAnimationLengthInBeats")
#define HOLD_HEAD_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"HoldHeadAnimationLengthInBeats")
#define HOLD_TOPCAP_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"HoldTopCapAnimationLengthInBeats")
#define HOLD_BODY_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"HoldBodyAnimationLengthInBeats")
#define HOLD_BOTTOMCAP_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"HoldBottomCapAnimationLengthInBeats")
#define HOLD_TAIL_ANIMATION_LENGTH_IN_BEATS NOTESKIN->GetMetricF(pn,name,"HoldTailAnimationLengthInBeats")
#define TAP_NOTE_ANIMATION_IS_VIVID NOTESKIN->GetMetricB(pn,name,"TapNoteAnimationIsVivid")
#define TAP_ADDITION_ANIMATION_IS_VIVID NOTESKIN->GetMetricB(pn,name,"TapNoteAnimationIsVivid")
#define TAP_ADDITION_ANIMATION_IS_VIVID NOTESKIN->GetMetricB(pn,name,"TapAdditionAnimationIsVivid")
#define TAP_MINE_ANIMATION_IS_VIVID NOTESKIN->GetMetricB(pn,name,"TapMineAnimationIsVivid")
#define HOLD_HEAD_ANIMATION_IS_VIVID NOTESKIN->GetMetricB(pn,name,"HoldHeadAnimationIsVivid")
#define HOLD_TOPCAP_ANIMATION_IS_VIVID NOTESKIN->GetMetricB(pn,name,"HoldTopCapAnimationIsVivid")
#define HOLD_BODY_ANIMATION_IS_VIVID NOTESKIN->GetMetricB(pn,name,"HoldBodyAnimationIsVivid")
@@ -76,6 +78,7 @@ struct NoteMetricCache_t {
bool m_bDrawHoldHeadForTapsOnSameRow;
float m_fTapNoteAnimationLengthInBeats;
float m_fTapAdditionAnimationLengthInBeats;
float m_fTapMineAnimationLengthInBeats;
float m_fHoldHeadAnimationLengthInBeats;
float m_fHoldTopCapAnimationLengthInBeats;
float m_fHoldBodyAnimationLengthInBeats;
@@ -83,6 +86,7 @@ struct NoteMetricCache_t {
float m_fHoldTailAnimationLengthInBeats;
bool m_bTapNoteAnimationIsVivid;
bool m_bTapAdditionAnimationIsVivid;
bool m_bTapMineAnimationIsVivid;
bool m_bHoldHeadAnimationIsVivid;
bool m_bHoldTopCapAnimationIsVivid;
bool m_bHoldBodyAnimationIsVivid;
@@ -109,6 +113,7 @@ void NoteMetricCache_t::Load(PlayerNumber pn, const CString &name)
m_bDrawHoldHeadForTapsOnSameRow = DRAW_HOLD_HEAD_FOR_TAPS_ON_SAME_ROW;
m_fTapNoteAnimationLengthInBeats = TAP_NOTE_ANIMATION_LENGTH_IN_BEATS;
m_fTapAdditionAnimationLengthInBeats = TAP_ADDITION_ANIMATION_LENGTH_IN_BEATS;
m_fTapMineAnimationLengthInBeats = TAP_MINE_ANIMATION_LENGTH_IN_BEATS;
m_fHoldHeadAnimationLengthInBeats = HOLD_HEAD_ANIMATION_LENGTH_IN_BEATS;
m_fHoldTopCapAnimationLengthInBeats = HOLD_TOPCAP_ANIMATION_LENGTH_IN_BEATS;
m_fHoldBodyAnimationLengthInBeats = HOLD_BODY_ANIMATION_LENGTH_IN_BEATS;
@@ -116,6 +121,7 @@ void NoteMetricCache_t::Load(PlayerNumber pn, const CString &name)
m_fHoldTailAnimationLengthInBeats = HOLD_TAIL_ANIMATION_LENGTH_IN_BEATS;
m_bTapNoteAnimationIsVivid = TAP_NOTE_ANIMATION_IS_VIVID;
m_bTapAdditionAnimationIsVivid = TAP_ADDITION_ANIMATION_IS_VIVID;
m_bTapMineAnimationIsVivid = TAP_MINE_ANIMATION_IS_VIVID;
m_bHoldHeadAnimationIsVivid = HOLD_HEAD_ANIMATION_IS_VIVID;
m_bHoldTopCapAnimationIsVivid = HOLD_TOPCAP_ANIMATION_IS_VIVID;
m_bHoldBodyAnimationIsVivid = HOLD_BODY_ANIMATION_IS_VIVID;
@@ -144,6 +150,7 @@ NoteDisplay::NoteDisplay()
m_pHoldHeadInactive[i] = NULL;
}
m_pTapAddition = NULL;
m_pTapMine = NULL;
cache = new NoteMetricCache_t;
}
@@ -157,6 +164,7 @@ NoteDisplay::~NoteDisplay()
delete m_pHoldHeadInactive[i];
}
delete m_pTapAddition;
delete m_pTapMine;
delete cache;
}
@@ -190,6 +198,8 @@ void NoteDisplay::Load( int iColNum, PlayerNumber pn )
m_pTapAddition = MakeModelOrSprite( NOTESKIN->GetPathTo(pn, Button, "tap addition") );
m_pTapMine = MakeModelOrSprite( NOTESKIN->GetPathTo(pn, Button, "tap mine") );
if( cache->m_bHoldHeadAnimationIsNoteColor )
{
for( int i=0; i<NOTE_COLOR_IMAGES; i++ )
@@ -302,13 +312,6 @@ Actor * NoteDisplay::GetTapNoteActor( float fNoteBeat )
Actor * NoteDisplay::GetTapAdditionActor( float fNoteBeat )
{
NoteType nt = NoteType(0);
if( cache->m_bTapNoteAnimationIsNoteColor )
nt = BeatToNoteType( fNoteBeat );
if( nt == NOTE_TYPE_INVALID )
nt = NOTE_TYPE_32ND;
Actor *pActorOut = m_pTapNote[nt];
SetActiveFrame(
fNoteBeat,
*m_pTapAddition,
@@ -319,6 +322,18 @@ Actor * NoteDisplay::GetTapAdditionActor( float fNoteBeat )
return m_pTapAddition;
}
Actor * NoteDisplay::GetTapMineActor( float fNoteBeat )
{
SetActiveFrame(
fNoteBeat,
*m_pTapMine,
cache->m_fTapMineAnimationLengthInBeats,
cache->m_bTapMineAnimationIsVivid,
false );
return m_pTapMine;
}
Sprite * NoteDisplay::GetHoldTopCapSprite( float fNoteBeat, bool bActive )
{
NoteType nt = NoteType(0);
@@ -790,7 +805,7 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float
DrawHold( hn, bActive, fLife, fPercentFadeToFail, true );
}
void NoteDisplay::DrawTap( const int iCol, const float fBeat, const bool bOnSameRowAsHoldStart, const bool bIsAddition, const float fPercentFadeToFail, const float fLife )
void NoteDisplay::DrawTap( int iCol, float fBeat, bool bOnSameRowAsHoldStart, bool bIsAddition, bool bIsMine, float fPercentFadeToFail, float fLife )
{
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
const float fYPos = ArrowGetYPos( m_PlayerNumber, fYOffset );
@@ -804,7 +819,9 @@ void NoteDisplay::DrawTap( const int iCol, const float fBeat, const bool bOnSame
RageColor glow = RageColor(1,1,1,fGlow);
Actor* pActor = NULL;
if( bIsAddition )
if( bIsMine )
pActor = GetTapMineActor( fBeat );
else if( bIsAddition )
pActor = GetTapAdditionActor( fBeat );
else if( bOnSameRowAsHoldStart && cache->m_bDrawHoldHeadForTapsOnSameRow )
pActor = GetHoldHeadActor( fBeat, false );
+4 -2
View File
@@ -29,13 +29,14 @@ public:
void Load( int iColNum, PlayerNumber pn );
void DrawTap( const int iCol, const float fBeat, const bool bOnSameRowAsHoldStart, const bool bIsAddition, const float fPercentFadeToFail, const float fLife = 1 );
void DrawHold( const HoldNote& hn, const bool bActive, const float fLife, const float fPercentFadeToFail, bool bDrawGlowOnly = false );
void DrawTap( int iCol, float fBeat, bool bOnSameRowAsHoldStart, bool bIsAddition, bool bIsMine, float fPercentFadeToFail, float fLife = 1 );
void DrawHold( const HoldNote& hn, bool bActive, float fLife, float fPercentFadeToFail, bool bDrawGlowOnly = false );
protected:
void SetActiveFrame( float fNoteBeat, Actor &actorToSet, float fAnimationLengthInBeats, bool bVivid, bool bNoteColor );
Actor *GetTapNoteActor( float fNoteBeat );
Actor *GetTapAdditionActor( float fNoteBeat );
Actor *GetTapMineActor( float fNoteBeat );
Actor *GetHoldHeadActor( float fNoteBeat, bool bActive );
Actor* GetHoldTailActor( float fNoteBeat, bool bActive );
Sprite *GetHoldTopCapSprite( float fNoteBeat, bool bActive );
@@ -56,6 +57,7 @@ protected:
Actor* m_pTapNote[NOTE_COLOR_IMAGES];
Actor* m_pTapAddition;
Actor* m_pTapMine;
Actor* m_pHoldHeadActive[NOTE_COLOR_IMAGES];
Actor* m_pHoldHeadInactive[NOTE_COLOR_IMAGES];
Sprite m_sprHoldTopCapActive[NOTE_COLOR_IMAGES];
+2 -1
View File
@@ -438,8 +438,9 @@ void NoteField::DrawPrimitives()
}
bool bIsAddition = (tn == TAP_ADDITION);
bool bIsMine = (tn == TAP_MINE);
m_NoteDisplay[c].DrawTap( c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bIsAddition, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail );
m_NoteDisplay[c].DrawTap( c, NoteRowToBeat(i), bHoldNoteBeginsOnThisBeat, bIsAddition, bIsMine, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail );
}
g_NoteFieldMode[m_PlayerNumber].EndDrawTrack(c);
+4 -1
View File
@@ -31,8 +31,11 @@ static const TapNote TAP_HOLD_TAIL = '3';
/* In 4s mode, holds and TAP_HOLD_HEAD are deleted and TAP_HOLD is added: */
static const TapNote TAP_HOLD = '4';
static const TapNote TAP_ADDITION = '5'; // additional note added by a transform
// additional note added by a transform
static const TapNote TAP_ADDITION = '5';
// mine note - don't step!
static const TapNote TAP_MINE = '6';
enum
{
+1
View File
@@ -146,6 +146,7 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, Combine
case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big(*this); break;
case PlayerOptions::TRANSFORM_QUICK: NoteDataUtil::Quick(*this); break;
case PlayerOptions::TRANSFORM_SKIPPY: NoteDataUtil::Skippy(*this); break;
case PlayerOptions::TRANSFORM_MINES: NoteDataUtil::Mines(*this); break;
default: ASSERT(0);
}
+2
View File
@@ -125,6 +125,7 @@ CString PlayerOptions::GetString()
case TRANSFORM_BIG: sReturn += "Big, "; break;
case TRANSFORM_QUICK: sReturn += "Quick, "; break;
case TRANSFORM_SKIPPY: sReturn += "Skippy, "; break;
case TRANSFORM_MINES: sReturn += "Mines, "; break;
default: ASSERT(0); // invalid
}
@@ -229,6 +230,7 @@ void PlayerOptions::FromString( CString sOptions )
else if( sBit == "big" ) m_Transform = TRANSFORM_BIG;
else if( sBit == "quick" ) m_Transform = TRANSFORM_QUICK;
else if( sBit == "skippy" ) m_Transform = TRANSFORM_SKIPPY;
else if( sBit == "mines" ) m_Transform = TRANSFORM_MINES;
else if( sBit == "reverse" ) m_fReverseScroll = 1;
else if( sBit == "noholds" ) m_bHoldNotes = false;
else if( sBit == "nofreeze" ) m_bHoldNotes = false;
+1
View File
@@ -63,6 +63,7 @@ struct PlayerOptions
TRANSFORM_BIG,
TRANSFORM_QUICK,
TRANSFORM_SKIPPY,
TRANSFORM_MINES,
NUM_TRANSFORMS
};
+1 -1
View File
@@ -50,7 +50,7 @@ OptionRow g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = {
OptionRow( "Effect", "OFF","DRUNK","DIZZY","MINI","FLIP","TORNADO" ),
OptionRow( "Appear\n-ance", "VISIBLE","HIDDEN","SUDDEN","STEALTH","BLINK", "R.VANISH" ),
OptionRow( "Turn", "OFF","MIRROR","LEFT","RIGHT","SHUFFLE","S.SHUFFLE" ),
OptionRow( "Trans\n-form", "OFF","LITTLE","WIDE","BIG","QUICK","SKIPPY" ),
OptionRow( "Trans\n-form", "OFF","LITTLE","WIDE","BIG","QUICK","SKIPPY","MINES" ),
OptionRow( "Scroll", "STANDARD","REVERSE" ),
OptionRow( "Note\nSkin", "" ),
OptionRow( "Holds", "OFF","ON" ),