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
TapNoteNoteColorTextureCoordSpacingX=0
TapNoteNoteColorTextureCoordSpacingY=0
TapNoteNoteColorCount=8
TapNoteNoteColorType=Denominator
TapMineAdditionTextureCoordOffsetX=0
TapMineAdditionTextureCoordOffsetY=0
TapMineNoteColorTextureCoordSpacingX=0
TapMineNoteColorTextureCoordSpacingY=0
TapMineNoteColorCount=8
TapMineNoteColorType=Denominator
TapLiftAdditionTextureCoordOffsetX=0
TapLiftAdditionTextureCoordOffsetY=0
TapLiftNoteColorTextureCoordSpacingX=0
TapLiftNoteColorTextureCoordSpacingY=0
TapLiftNoteColorCount=8
TapLiftNoteColorType=Denominator
TapFakeAdditionTextureCoordOffsetX=0
TapFakeAdditionTextureCoordOffsetY=0
TapFakeNoteColorTextureCoordSpacingX=0
TapFakeNoteColorTextureCoordSpacingY=0
TapFakeNoteColorCount=8
TapFakeNoteColorType=Denominator
HoldHeadAdditionTextureCoordOffsetX=0
HoldHeadAdditionTextureCoordOffsetY=0
HoldHeadNoteColorTextureCoordSpacingX=0
HoldHeadNoteColorTextureCoordSpacingY=0
HoldHeadNoteColorCount=8
HoldHeadNoteColorType=Denominator
HoldTopCapAdditionTextureCoordOffsetX=0
HoldTopCapAdditionTextureCoordOffsetY=0
HoldTopCapNoteColorTextureCoordSpacingX=0
HoldTopCapNoteColorTextureCoordSpacingY=0
HoldTopCapNoteColorCount=8
HoldTopCapNoteColorType=Denominator
HoldBodyAdditionTextureCoordOffsetX=0
HoldBodyAdditionTextureCoordOffsetY=0
HoldBodyNoteColorTextureCoordSpacingX=0
HoldBodyNoteColorTextureCoordSpacingY=0
HoldBodyNoteColorCount=8
HoldBodyNoteColorType=Denominator
HoldBottomCapAdditionTextureCoordOffsetX=0
HoldBottomCapAdditionTextureCoordOffsetY=0
HoldBottomCapNoteColorTextureCoordSpacingX=0
HoldBottomCapNoteColorTextureCoordSpacingY=0
HoldBottomCapNoteColorCount=8
HoldBottomCapNoteColorType=Denominator
HoldTailAdditionTextureCoordOffsetX=0
HoldTailAdditionTextureCoordOffsetY=0
HoldTailNoteColorTextureCoordSpacingX=0
HoldTailNoteColorTextureCoordSpacingY=0
HoldTailNoteColorCount=8
HoldTailNoteColorType=Denominator
StartDrawingHoldBodyOffsetFromHead=0
+29 -3
View File
@@ -32,6 +32,14 @@ static const char *NotePartNames[] = {
XToString( NotePart );
LuaXType( NotePart );
static const char *NoteColorTypeNames[] = {
"Denominator",
"Progress",
};
XToString( NoteColorType );
StringToX( NoteColorType );
LuaXType( NoteColorType );
static bool IsVectorZero( const RageVector2 &v )
{
return v.x == 0 && v.y == 0;
@@ -53,6 +61,9 @@ struct NoteMetricCache_t
RageVector2 m_fAdditionTextureCoordOffset[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
bool m_bAnimationBasedOnBeats;
bool m_bHoldHeadIsAboveWavyParts;
@@ -82,6 +93,10 @@ void NoteMetricCache_t::Load( const RString &sButton )
m_fAdditionTextureCoordOffset[p].y = NOTESKIN->GetMetricF(sButton,s+"AdditionTextureCoordOffsetY");
m_fNoteColorTextureCoordSpacing[p].x = NOTESKIN->GetMetricF(sButton,s+"NoteColorTextureCoordSpacingX");
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
m_bAnimationBasedOnBeats = NOTESKIN->GetMetricB(sButton,"AnimationIsBeatBased");
@@ -728,9 +743,20 @@ void NoteDisplay::DrawActor( const TapNote& tn, Actor* pActor, NotePart part, in
if( bNeedsTranslate )
{
DISPLAY->TexturePushMatrix();
NoteType nt = BeatToNoteType( fBeat );
ENUM_CLAMP( nt, (NoteType)0, MAX_DISPLAY_NOTE_TYPE );
DISPLAY->TextureTranslate( (bIsAddition ? cache->m_fAdditionTextureCoordOffset[part] : RageVector2(0,0)) + cache->m_fNoteColorTextureCoordSpacing[part]*(float)nt );
float color = 0.0f;
switch( cache->m_NoteColorType[part] )
{
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();
+11
View File
@@ -24,6 +24,17 @@ enum NotePart
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 NoteColorActor