Ez2/Pump/Para Song Select Screen now supports the 'stars' and/or 'blob' difficulty ratings as seen in para/ez2.
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
#include "stdafx.h"
|
||||
#include "DifficultyRating.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "RageUtil.h"
|
||||
|
||||
/****************************
|
||||
DifficultyRating
|
||||
Desc: see header
|
||||
Copyright: Andrew Livy
|
||||
*****************************/
|
||||
|
||||
const int ORIENTATION_LEFT = 0;
|
||||
const int ORIENTATION_CENTER = 1;
|
||||
|
||||
#define ELEMSPACING THEME->GetMetricF("ScreenEz2SelectMusic","DifficultyRatingSpacing")
|
||||
|
||||
DifficultyRating::DifficultyRating()
|
||||
{
|
||||
iMaxElements=10;
|
||||
for(int i=0; i<iMaxElements; i++)
|
||||
{
|
||||
Sprite* pNewSprite = new Sprite;
|
||||
pNewSprite->Load( THEME->GetPathTo("Graphics","Select Music DifficultyRatingIcon") );
|
||||
m_apSprites.push_back( pNewSprite );
|
||||
m_apSprites[i]->SetDiffuse( RageColor(1,1,1,0) );
|
||||
}
|
||||
}
|
||||
|
||||
DifficultyRating::~DifficultyRating()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DifficultyRating::DrawPrimitives()
|
||||
{
|
||||
for(int i=0; i<iMaxElements; i++)
|
||||
{
|
||||
m_apSprites[i]->Draw();
|
||||
}
|
||||
}
|
||||
|
||||
void DifficultyRating::SetDifficulty(int Difficulty)
|
||||
{
|
||||
iCurrentDifficulty = Difficulty;
|
||||
for(int i=0; i<iMaxElements; i++)
|
||||
{
|
||||
if(i < iCurrentDifficulty)
|
||||
{
|
||||
m_apSprites[i]->SetDiffuse( RageColor(1,1,1,1) );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_apSprites[i]->SetDiffuse( RageColor(1,1,1,0) );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void DifficultyRating::SetOrientation(int Orientation)
|
||||
{
|
||||
if(Orientation == ORIENTATION_LEFT)
|
||||
{
|
||||
for(int i=0; i<iMaxElements; i++)
|
||||
{
|
||||
m_apSprites[i]->SetX(0 + (ELEMSPACING * i) );
|
||||
}
|
||||
}
|
||||
else // central orientation
|
||||
{
|
||||
if(iCurrentDifficulty % 2 == 0) // even number?
|
||||
{
|
||||
//damn! in that case everything is to the side of the middle....
|
||||
int incrementor=1; // start on one... 0 is reserved for 'central' (read odd number)
|
||||
int offset=0;
|
||||
for(int i=0; i<iMaxElements; i++)
|
||||
{
|
||||
if(incrementor == 1) // + offset
|
||||
{
|
||||
m_apSprites[i]->SetX((0 - 0.5f) + offset);
|
||||
incrementor++;
|
||||
}
|
||||
else // - offset
|
||||
{
|
||||
m_apSprites[i]->SetX((0 + 0.5f) - offset);
|
||||
offset += ELEMSPACING; // increase offset
|
||||
incrementor=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int incrementor=0;
|
||||
int offset=0;
|
||||
for(int i=0; i<iMaxElements; i++)
|
||||
{
|
||||
if(incrementor == 0) // special case.... this means we're in the middle.
|
||||
{
|
||||
m_apSprites[i]->SetX(0); // set to the middle.
|
||||
offset=ELEMSPACING;
|
||||
incrementor++;
|
||||
}
|
||||
//the rest go either side....
|
||||
else
|
||||
{
|
||||
if(incrementor == 1) // + offset
|
||||
{
|
||||
m_apSprites[i]->SetX(0+offset);
|
||||
incrementor++;
|
||||
}
|
||||
else // - offset
|
||||
{
|
||||
m_apSprites[i]->SetX(0-offset);
|
||||
offset += ELEMSPACING; // increase offset
|
||||
incrementor=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user