Merge pull request #328 from hanubeki/notecolor

Add {PartName}NoteColorType and {PartName}NoteColorCount NoteSkin metric.
This commit is contained in:
AJ Kelly
2014-10-11 17:26:19 -05:00
3 changed files with 58 additions and 3 deletions
+18
View File
@@ -25,38 +25,56 @@ TapNoteAdditionTextureCoordOffsetX=0
TapNoteAdditionTextureCoordOffsetY=0 TapNoteAdditionTextureCoordOffsetY=0
TapNoteNoteColorTextureCoordSpacingX=0 TapNoteNoteColorTextureCoordSpacingX=0
TapNoteNoteColorTextureCoordSpacingY=0 TapNoteNoteColorTextureCoordSpacingY=0
TapNoteNoteColorCount=8
TapNoteNoteColorType=Denominator
TapMineAdditionTextureCoordOffsetX=0 TapMineAdditionTextureCoordOffsetX=0
TapMineAdditionTextureCoordOffsetY=0 TapMineAdditionTextureCoordOffsetY=0
TapMineNoteColorTextureCoordSpacingX=0 TapMineNoteColorTextureCoordSpacingX=0
TapMineNoteColorTextureCoordSpacingY=0 TapMineNoteColorTextureCoordSpacingY=0
TapMineNoteColorCount=8
TapMineNoteColorType=Denominator
TapLiftAdditionTextureCoordOffsetX=0 TapLiftAdditionTextureCoordOffsetX=0
TapLiftAdditionTextureCoordOffsetY=0 TapLiftAdditionTextureCoordOffsetY=0
TapLiftNoteColorTextureCoordSpacingX=0 TapLiftNoteColorTextureCoordSpacingX=0
TapLiftNoteColorTextureCoordSpacingY=0 TapLiftNoteColorTextureCoordSpacingY=0
TapLiftNoteColorCount=8
TapLiftNoteColorType=Denominator
TapFakeAdditionTextureCoordOffsetX=0 TapFakeAdditionTextureCoordOffsetX=0
TapFakeAdditionTextureCoordOffsetY=0 TapFakeAdditionTextureCoordOffsetY=0
TapFakeNoteColorTextureCoordSpacingX=0 TapFakeNoteColorTextureCoordSpacingX=0
TapFakeNoteColorTextureCoordSpacingY=0 TapFakeNoteColorTextureCoordSpacingY=0
TapFakeNoteColorCount=8
TapFakeNoteColorType=Denominator
HoldHeadAdditionTextureCoordOffsetX=0 HoldHeadAdditionTextureCoordOffsetX=0
HoldHeadAdditionTextureCoordOffsetY=0 HoldHeadAdditionTextureCoordOffsetY=0
HoldHeadNoteColorTextureCoordSpacingX=0 HoldHeadNoteColorTextureCoordSpacingX=0
HoldHeadNoteColorTextureCoordSpacingY=0 HoldHeadNoteColorTextureCoordSpacingY=0
HoldHeadNoteColorCount=8
HoldHeadNoteColorType=Denominator
HoldTopCapAdditionTextureCoordOffsetX=0 HoldTopCapAdditionTextureCoordOffsetX=0
HoldTopCapAdditionTextureCoordOffsetY=0 HoldTopCapAdditionTextureCoordOffsetY=0
HoldTopCapNoteColorTextureCoordSpacingX=0 HoldTopCapNoteColorTextureCoordSpacingX=0
HoldTopCapNoteColorTextureCoordSpacingY=0 HoldTopCapNoteColorTextureCoordSpacingY=0
HoldTopCapNoteColorCount=8
HoldTopCapNoteColorType=Denominator
HoldBodyAdditionTextureCoordOffsetX=0 HoldBodyAdditionTextureCoordOffsetX=0
HoldBodyAdditionTextureCoordOffsetY=0 HoldBodyAdditionTextureCoordOffsetY=0
HoldBodyNoteColorTextureCoordSpacingX=0 HoldBodyNoteColorTextureCoordSpacingX=0
HoldBodyNoteColorTextureCoordSpacingY=0 HoldBodyNoteColorTextureCoordSpacingY=0
HoldBodyNoteColorCount=8
HoldBodyNoteColorType=Denominator
HoldBottomCapAdditionTextureCoordOffsetX=0 HoldBottomCapAdditionTextureCoordOffsetX=0
HoldBottomCapAdditionTextureCoordOffsetY=0 HoldBottomCapAdditionTextureCoordOffsetY=0
HoldBottomCapNoteColorTextureCoordSpacingX=0 HoldBottomCapNoteColorTextureCoordSpacingX=0
HoldBottomCapNoteColorTextureCoordSpacingY=0 HoldBottomCapNoteColorTextureCoordSpacingY=0
HoldBottomCapNoteColorCount=8
HoldBottomCapNoteColorType=Denominator
HoldTailAdditionTextureCoordOffsetX=0 HoldTailAdditionTextureCoordOffsetX=0
HoldTailAdditionTextureCoordOffsetY=0 HoldTailAdditionTextureCoordOffsetY=0
HoldTailNoteColorTextureCoordSpacingX=0 HoldTailNoteColorTextureCoordSpacingX=0
HoldTailNoteColorTextureCoordSpacingY=0 HoldTailNoteColorTextureCoordSpacingY=0
HoldTailNoteColorCount=8
HoldTailNoteColorType=Denominator
StartDrawingHoldBodyOffsetFromHead=0 StartDrawingHoldBodyOffsetFromHead=0
+29 -3
View File
@@ -32,6 +32,14 @@ static const char *NotePartNames[] = {
XToString( NotePart ); XToString( NotePart );
LuaXType( NotePart ); LuaXType( NotePart );
static const char *NoteColorTypeNames[] = {
"Denominator",
"Progress",
};
XToString( NoteColorType );
StringToX( NoteColorType );
LuaXType( NoteColorType );
static bool IsVectorZero( const RageVector2 &v ) static bool IsVectorZero( const RageVector2 &v )
{ {
return v.x == 0 && v.y == 0; return v.x == 0 && v.y == 0;
@@ -53,6 +61,9 @@ struct NoteMetricCache_t
RageVector2 m_fAdditionTextureCoordOffset[NUM_NotePart]; RageVector2 m_fAdditionTextureCoordOffset[NUM_NotePart];
RageVector2 m_fNoteColorTextureCoordSpacing[NUM_NotePart]; RageVector2 m_fNoteColorTextureCoordSpacing[NUM_NotePart];
int m_iNoteColorCount[NUM_NotePart];
NoteColorType m_NoteColorType[NUM_NotePart];
//For animation based on beats or seconds -DaisuMaster //For animation based on beats or seconds -DaisuMaster
bool m_bAnimationBasedOnBeats; bool m_bAnimationBasedOnBeats;
bool m_bHoldHeadIsAboveWavyParts; bool m_bHoldHeadIsAboveWavyParts;
@@ -82,6 +93,10 @@ void NoteMetricCache_t::Load( const RString &sButton )
m_fAdditionTextureCoordOffset[p].y = NOTESKIN->GetMetricF(sButton,s+"AdditionTextureCoordOffsetY"); m_fAdditionTextureCoordOffset[p].y = NOTESKIN->GetMetricF(sButton,s+"AdditionTextureCoordOffsetY");
m_fNoteColorTextureCoordSpacing[p].x = NOTESKIN->GetMetricF(sButton,s+"NoteColorTextureCoordSpacingX"); m_fNoteColorTextureCoordSpacing[p].x = NOTESKIN->GetMetricF(sButton,s+"NoteColorTextureCoordSpacingX");
m_fNoteColorTextureCoordSpacing[p].y = NOTESKIN->GetMetricF(sButton,s+"NoteColorTextureCoordSpacingY"); m_fNoteColorTextureCoordSpacing[p].y = NOTESKIN->GetMetricF(sButton,s+"NoteColorTextureCoordSpacingY");
m_iNoteColorCount[p] = NOTESKIN->GetMetricI(sButton,s+"NoteColorCount");
RString ct = NOTESKIN->GetMetric(sButton,s+"NoteColorType");
m_NoteColorType[p] = StringToNoteColorType(ct);
} }
//I was here -DaisuMaster //I was here -DaisuMaster
m_bAnimationBasedOnBeats = NOTESKIN->GetMetricB(sButton,"AnimationIsBeatBased"); m_bAnimationBasedOnBeats = NOTESKIN->GetMetricB(sButton,"AnimationIsBeatBased");
@@ -728,9 +743,20 @@ void NoteDisplay::DrawActor( const TapNote& tn, Actor* pActor, NotePart part, in
if( bNeedsTranslate ) if( bNeedsTranslate )
{ {
DISPLAY->TexturePushMatrix(); DISPLAY->TexturePushMatrix();
NoteType nt = BeatToNoteType( fBeat ); float color = 0.0f;
ENUM_CLAMP( nt, (NoteType)0, MAX_DISPLAY_NOTE_TYPE ); switch( cache->m_NoteColorType[part] )
DISPLAY->TextureTranslate( (bIsAddition ? cache->m_fAdditionTextureCoordOffset[part] : RageVector2(0,0)) + cache->m_fNoteColorTextureCoordSpacing[part]*(float)nt ); {
case NoteColorType_Denominator:
color = float( BeatToNoteType( fBeat ) );
color = clamp( color, 0, (cache->m_iNoteColorCount[part]-1) );
break;
case NoteColorType_Progress:
color = fmodf( ceilf( fBeat * cache->m_iNoteColorCount[part] ), (float)cache->m_iNoteColorCount[part] );
break;
default:
FAIL_M(ssprintf("Invalid NoteColorType: %i", cache->m_NoteColorType[part]));
}
DISPLAY->TextureTranslate( (bIsAddition ? cache->m_fAdditionTextureCoordOffset[part] : RageVector2(0,0)) + cache->m_fNoteColorTextureCoordSpacing[part]*color );
} }
pActor->Draw(); pActor->Draw();
+11
View File
@@ -24,6 +24,17 @@ enum NotePart
NotePart_Invalid NotePart_Invalid
}; };
/** @brief the color type of a Note. */
enum NoteColorType
{
NoteColorType_Denominator, /**< Color by note type. */
NoteColorType_Progress, /**< Color by progress. */
NUM_NoteColorType,
NoteColorType_Invalid
};
const RString& NoteColorTypeToString( NoteColorType nct );
NoteColorType StringToNoteColorType( const RString& s );
struct NoteResource; struct NoteResource;
struct NoteColorActor struct NoteColorActor