remove CachedThemeMetrics in favor of ThemeMetric<T>
fix "CachedThemeMetrics don't read HTML colors and don't evaluate Lua expressions"
This commit is contained in:
@@ -16,18 +16,18 @@
|
||||
#include "BeginnerHelper.h"
|
||||
#include "StageStats.h"
|
||||
#include "ScreenDimensions.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
#include <set>
|
||||
|
||||
|
||||
const float FADE_SECONDS = 1.0f;
|
||||
|
||||
#define LEFT_EDGE THEME->GetMetricF("Background","LeftEdge")
|
||||
#define TOP_EDGE THEME->GetMetricF("Background","TopEdge")
|
||||
#define RIGHT_EDGE THEME->GetMetricF("Background","RightEdge")
|
||||
#define BOTTOM_EDGE THEME->GetMetricF("Background","BottomEdge")
|
||||
CachedThemeMetricB BLINK_DANGER_ALL("Background","BlinkDangerAll");
|
||||
CachedThemeMetricB DANGER_ALL_IS_OPAQUE("Background","DangerAllIsOpaque");
|
||||
ThemeMetric<bool> BLINK_DANGER_ALL("Background","BlinkDangerAll");
|
||||
ThemeMetric<bool> DANGER_ALL_IS_OPAQUE("Background","DangerAllIsOpaque");
|
||||
#define BRIGHTNESS_FADE_COMMAND THEME->GetMetric("Background","BrightnessFadeCommand")
|
||||
#define RECT_BACKGROUND RectF(LEFT_EDGE,TOP_EDGE,RIGHT_EDGE,BOTTOM_EDGE)
|
||||
|
||||
@@ -36,9 +36,6 @@ const CString STATIC_BACKGROUND = "static background";
|
||||
|
||||
Background::Background()
|
||||
{
|
||||
BLINK_DANGER_ALL.Refresh();
|
||||
DANGER_ALL_IS_OPAQUE.Refresh();
|
||||
|
||||
m_iCurBGChangeIndex = -1;
|
||||
m_pCurrentBGA = NULL;
|
||||
m_pFadingBGA = NULL;
|
||||
@@ -585,7 +582,7 @@ void Background::DrawPrimitives()
|
||||
m_DangerAll.Draw();
|
||||
}
|
||||
|
||||
if( !IsDangerAllVisible() || !DANGER_ALL_IS_OPAQUE )
|
||||
if( !IsDangerAllVisible() || !(bool)DANGER_ALL_IS_OPAQUE )
|
||||
{
|
||||
if( m_pDancingCharacters )
|
||||
m_pDancingCharacters->m_bDrawDangerLight = false;
|
||||
|
||||
@@ -8,15 +8,13 @@
|
||||
#include "RageTextureManager.h"
|
||||
#include "Course.h"
|
||||
#include "Character.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
CachedThemeMetricB SCROLL_RANDOM ("Banner","ScrollRandom");
|
||||
CachedThemeMetricB SCROLL_ROULETTE ("Banner","ScrollRoulette");
|
||||
ThemeMetric<bool> SCROLL_RANDOM ("Banner","ScrollRandom");
|
||||
ThemeMetric<bool> SCROLL_ROULETTE ("Banner","ScrollRoulette");
|
||||
|
||||
Banner::Banner()
|
||||
{
|
||||
SCROLL_RANDOM.Refresh();
|
||||
SCROLL_ROULETTE.Refresh();
|
||||
|
||||
m_bScrolling = false;
|
||||
m_fPercentScrolling = 0;
|
||||
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
#include "ThemeManager.h"
|
||||
#include "GameState.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
CachedThemeMetricF METER_WIDTH ("CombinedLifeMeterTug","MeterWidth");
|
||||
ThemeMetric<float> METER_WIDTH ("CombinedLifeMeterTug","MeterWidth");
|
||||
|
||||
const float FACE_X[NUM_PLAYERS] = { -300, +300 };
|
||||
const float FACE_Y[NUM_PLAYERS] = { 0, 0 };
|
||||
@@ -13,8 +14,6 @@ const float FACE_Y[NUM_PLAYERS] = { 0, 0 };
|
||||
|
||||
CombinedLifeMeterTug::CombinedLifeMeterTug()
|
||||
{
|
||||
METER_WIDTH.Refresh();
|
||||
|
||||
FOREACH_PlayerNumber( p )
|
||||
{
|
||||
CString sStreamPath = THEME->GetPathToG(ssprintf("CombinedLifeMeterTug stream p%d",p+1));
|
||||
|
||||
+20
-39
@@ -4,51 +4,32 @@
|
||||
#include "StageStats.h"
|
||||
#include "GameState.h"
|
||||
#include "song.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
CachedThemeMetricF LABEL_X ("Combo","LabelX");
|
||||
CachedThemeMetricF LABEL_Y ("Combo","LabelY");
|
||||
CachedThemeMetricI LABEL_HORIZ_ALIGN ("Combo","LabelHorizAlign");
|
||||
CachedThemeMetricI LABEL_VERT_ALIGN ("Combo","LabelVertAlign");
|
||||
CachedThemeMetricF NUMBER_X ("Combo","NumberX");
|
||||
CachedThemeMetricF NUMBER_Y ("Combo","NumberY");
|
||||
CachedThemeMetricI NUMBER_HORIZ_ALIGN ("Combo","NumberHorizAlign");
|
||||
CachedThemeMetricI NUMBER_VERT_ALIGN ("Combo","NumberVertAlign");
|
||||
CachedThemeMetricI SHOW_COMBO_AT ("Combo","ShowComboAt");
|
||||
CachedThemeMetricF NUMBER_MIN_ZOOM ("Combo","NumberMinZoom");
|
||||
CachedThemeMetricF NUMBER_MAX_ZOOM ("Combo","NumberMaxZoom");
|
||||
CachedThemeMetricF NUMBER_MAX_ZOOM_AT ("Combo","NumberMaxZoomAt");
|
||||
CachedThemeMetricF PULSE_ZOOM ("Combo","PulseZoom");
|
||||
CachedThemeMetricF C_TWEEN_SECONDS ("Combo","TweenSeconds");
|
||||
CachedThemeMetricF FULL_COMBO_GREATS_COMMAND ("Combo","FullComboGreatsCommand");
|
||||
CachedThemeMetricF FULL_COMBO_PERFECTS_COMMAND ("Combo","FullComboPerfectsCommand");
|
||||
CachedThemeMetricF FULL_COMBO_MARVELOUSES_COMMAND ("Combo","FullComboMarvelousesCommand");
|
||||
CachedThemeMetricF FULL_COMBO_BROKEN_COMMAND ("Combo","FullComboBrokenCommand");
|
||||
CachedThemeMetricB SHOW_MISS_COMBO ("Combo","ShowMissCombo");
|
||||
ThemeMetric<float> LABEL_X ("Combo","LabelX");
|
||||
ThemeMetric<float> LABEL_Y ("Combo","LabelY");
|
||||
ThemeMetric<int> LABEL_HORIZ_ALIGN ("Combo","LabelHorizAlign");
|
||||
ThemeMetric<int> LABEL_VERT_ALIGN ("Combo","LabelVertAlign");
|
||||
ThemeMetric<float> NUMBER_X ("Combo","NumberX");
|
||||
ThemeMetric<float> NUMBER_Y ("Combo","NumberY");
|
||||
ThemeMetric<int> NUMBER_HORIZ_ALIGN ("Combo","NumberHorizAlign");
|
||||
ThemeMetric<int> NUMBER_VERT_ALIGN ("Combo","NumberVertAlign");
|
||||
ThemeMetric<int> SHOW_COMBO_AT ("Combo","ShowComboAt");
|
||||
ThemeMetric<float> NUMBER_MIN_ZOOM ("Combo","NumberMinZoom");
|
||||
ThemeMetric<float> NUMBER_MAX_ZOOM ("Combo","NumberMaxZoom");
|
||||
ThemeMetric<float> NUMBER_MAX_ZOOM_AT ("Combo","NumberMaxZoomAt");
|
||||
ThemeMetric<float> PULSE_ZOOM ("Combo","PulseZoom");
|
||||
ThemeMetric<float> C_TWEEN_SECONDS ("Combo","TweenSeconds");
|
||||
ThemeMetric<CString> FULL_COMBO_GREATS_COMMAND ("Combo","FullComboGreatsCommand");
|
||||
ThemeMetric<CString> FULL_COMBO_PERFECTS_COMMAND ("Combo","FullComboPerfectsCommand");
|
||||
ThemeMetric<CString> FULL_COMBO_MARVELOUSES_COMMAND ("Combo","FullComboMarvelousesCommand");
|
||||
ThemeMetric<CString> FULL_COMBO_BROKEN_COMMAND ("Combo","FullComboBrokenCommand");
|
||||
ThemeMetric<bool> SHOW_MISS_COMBO ("Combo","ShowMissCombo");
|
||||
|
||||
|
||||
Combo::Combo()
|
||||
{
|
||||
LABEL_X.Refresh();
|
||||
LABEL_Y.Refresh();
|
||||
LABEL_HORIZ_ALIGN.Refresh();
|
||||
LABEL_VERT_ALIGN.Refresh();
|
||||
NUMBER_X.Refresh();
|
||||
NUMBER_Y.Refresh();
|
||||
NUMBER_HORIZ_ALIGN.Refresh();
|
||||
NUMBER_VERT_ALIGN.Refresh();
|
||||
SHOW_COMBO_AT.Refresh();
|
||||
NUMBER_MIN_ZOOM.Refresh();
|
||||
NUMBER_MAX_ZOOM.Refresh();
|
||||
NUMBER_MAX_ZOOM_AT.Refresh();
|
||||
PULSE_ZOOM.Refresh();
|
||||
C_TWEEN_SECONDS.Refresh();
|
||||
FULL_COMBO_GREATS_COMMAND.Refresh();
|
||||
FULL_COMBO_PERFECTS_COMMAND.Refresh();
|
||||
FULL_COMBO_MARVELOUSES_COMMAND.Refresh();
|
||||
FULL_COMBO_BROKEN_COMMAND.Refresh();
|
||||
SHOW_MISS_COMBO.Refresh();
|
||||
|
||||
m_sprComboLabel.Load( THEME->GetPathToG( "Combo label") );
|
||||
m_sprComboLabel.SetShadowLength( 4 );
|
||||
m_sprComboLabel.StopAnimating();
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
#include "global.h"
|
||||
#include "DifficultyDisplay.h"
|
||||
#include "song.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
CachedThemeMetric ICONONCOMMAND ("DifficultyDisplay","IconOnCommand");
|
||||
CachedThemeMetric ICONOFFCOMMAND ("DifficultyDisplay","IconOffCommand");
|
||||
ThemeMetric<CString> ICONONCOMMAND ("DifficultyDisplay","IconOnCommand");
|
||||
ThemeMetric<CString> ICONOFFCOMMAND ("DifficultyDisplay","IconOffCommand");
|
||||
|
||||
DifficultyDisplay::DifficultyDisplay()
|
||||
{
|
||||
ICONONCOMMAND.Refresh();
|
||||
ICONOFFCOMMAND.Refresh();
|
||||
float fHeight = 0;
|
||||
int diff;
|
||||
for( diff = DIFFICULTY_BEGINNER; diff <= DIFFICULTY_CHALLENGE; ++diff )
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
#define DESCRIPTION_MAX_WIDTH THEME->GetMetricF(m_sName,"DescriptionMaxWidth")
|
||||
#define NUM_SHOWN_ITEMS THEME->GetMetricI(m_sName,"NumShownItems")
|
||||
#define CAPITALIZE_DIFFICULTY_NAMES THEME->GetMetric( m_sName,"CapitalizeDifficultyNames" )
|
||||
CachedThemeMetricF MOVE_COMMAND("","MoveCommand");
|
||||
|
||||
#define MAX_METERS NUM_DIFFICULTIES + MAX_EDITS_PER_SONG
|
||||
|
||||
DifficultyList::DifficultyList()
|
||||
DifficultyList::DifficultyList() :
|
||||
MOVE_COMMAND("","MoveCommand")
|
||||
{
|
||||
m_bShown = true;
|
||||
}
|
||||
@@ -31,7 +31,7 @@ DifficultyList::~DifficultyList()
|
||||
|
||||
void DifficultyList::Load()
|
||||
{
|
||||
MOVE_COMMAND.Refresh(m_sName);
|
||||
MOVE_COMMAND.ChangeGroup(m_sName);
|
||||
|
||||
m_Lines.resize( MAX_METERS );
|
||||
m_CurSong = NULL;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "PlayerNumber.h"
|
||||
#include "BitmapText.h"
|
||||
#include "DifficultyMeter.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
class Song;
|
||||
class Steps;
|
||||
@@ -61,6 +62,8 @@ private:
|
||||
};
|
||||
|
||||
vector<Row> m_Rows;
|
||||
|
||||
ThemeMetric<CString> MOVE_COMMAND;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -40,7 +40,7 @@ DifficultyMeter::DifficultyMeter()
|
||||
|
||||
void DifficultyMeter::Load()
|
||||
{
|
||||
/* We can't use global CachedThemeMetrics, because we can have multiple
|
||||
/* We can't use global ThemeMetric<CString>s, because we can have multiple
|
||||
* DifficultyMeters on screen at once, with different names. */
|
||||
m_iNumFeetInMeter = THEME->GetMetricI(m_sName,"NumFeetInMeter");
|
||||
m_iMaxFeetInMeter = THEME->GetMetricI(m_sName,"MaxFeetInMeter");
|
||||
|
||||
@@ -8,8 +8,9 @@
|
||||
#include "PrefsManager.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "SongManager.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
static CachedThemeMetricF FADE_SECONDS ("FadingBanner","FadeSeconds");
|
||||
static ThemeMetric<float> FADE_SECONDS ("FadingBanner","FadeSeconds");
|
||||
|
||||
/*
|
||||
* Allow fading from one banner to another. We can handle two fades at once;
|
||||
@@ -21,8 +22,6 @@ static CachedThemeMetricF FADE_SECONDS ("FadingBanner","FadeSeconds");
|
||||
*/
|
||||
FadingBanner::FadingBanner()
|
||||
{
|
||||
FADE_SECONDS.Refresh();
|
||||
|
||||
m_bMovingFast = false;
|
||||
m_bSkipNextBannerUpdate = false;
|
||||
m_iIndexLatest = 0;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "song.h"
|
||||
#include "GameState.h"
|
||||
#include "Style.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
const float GRAPH_EDGE_WIDTH = 2;
|
||||
|
||||
@@ -17,8 +18,8 @@ const float GRAPH_EDGE_WIDTH = 2;
|
||||
#define SHOW_CATEGORY(cat) THEME->GetMetricB("GrooveGraph","Show"+Capitalize(RadarCategoryToString(cat)))
|
||||
#define CATEGORY_X(cat) THEME->GetMetricF("GrooveGraph",Capitalize(RadarCategoryToString(cat))+"X")
|
||||
#define MOUNTAINS_BASE_Y THEME->GetMetricF("GrooveGraph","MountainsBaseY")
|
||||
CachedThemeMetricF MOUNTAIN_WIDTH ("GrooveGraph","MountainWidth");
|
||||
CachedThemeMetricF MOUNTAIN_HEIGHT ("GrooveGraph","MountainHeight");
|
||||
ThemeMetric<float> MOUNTAIN_WIDTH ("GrooveGraph","MountainWidth");
|
||||
ThemeMetric<float> MOUNTAIN_HEIGHT ("GrooveGraph","MountainHeight");
|
||||
|
||||
RageColor g_DifficultyColorsCache[NUM_DIFFICULTIES];
|
||||
static const int NUM_SHOWN_RADAR_CATEGORIES = 5;
|
||||
@@ -27,8 +28,6 @@ GrooveGraph::GrooveGraph()
|
||||
{
|
||||
for( int i=0; i<NUM_DIFFICULTIES; i++ )
|
||||
g_DifficultyColorsCache[i] = DIFFICULTY_COLORS((Difficulty)i);
|
||||
MOUNTAIN_WIDTH.Refresh();
|
||||
MOUNTAIN_HEIGHT.Refresh();
|
||||
|
||||
m_sprBase.Load( THEME->GetPathToG("GrooveGraph base") );
|
||||
this->AddChild( &m_sprBase );
|
||||
|
||||
@@ -4,29 +4,18 @@
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
CachedThemeMetric OK_COMMAND ("HoldJudgment","OKCommand");
|
||||
CachedThemeMetric NG_COMMAND ("HoldJudgment","NGCommand");
|
||||
|
||||
CachedThemeMetric OK_ODD_COMMAND ("HoldJudgment","OKOddCommand");
|
||||
CachedThemeMetric NG_ODD_COMMAND ("HoldJudgment","NGOddCommand");
|
||||
|
||||
CachedThemeMetric OK_EVEN_COMMAND ("HoldJudgment","OKEvenCommand");
|
||||
CachedThemeMetric NG_EVEN_COMMAND ("HoldJudgment","NGEvenCommand");
|
||||
ThemeMetric<CString> OK_COMMAND ("HoldJudgment","OKCommand");
|
||||
ThemeMetric<CString> NG_COMMAND ("HoldJudgment","NGCommand");
|
||||
ThemeMetric<CString> OK_ODD_COMMAND ("HoldJudgment","OKOddCommand");
|
||||
ThemeMetric<CString> NG_ODD_COMMAND ("HoldJudgment","NGOddCommand");
|
||||
ThemeMetric<CString> OK_EVEN_COMMAND ("HoldJudgment","OKEvenCommand");
|
||||
ThemeMetric<CString> NG_EVEN_COMMAND ("HoldJudgment","NGEvenCommand");
|
||||
|
||||
|
||||
HoldJudgment::HoldJudgment()
|
||||
{
|
||||
OK_COMMAND.Refresh();
|
||||
NG_COMMAND.Refresh();
|
||||
|
||||
OK_ODD_COMMAND.Refresh();
|
||||
NG_ODD_COMMAND.Refresh();
|
||||
|
||||
OK_EVEN_COMMAND.Refresh();
|
||||
NG_EVEN_COMMAND.Refresh();
|
||||
|
||||
m_iCount = 0;
|
||||
|
||||
m_sprJudgment.Load( THEME->GetPathToG("HoldJudgment 1x2") );
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "ScreenManager.h"
|
||||
#include "ScreenGameplay.h"
|
||||
#include "StageStats.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
#define NUM_ITEM_TYPES THEME->GetMetricF("Inventory","NumItemTypes")
|
||||
@@ -16,7 +17,7 @@
|
||||
#define ITEM_COMBO( i ) THEME->GetMetricI("Inventory",ssprintf("Item%dCombo",i+1))
|
||||
#define ITEM_EFFECT( i ) THEME->GetMetric ("Inventory",ssprintf("Item%dEffect",i+1))
|
||||
#define ITEM_LEVEL( i ) THEME->GetMetricI("Inventory",ssprintf("Item%dLevel",i+1))
|
||||
CachedThemeMetricF ITEM_USE_RATE_SECONDS("Inventory","ItemUseRateSeconds");
|
||||
ThemeMetric<float> ITEM_USE_RATE_SECONDS("Inventory","ItemUseRateSeconds");
|
||||
|
||||
#define ITEM_USE_PROBABILITY (1.f/ITEM_USE_RATE_SECONDS)
|
||||
|
||||
@@ -62,8 +63,6 @@ Inventory::~Inventory()
|
||||
|
||||
void Inventory::Load( PlayerNumber pn )
|
||||
{
|
||||
ITEM_USE_RATE_SECONDS.Refresh();
|
||||
|
||||
ReloadItems();
|
||||
|
||||
m_PlayerNumber = pn;
|
||||
|
||||
+19
-40
@@ -5,53 +5,32 @@
|
||||
#include "PrefsManager.h"
|
||||
#include "GameState.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
static ThemeMetric<CString> MARVELOUS_COMMAND ("Judgment","MarvelousCommand");
|
||||
static ThemeMetric<CString> PERFECT_COMMAND ("Judgment","PerfectCommand");
|
||||
static ThemeMetric<CString> GREAT_COMMAND ("Judgment","GreatCommand");
|
||||
static ThemeMetric<CString> GOOD_COMMAND ("Judgment","GoodCommand");
|
||||
static ThemeMetric<CString> BOO_COMMAND ("Judgment","BooCommand");
|
||||
static ThemeMetric<CString> MISS_COMMAND ("Judgment","MissCommand");
|
||||
|
||||
static CachedThemeMetric MARVELOUS_COMMAND ("Judgment","MarvelousCommand");
|
||||
static CachedThemeMetric PERFECT_COMMAND ("Judgment","PerfectCommand");
|
||||
static CachedThemeMetric GREAT_COMMAND ("Judgment","GreatCommand");
|
||||
static CachedThemeMetric GOOD_COMMAND ("Judgment","GoodCommand");
|
||||
static CachedThemeMetric BOO_COMMAND ("Judgment","BooCommand");
|
||||
static CachedThemeMetric MISS_COMMAND ("Judgment","MissCommand");
|
||||
static ThemeMetric<CString> MARVELOUS_ODD_COMMAND ("Judgment","MarvelousOddCommand");
|
||||
static ThemeMetric<CString> PERFECT_ODD_COMMAND ("Judgment","PerfectOddCommand");
|
||||
static ThemeMetric<CString> GREAT_ODD_COMMAND ("Judgment","GreatOddCommand");
|
||||
static ThemeMetric<CString> GOOD_ODD_COMMAND ("Judgment","GoodOddCommand");
|
||||
static ThemeMetric<CString> BOO_ODD_COMMAND ("Judgment","BooOddCommand");
|
||||
static ThemeMetric<CString> MISS_ODD_COMMAND ("Judgment","MissOddCommand");
|
||||
|
||||
static CachedThemeMetric MARVELOUS_ODD_COMMAND ("Judgment","MarvelousOddCommand");
|
||||
static CachedThemeMetric PERFECT_ODD_COMMAND ("Judgment","PerfectOddCommand");
|
||||
static CachedThemeMetric GREAT_ODD_COMMAND ("Judgment","GreatOddCommand");
|
||||
static CachedThemeMetric GOOD_ODD_COMMAND ("Judgment","GoodOddCommand");
|
||||
static CachedThemeMetric BOO_ODD_COMMAND ("Judgment","BooOddCommand");
|
||||
static CachedThemeMetric MISS_ODD_COMMAND ("Judgment","MissOddCommand");
|
||||
|
||||
static CachedThemeMetric MARVELOUS_EVEN_COMMAND ("Judgment","MarvelousEvenCommand");
|
||||
static CachedThemeMetric PERFECT_EVEN_COMMAND ("Judgment","PerfectEvenCommand");
|
||||
static CachedThemeMetric GREAT_EVEN_COMMAND ("Judgment","GreatEvenCommand");
|
||||
static CachedThemeMetric GOOD_EVEN_COMMAND ("Judgment","GoodEvenCommand");
|
||||
static CachedThemeMetric BOO_EVEN_COMMAND ("Judgment","BooEvenCommand");
|
||||
static CachedThemeMetric MISS_EVEN_COMMAND ("Judgment","MissEvenCommand");
|
||||
static ThemeMetric<CString> MARVELOUS_EVEN_COMMAND ("Judgment","MarvelousEvenCommand");
|
||||
static ThemeMetric<CString> PERFECT_EVEN_COMMAND ("Judgment","PerfectEvenCommand");
|
||||
static ThemeMetric<CString> GREAT_EVEN_COMMAND ("Judgment","GreatEvenCommand");
|
||||
static ThemeMetric<CString> GOOD_EVEN_COMMAND ("Judgment","GoodEvenCommand");
|
||||
static ThemeMetric<CString> BOO_EVEN_COMMAND ("Judgment","BooEvenCommand");
|
||||
static ThemeMetric<CString> MISS_EVEN_COMMAND ("Judgment","MissEvenCommand");
|
||||
|
||||
|
||||
Judgment::Judgment()
|
||||
{
|
||||
MARVELOUS_COMMAND.Refresh();
|
||||
PERFECT_COMMAND.Refresh();
|
||||
GREAT_COMMAND.Refresh();
|
||||
GOOD_COMMAND.Refresh();
|
||||
BOO_COMMAND.Refresh();
|
||||
MISS_COMMAND.Refresh();
|
||||
|
||||
MARVELOUS_ODD_COMMAND.Refresh();
|
||||
PERFECT_ODD_COMMAND.Refresh();
|
||||
GREAT_ODD_COMMAND.Refresh();
|
||||
GOOD_ODD_COMMAND.Refresh();
|
||||
BOO_ODD_COMMAND.Refresh();
|
||||
MISS_ODD_COMMAND.Refresh();
|
||||
|
||||
MARVELOUS_EVEN_COMMAND.Refresh();
|
||||
PERFECT_EVEN_COMMAND.Refresh();
|
||||
GREAT_EVEN_COMMAND.Refresh();
|
||||
GOOD_EVEN_COMMAND.Refresh();
|
||||
BOO_EVEN_COMMAND.Refresh();
|
||||
MISS_EVEN_COMMAND.Refresh();
|
||||
|
||||
m_iCount = 0;
|
||||
|
||||
m_sprJudgment.Load( THEME->GetPathToG("Judgment 1x6") );
|
||||
|
||||
@@ -8,16 +8,14 @@
|
||||
#include "ThemeManager.h"
|
||||
#include "song.h"
|
||||
#include "StageStats.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
//
|
||||
// Important!!!! Do not use these macros during gameplay. They return very slowly. Cache them in a member.
|
||||
//
|
||||
static CachedThemeMetricF METER_WIDTH ("LifeMeterBar","MeterWidth");
|
||||
static CachedThemeMetricF METER_HEIGHT ("LifeMeterBar","MeterHeight");
|
||||
static CachedThemeMetricF DANGER_THRESHOLD ("LifeMeterBar","DangerThreshold");
|
||||
static CachedThemeMetricI NUM_CHAMBERS ("LifeMeterBar","NumChambers");
|
||||
static CachedThemeMetricI NUM_STRIPS ("LifeMeterBar","NumStrips");
|
||||
static ThemeMetric<float> METER_WIDTH ("LifeMeterBar","MeterWidth");
|
||||
static ThemeMetric<float> METER_HEIGHT ("LifeMeterBar","MeterHeight");
|
||||
static ThemeMetric<float> DANGER_THRESHOLD ("LifeMeterBar","DangerThreshold");
|
||||
static ThemeMetric<int> NUM_CHAMBERS ("LifeMeterBar","NumChambers");
|
||||
static ThemeMetric<int> NUM_STRIPS ("LifeMeterBar","NumStrips");
|
||||
|
||||
|
||||
const float FAIL_THRESHOLD = 0;
|
||||
@@ -28,13 +26,6 @@ class LifeMeterStream : public Actor
|
||||
public:
|
||||
LifeMeterStream()
|
||||
{
|
||||
METER_WIDTH.Refresh();
|
||||
METER_HEIGHT.Refresh();
|
||||
DANGER_THRESHOLD.Refresh();
|
||||
NUM_CHAMBERS.Refresh();
|
||||
NUM_STRIPS.Refresh();
|
||||
|
||||
|
||||
bool bExtra = GAMESTATE->IsExtraStage()||GAMESTATE->IsExtraStage2();
|
||||
|
||||
m_quadMask.SetDiffuse( RageColor(0,0,0,1) );
|
||||
|
||||
@@ -23,20 +23,21 @@
|
||||
#include "CourseUtil.h"
|
||||
#include "Foreach.h"
|
||||
#include "Style.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
#define FADE_SECONDS THEME->GetMetricF("MusicWheel","FadeSeconds")
|
||||
CachedThemeMetricF SWITCH_SECONDS ("MusicWheel","SwitchSeconds");
|
||||
ThemeMetric<float> SWITCH_SECONDS ("MusicWheel","SwitchSeconds");
|
||||
#define ROULETTE_SWITCH_SECONDS THEME->GetMetricF("MusicWheel","RouletteSwitchSeconds")
|
||||
#define ROULETTE_SLOW_DOWN_SWITCHES THEME->GetMetricI("MusicWheel","RouletteSlowDownSwitches")
|
||||
#define LOCKED_INITIAL_VELOCITY THEME->GetMetricF("MusicWheel","LockedInitialVelocity")
|
||||
#define SCROLL_BAR_X THEME->GetMetricF("MusicWheel","ScrollBarX")
|
||||
#define SCROLL_BAR_HEIGHT THEME->GetMetricI("MusicWheel","ScrollBarHeight")
|
||||
CachedThemeMetricF ITEM_CURVE_X ("MusicWheel","ItemCurveX");
|
||||
ThemeMetric<float> ITEM_CURVE_X ("MusicWheel","ItemCurveX");
|
||||
#define USE_LINEAR_WHEEL THEME->GetMetricB("MusicWheel","NoCurving")
|
||||
CachedThemeMetricF ITEM_SPACING_Y ("MusicWheel","ItemSpacingY");
|
||||
CachedThemeMetricF WHEEL_3D_RADIUS ("MusicWheel","Wheel3DRadius");
|
||||
CachedThemeMetricF CIRCLE_PERCENT ("MusicWheel","CirclePercent");
|
||||
ThemeMetric<float> ITEM_SPACING_Y ("MusicWheel","ItemSpacingY");
|
||||
ThemeMetric<float> WHEEL_3D_RADIUS ("MusicWheel","Wheel3DRadius");
|
||||
ThemeMetric<float> CIRCLE_PERCENT ("MusicWheel","CirclePercent");
|
||||
#define NUM_SECTION_COLORS THEME->GetMetricI("MusicWheel","NumSectionColors")
|
||||
#define SECTION_COLORS( i ) THEME->GetMetricC("MusicWheel",ssprintf("SectionColor%d",i+1))
|
||||
#define SONG_REAL_EXTRA_COLOR THEME->GetMetricC("MusicWheel","SongRealExtraColor")
|
||||
@@ -44,8 +45,8 @@ CachedThemeMetricF CIRCLE_PERCENT ("MusicWheel","CirclePercent");
|
||||
#define SHOW_ROULETTE THEME->GetMetricB("MusicWheel","ShowRoulette")
|
||||
#define SHOW_RANDOM THEME->GetMetricB("MusicWheel","ShowRandom")
|
||||
#define SHOW_PORTAL THEME->GetMetricB("MusicWheel","ShowPortal")
|
||||
CachedThemeMetricB USE_3D ("MusicWheel","Use3D");
|
||||
CachedThemeMetricI NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems");
|
||||
ThemeMetric<bool> USE_3D ("MusicWheel","Use3D");
|
||||
ThemeMetric<int> NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems");
|
||||
#define NUM_WHEEL_ITEMS min( MAX_WHEEL_ITEMS, (int) NUM_WHEEL_ITEMS_METRIC )
|
||||
#define MOST_PLAYED_SONGS_TO_SHOW THEME->GetMetricI("MusicWheel","MostPlayedSongsToShow")
|
||||
#define SORT_MENU_NAMES THEME->GetMetric ("MusicWheel","SortMenuNames")
|
||||
@@ -72,15 +73,10 @@ static const SortOrder SORT_ORDERS[] =
|
||||
SORT_ARTIST,
|
||||
};
|
||||
// use ARRAYSIZE(SortOrder)
|
||||
// Why? -Chris
|
||||
|
||||
MusicWheel::MusicWheel()
|
||||
{
|
||||
// update theme metric cache
|
||||
SWITCH_SECONDS.Refresh();
|
||||
ITEM_CURVE_X.Refresh();
|
||||
ITEM_SPACING_Y.Refresh();
|
||||
USE_3D.Refresh();
|
||||
NUM_WHEEL_ITEMS_METRIC.Refresh();
|
||||
}
|
||||
|
||||
void MusicWheel::Load()
|
||||
@@ -93,12 +89,6 @@ void MusicWheel::Load()
|
||||
|
||||
SONGMAN->UpdateRankingCourses();
|
||||
|
||||
if( USE_3D )
|
||||
{
|
||||
WHEEL_3D_RADIUS.Refresh();
|
||||
CIRCLE_PERCENT.Refresh();
|
||||
}
|
||||
|
||||
/*
|
||||
// for debugging.
|
||||
// Whatever Screen uses MusicWheel should set the Style if it needs to be set.
|
||||
|
||||
+10
-17
@@ -29,9 +29,10 @@
|
||||
#include "DancingCharacters.h"
|
||||
#include "ScreenDimensions.h"
|
||||
#include "RageSoundManager.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
CachedThemeMetricF GRAY_ARROWS_Y_STANDARD ("Player","ReceptorArrowsYStandard");
|
||||
CachedThemeMetricF GRAY_ARROWS_Y_REVERSE ("Player","ReceptorArrowsYReverse");
|
||||
ThemeMetric<float> GRAY_ARROWS_Y_STANDARD ("Player","ReceptorArrowsYStandard");
|
||||
ThemeMetric<float> GRAY_ARROWS_Y_REVERSE ("Player","ReceptorArrowsYReverse");
|
||||
#define JUDGMENT_X( p, both_sides ) THEME->GetMetricF("Player",both_sides ? CString("JudgmentXOffsetBothSides") : ssprintf("JudgmentXOffsetOneSideP%d",p+1))
|
||||
#define JUDGMENT_Y THEME->GetMetricF("Player","JudgmentY")
|
||||
#define JUDGMENT_Y_REVERSE THEME->GetMetricF("Player","JudgmentYReverse")
|
||||
@@ -41,11 +42,11 @@ CachedThemeMetricF GRAY_ARROWS_Y_REVERSE ("Player","ReceptorArrowsYReverse");
|
||||
#define ATTACK_DISPLAY_X( p, both_sides ) THEME->GetMetricF("Player",both_sides ? CString("AttackDisplayXOffsetBothSides") : ssprintf("AttackDisplayXOffsetOneSideP%d",p+1))
|
||||
#define ATTACK_DISPLAY_Y THEME->GetMetricF("Player","AttackDisplayY")
|
||||
#define ATTACK_DISPLAY_Y_REVERSE THEME->GetMetricF("Player","AttackDisplayYReverse")
|
||||
CachedThemeMetricF HOLD_JUDGMENT_Y_STANDARD ("Player","HoldJudgmentYStandard");
|
||||
CachedThemeMetricF HOLD_JUDGMENT_Y_REVERSE ("Player","HoldJudgmentYReverse");
|
||||
CachedThemeMetricI BRIGHT_GHOST_COMBO_THRESHOLD("Player","BrightGhostComboThreshold");
|
||||
CachedThemeMetricB TAP_JUDGMENTS_UNDER_FIELD ("Player","TapJudgmentsUnderField");
|
||||
CachedThemeMetricB HOLD_JUDGMENTS_UNDER_FIELD ("Player","HoldJudgmentsUnderField");
|
||||
ThemeMetric<float> HOLD_JUDGMENT_Y_STANDARD ("Player","HoldJudgmentYStandard");
|
||||
ThemeMetric<float> HOLD_JUDGMENT_Y_REVERSE ("Player","HoldJudgmentYReverse");
|
||||
ThemeMetric<int> BRIGHT_GHOST_COMBO_THRESHOLD("Player","BrightGhostComboThreshold");
|
||||
ThemeMetric<bool> TAP_JUDGMENTS_UNDER_FIELD ("Player","TapJudgmentsUnderField");
|
||||
ThemeMetric<bool> HOLD_JUDGMENTS_UNDER_FIELD ("Player","HoldJudgmentsUnderField");
|
||||
#define START_DRAWING_AT_PIXELS THEME->GetMetricI("Player","StartDrawingAtPixels")
|
||||
#define STOP_DRAWING_AT_PIXELS THEME->GetMetricI("Player","StopDrawingAtPixels")
|
||||
#define MAX_PRO_TIMING_ERROR THEME->GetMetricI("Player","MaxProTimingError")
|
||||
@@ -58,14 +59,6 @@ static const float StepSearchDistance = 1.0f;
|
||||
|
||||
PlayerMinus::PlayerMinus()
|
||||
{
|
||||
GRAY_ARROWS_Y_STANDARD.Refresh();
|
||||
GRAY_ARROWS_Y_REVERSE.Refresh();
|
||||
HOLD_JUDGMENT_Y_STANDARD.Refresh();
|
||||
HOLD_JUDGMENT_Y_REVERSE.Refresh();
|
||||
BRIGHT_GHOST_COMBO_THRESHOLD.Refresh();
|
||||
TAP_JUDGMENTS_UNDER_FIELD.Refresh();
|
||||
HOLD_JUDGMENTS_UNDER_FIELD.Refresh();
|
||||
|
||||
m_PlayerNumber = PLAYER_INVALID;
|
||||
m_fNoteFieldHeight = 0;
|
||||
|
||||
@@ -570,10 +563,10 @@ void PlayerMinus::DrawPrimitives()
|
||||
DISPLAY->PopMatrix();
|
||||
|
||||
|
||||
if( !TAP_JUDGMENTS_UNDER_FIELD )
|
||||
if( !(bool)TAP_JUDGMENTS_UNDER_FIELD )
|
||||
DrawTapJudgments();
|
||||
|
||||
if( !TAP_JUDGMENTS_UNDER_FIELD )
|
||||
if( !(bool)TAP_JUDGMENTS_UNDER_FIELD )
|
||||
DrawHoldJudgments();
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,11 @@ public:
|
||||
PrefsManager::Subscribe( this );
|
||||
}
|
||||
|
||||
~Preference()
|
||||
{
|
||||
PrefsManager::Unsubscribe( this );
|
||||
}
|
||||
|
||||
void LoadDefault()
|
||||
{
|
||||
m_currentValue = m_defaultValue;
|
||||
|
||||
@@ -40,6 +40,12 @@ void PrefsManager::Subscribe( IPreference *p )
|
||||
g_pvpSubscribers->push_back( p );
|
||||
}
|
||||
|
||||
void PrefsManager::Unsubscribe( IPreference *p )
|
||||
{
|
||||
vector<IPreference*>::iterator iter = find( g_pvpSubscribers->begin(), g_pvpSubscribers->end(), p );
|
||||
ASSERT( iter != g_pvpSubscribers->end() ); // tried to unregister when not registered
|
||||
g_pvpSubscribers->erase( iter );
|
||||
}
|
||||
|
||||
|
||||
bool g_bAutoRestart = false;
|
||||
|
||||
@@ -294,6 +294,7 @@ public:
|
||||
// For self-registering prefs
|
||||
//
|
||||
static void Subscribe( IPreference *p );
|
||||
static void Unsubscribe( IPreference *p );
|
||||
|
||||
protected:
|
||||
void ReadPrefsFromFile( CString sIni );
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
#include "ProTimingDisplay.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "RageUtil.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
static CachedThemeMetric MARVELOUS_COMMAND ("ProTimingDisplay","MarvelousCommand");
|
||||
static CachedThemeMetric PERFECT_COMMAND ("ProTimingDisplay","PerfectCommand");
|
||||
static CachedThemeMetric GREAT_COMMAND ("ProTimingDisplay","GreatCommand");
|
||||
static CachedThemeMetric GOOD_COMMAND ("ProTimingDisplay","GoodCommand");
|
||||
static CachedThemeMetric BOO_COMMAND ("ProTimingDisplay","BooCommand");
|
||||
static CachedThemeMetric MISS_COMMAND ("ProTimingDisplay","MissCommand");
|
||||
static CachedThemeMetric HIT_MINE_COMMAND ("ProTimingDisplay","HitMineCommand");
|
||||
static ThemeMetric<CString> MARVELOUS_COMMAND ("ProTimingDisplay","MarvelousCommand");
|
||||
static ThemeMetric<CString> PERFECT_COMMAND ("ProTimingDisplay","PerfectCommand");
|
||||
static ThemeMetric<CString> GREAT_COMMAND ("ProTimingDisplay","GreatCommand");
|
||||
static ThemeMetric<CString> GOOD_COMMAND ("ProTimingDisplay","GoodCommand");
|
||||
static ThemeMetric<CString> BOO_COMMAND ("ProTimingDisplay","BooCommand");
|
||||
static ThemeMetric<CString> MISS_COMMAND ("ProTimingDisplay","MissCommand");
|
||||
static ThemeMetric<CString> HIT_MINE_COMMAND ("ProTimingDisplay","HitMineCommand");
|
||||
|
||||
|
||||
ProTimingDisplay::ProTimingDisplay()
|
||||
@@ -17,14 +18,6 @@ ProTimingDisplay::ProTimingDisplay()
|
||||
m_Judgment.LoadFromFont( THEME->GetPathF("ProTimingDisplay","Judgment") );
|
||||
m_Judgment.SetName( "Judgment" );
|
||||
this->AddChild( &m_Judgment );
|
||||
|
||||
MARVELOUS_COMMAND.Refresh();
|
||||
PERFECT_COMMAND.Refresh();
|
||||
GREAT_COMMAND.Refresh();
|
||||
GOOD_COMMAND.Refresh();
|
||||
BOO_COMMAND.Refresh();
|
||||
MISS_COMMAND.Refresh();
|
||||
HIT_MINE_COMMAND.Refresh();
|
||||
}
|
||||
|
||||
void ProTimingDisplay::Reset()
|
||||
@@ -43,7 +36,7 @@ void ProTimingDisplay::SetJudgment( int ms, TapNoteScore score )
|
||||
|
||||
m_Judgment.SetText( ssprintf("%i", ms) );
|
||||
|
||||
const CachedThemeMetric *Commands[NUM_TAP_NOTE_SCORES] =
|
||||
const ThemeMetric<CString> *Commands[NUM_TAP_NOTE_SCORES] =
|
||||
{
|
||||
NULL, /* no TNS_NONE */
|
||||
&HIT_MINE_COMMAND,
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
#include "Character.h"
|
||||
#include "ScreenManager.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
CachedThemeMetricF ATTACK_DURATION_SECONDS ("ScoreKeeperRave","AttackDurationSeconds");
|
||||
ThemeMetric<float> ATTACK_DURATION_SECONDS ("ScoreKeeperRave","AttackDurationSeconds");
|
||||
|
||||
|
||||
ScoreKeeperRave::ScoreKeeperRave(PlayerNumber pn) : ScoreKeeper(pn)
|
||||
{
|
||||
ATTACK_DURATION_SECONDS.Refresh();
|
||||
}
|
||||
|
||||
void ScoreKeeperRave::OnNextSong( int iSongInCourseIndex, const Steps* pSteps, const NoteData* pNoteData )
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "ScreenDimensions.h"
|
||||
|
||||
ThemeMetric<float> SCREEN_WIDTH("Common","ScreenWidth");
|
||||
ThemeMetric<float> SCREEN_HEIGHT("Common","ScreenHeight");
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* (c) 2001-2002 Chris Danford
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
#ifndef SCREEN_DIMENSIONS_H
|
||||
#define SCREEN_DIMENSIONS_H
|
||||
|
||||
#include "ThemeMetric.h"
|
||||
#include "ThemeManager.h"
|
||||
|
||||
extern ThemeMetric<float> SCREEN_WIDTH;
|
||||
extern ThemeMetric<float> SCREEN_HEIGHT;
|
||||
#define SCREEN_WIDTH THEME->GetMetricF("Common","ScreenWidth")
|
||||
#define SCREEN_HEIGHT THEME->GetMetricF("Common","ScreenHeight")
|
||||
|
||||
#define SCREEN_LEFT (0)
|
||||
#define SCREEN_RIGHT (SCREEN_WIDTH)
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "StepsUtil.h"
|
||||
#include "Foreach.h"
|
||||
#include "ScreenDimensions.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
const float RECORD_HOLD_SECONDS = 0.3f;
|
||||
@@ -71,7 +72,7 @@ const float RECORD_HOLD_SECONDS = 0.3f;
|
||||
#define NAMING_MENU_ITEM_START_Y (SCREEN_TOP + 24)
|
||||
#define NAMING_MENU_ITEM_SPACING_Y (18)
|
||||
|
||||
CachedThemeMetricF TICK_EARLY_SECONDS ("ScreenGameplay","TickEarlySeconds");
|
||||
ThemeMetric<float> TICK_EARLY_SECONDS ("ScreenGameplay","TickEarlySeconds");
|
||||
|
||||
|
||||
const ScreenMessage SM_BackFromMainMenu = (ScreenMessage)(SM_User+1);
|
||||
@@ -382,8 +383,6 @@ ScreenEdit::ScreenEdit( CString sName ) : Screen( sName )
|
||||
/* We do this ourself. */
|
||||
SOUND->HandleSongTimer( false );
|
||||
|
||||
TICK_EARLY_SECONDS.Refresh();
|
||||
|
||||
// set both players to joined so the credit message doesn't show
|
||||
FOREACH_PlayerNumber( p )
|
||||
GAMESTATE->m_bSideIsJoined[p] = true;
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "Foreach.h"
|
||||
#include "DancingCharacters.h"
|
||||
#include "ScreenDimensions.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
//
|
||||
// Defines
|
||||
@@ -55,8 +56,8 @@
|
||||
* go away eventually, once metrics can redirect to Lua calls. */
|
||||
#define INITIAL_BACKGROUND_BRIGHTNESS( play_mode ) THEME->GetMetricF(m_sName,"InitialBackgroundBrightness"+Capitalize(PlayModeToString(play_mode)))
|
||||
|
||||
static CachedThemeMetricF SECONDS_BETWEEN_COMMENTS ("ScreenGameplay","SecondsBetweenComments");
|
||||
static CachedThemeMetricF TICK_EARLY_SECONDS ("ScreenGameplay","TickEarlySeconds");
|
||||
static ThemeMetric<float> SECONDS_BETWEEN_COMMENTS ("ScreenGameplay","SecondsBetweenComments");
|
||||
static ThemeMetric<float> TICK_EARLY_SECONDS ("ScreenGameplay","TickEarlySeconds");
|
||||
|
||||
/* Global, so it's accessible from ShowSavePrompt: */
|
||||
static float g_fOldOffset; // used on offset screen to calculate difference
|
||||
@@ -100,9 +101,6 @@ void ScreenGameplay::Init()
|
||||
/* We do this ourself. */
|
||||
SOUND->HandleSongTimer( false );
|
||||
|
||||
SECONDS_BETWEEN_COMMENTS.Refresh();
|
||||
TICK_EARLY_SECONDS.Refresh();
|
||||
|
||||
//need to initialize these before checking for demonstration mode
|
||||
//otherwise destructor will try to delete possibly invalid pointers
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "Foreach.h"
|
||||
#include "StageStats.h"
|
||||
#include "Style.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
SongManager* SONGMAN = NULL; // global and accessable from anywhere in our program
|
||||
|
||||
@@ -42,14 +43,14 @@ SongManager* SONGMAN = NULL; // global and accessable from anywhere in our progr
|
||||
|
||||
#define NUM_GROUP_COLORS THEME->GetMetricI("SongManager","NumGroupColors")
|
||||
#define GROUP_COLOR( i ) THEME->GetMetricC("SongManager",ssprintf("GroupColor%d",i+1))
|
||||
CachedThemeMetricC BEGINNER_COLOR ("SongManager","BeginnerColor");
|
||||
CachedThemeMetricC EASY_COLOR ("SongManager","EasyColor");
|
||||
CachedThemeMetricC MEDIUM_COLOR ("SongManager","MediumColor");
|
||||
CachedThemeMetricC HARD_COLOR ("SongManager","HardColor");
|
||||
CachedThemeMetricC CHALLENGE_COLOR ("SongManager","ChallengeColor");
|
||||
CachedThemeMetricC EDIT_COLOR ("SongManager","EditColor");
|
||||
CachedThemeMetricC EXTRA_COLOR ("SongManager","ExtraColor");
|
||||
CachedThemeMetricI EXTRA_COLOR_METER ("SongManager","ExtraColorMeter");
|
||||
ThemeMetric<RageColor> BEGINNER_COLOR ("SongManager","BeginnerColor");
|
||||
ThemeMetric<RageColor> EASY_COLOR ("SongManager","EasyColor");
|
||||
ThemeMetric<RageColor> MEDIUM_COLOR ("SongManager","MediumColor");
|
||||
ThemeMetric<RageColor> HARD_COLOR ("SongManager","HardColor");
|
||||
ThemeMetric<RageColor> CHALLENGE_COLOR ("SongManager","ChallengeColor");
|
||||
ThemeMetric<RageColor> EDIT_COLOR ("SongManager","EditColor");
|
||||
ThemeMetric<RageColor> EXTRA_COLOR ("SongManager","ExtraColor");
|
||||
ThemeMetric<int> EXTRA_COLOR_METER ("SongManager","ExtraColorMeter");
|
||||
|
||||
vector<RageColor> g_vGroupColors;
|
||||
RageTimer g_LastMetricUpdate; /* can't use RageTimer globally */
|
||||
@@ -63,15 +64,6 @@ static void UpdateMetrics()
|
||||
g_vGroupColors.clear();
|
||||
for( int i=0; i<NUM_GROUP_COLORS; i++ )
|
||||
g_vGroupColors.push_back( GROUP_COLOR(i) );
|
||||
|
||||
BEGINNER_COLOR.Refresh();
|
||||
EASY_COLOR.Refresh();
|
||||
MEDIUM_COLOR.Refresh();
|
||||
HARD_COLOR.Refresh();
|
||||
CHALLENGE_COLOR.Refresh();
|
||||
EDIT_COLOR.Refresh();
|
||||
EXTRA_COLOR.Refresh();
|
||||
EXTRA_COLOR_METER.Refresh();
|
||||
}
|
||||
|
||||
SongManager::SongManager()
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
#include "SongManager.h"
|
||||
#include "RageTextureManager.h"
|
||||
#include "ActorUtil.h"
|
||||
#include "ThemeMetric.h"
|
||||
|
||||
|
||||
CachedThemeMetric ARTIST_PREPEND_STRING ("TextBanner","ArtistPrependString");
|
||||
CachedThemeMetric TWO_LINES_TITLE_COMMAND ("TextBanner","TwoLinesTitleCommand");
|
||||
CachedThemeMetric TWO_LINES_SUBTITLE_COMMAND ("TextBanner","TwoLinesSubtitleCommand");
|
||||
CachedThemeMetric TWO_LINES_ARTIST_COMMAND ("TextBanner","TwoLinesArtistCommand");
|
||||
CachedThemeMetric THREE_LINES_TITLE_COMMAND ("TextBanner","ThreeLinesTitleCommand");
|
||||
CachedThemeMetric THREE_LINES_SUBTITLE_COMMAND ("TextBanner","ThreeLinesSubtitleCommand");
|
||||
CachedThemeMetric THREE_LINES_ARTIST_COMMAND ("TextBanner","ThreeLinesArtistCommand");
|
||||
ThemeMetric<CString> ARTIST_PREPEND_STRING ("TextBanner","ArtistPrependString");
|
||||
ThemeMetric<CString> TWO_LINES_TITLE_COMMAND ("TextBanner","TwoLinesTitleCommand");
|
||||
ThemeMetric<CString> TWO_LINES_SUBTITLE_COMMAND ("TextBanner","TwoLinesSubtitleCommand");
|
||||
ThemeMetric<CString> TWO_LINES_ARTIST_COMMAND ("TextBanner","TwoLinesArtistCommand");
|
||||
ThemeMetric<CString> THREE_LINES_TITLE_COMMAND ("TextBanner","ThreeLinesTitleCommand");
|
||||
ThemeMetric<CString> THREE_LINES_SUBTITLE_COMMAND ("TextBanner","ThreeLinesSubtitleCommand");
|
||||
ThemeMetric<CString> THREE_LINES_ARTIST_COMMAND ("TextBanner","ThreeLinesArtistCommand");
|
||||
|
||||
void TextBanner::Init()
|
||||
{
|
||||
@@ -24,13 +24,6 @@ void TextBanner::Init()
|
||||
m_bInitted = true;
|
||||
|
||||
ASSERT( m_sName != "" );
|
||||
ARTIST_PREPEND_STRING.Refresh( m_sName );
|
||||
TWO_LINES_TITLE_COMMAND.Refresh( m_sName );
|
||||
TWO_LINES_SUBTITLE_COMMAND.Refresh( m_sName );
|
||||
TWO_LINES_ARTIST_COMMAND.Refresh( m_sName );
|
||||
THREE_LINES_TITLE_COMMAND.Refresh( m_sName );
|
||||
THREE_LINES_SUBTITLE_COMMAND.Refresh( m_sName );
|
||||
THREE_LINES_ARTIST_COMMAND.Refresh( m_sName );
|
||||
|
||||
m_textTitle.SetName( "Title" );
|
||||
m_textTitle.LoadFromFont( THEME->GetPathToF("TextBanner") );
|
||||
|
||||
@@ -68,6 +68,13 @@ void ThemeManager::Subscribe( IThemeMetric *p )
|
||||
g_pvpSubscribers->push_back( p );
|
||||
}
|
||||
|
||||
void ThemeManager::Unsubscribe( IThemeMetric *p )
|
||||
{
|
||||
vector<IThemeMetric*>::iterator iter = find( g_pvpSubscribers->begin(), g_pvpSubscribers->end(), p );
|
||||
ASSERT( iter != g_pvpSubscribers->end() ); // tried to unregister when not registered
|
||||
g_pvpSubscribers->erase( iter );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* We spend a lot of time doing redundant theme path lookups. Cache results. */
|
||||
@@ -281,10 +288,10 @@ void ThemeManager::SwitchThemeAndLanguage( const CString &sThemeName, const CStr
|
||||
if ( SCREENMAN != NULL )
|
||||
SCREENMAN->ThemeChanged();
|
||||
|
||||
Lua::UpdateGlobals();
|
||||
|
||||
// reload subscribers
|
||||
FOREACH( IThemeMetric*, *g_pvpSubscribers, p ) (*p)->Read();
|
||||
|
||||
Lua::UpdateGlobals();
|
||||
}
|
||||
|
||||
CString ThemeManager::GetThemeDirFromName( const CString &sThemeName )
|
||||
|
||||
@@ -68,6 +68,7 @@ public:
|
||||
// For self-registering metrics
|
||||
//
|
||||
static void Subscribe( IThemeMetric *p );
|
||||
static void Unsubscribe( IThemeMetric *p );
|
||||
|
||||
|
||||
protected:
|
||||
@@ -87,78 +88,6 @@ protected:
|
||||
|
||||
extern ThemeManager* THEME; // global and accessable from anywhere in our program
|
||||
|
||||
class CachedThemeMetric
|
||||
{
|
||||
protected:
|
||||
CString m_sClassName;
|
||||
CString m_sValueName;
|
||||
bool m_bInited;
|
||||
|
||||
CString m_sValue;
|
||||
|
||||
virtual void Update() { }
|
||||
|
||||
public:
|
||||
CachedThemeMetric( const CString &sClassName, const CString &sValueName ):
|
||||
m_sClassName( sClassName ),
|
||||
m_sValueName( sValueName ),
|
||||
m_bInited( false )
|
||||
{
|
||||
}
|
||||
virtual ~CachedThemeMetric() { }
|
||||
|
||||
void Refresh( const CString &sClassName = "" )
|
||||
{
|
||||
m_sValue = THEME->GetMetric(sClassName==""? m_sClassName:sClassName,m_sValueName);
|
||||
Update();
|
||||
m_bInited = true;
|
||||
}
|
||||
|
||||
operator const CString () const { ASSERT(m_bInited); return m_sValue; };
|
||||
};
|
||||
|
||||
class CachedThemeMetricF : public CachedThemeMetric
|
||||
{
|
||||
float m_fValue;
|
||||
public:
|
||||
void Update() { m_fValue = (float)atof( m_sValue ); }
|
||||
CachedThemeMetricF( const CString &sClassName, const CString &sValueName ) : CachedThemeMetric( sClassName, sValueName ) {}
|
||||
operator const float () const { ASSERT(m_bInited); return m_fValue; };
|
||||
};
|
||||
|
||||
class CachedThemeMetricI : public CachedThemeMetric
|
||||
{
|
||||
int m_iValue;
|
||||
public:
|
||||
void Update() { m_iValue = atoi( m_sValue ); }
|
||||
CachedThemeMetricI( const CString &sClassName, const CString &sValueName ) : CachedThemeMetric( sClassName, sValueName ) {}
|
||||
operator const int () const { ASSERT(m_bInited); return m_iValue; };
|
||||
};
|
||||
|
||||
class CachedThemeMetricB : public CachedThemeMetric
|
||||
{
|
||||
bool m_bValue;
|
||||
public:
|
||||
void Update() { m_bValue = atoi( m_sValue ) != 0; }
|
||||
CachedThemeMetricB( const CString &sClassName, const CString &sValueName ) : CachedThemeMetric( sClassName, sValueName ) {}
|
||||
operator const bool () const { ASSERT(m_bInited); return m_bValue; };
|
||||
};
|
||||
|
||||
|
||||
|
||||
class CachedThemeMetricC : public CachedThemeMetric
|
||||
{
|
||||
RageColor m_cValue;
|
||||
public:
|
||||
void Update()
|
||||
{
|
||||
m_cValue = RageColor(1,1,1,1);
|
||||
sscanf( m_sValue, "%f,%f,%f,%f", &m_cValue.r, &m_cValue.g, &m_cValue.b, &m_cValue.a );
|
||||
}
|
||||
CachedThemeMetricC( const CString &sClassName, const CString &sValueName ) : CachedThemeMetric( sClassName, sValueName ) {}
|
||||
operator const RageColor () const { ASSERT(m_bInited); return m_cValue; };
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -28,6 +28,17 @@ public:
|
||||
ThemeManager::Subscribe( this );
|
||||
}
|
||||
|
||||
~ThemeMetric()
|
||||
{
|
||||
ThemeManager::Unsubscribe( this );
|
||||
}
|
||||
|
||||
void ChangeGroup( const CString &sGroup )
|
||||
{
|
||||
m_sGroup = sGroup;
|
||||
Read();
|
||||
}
|
||||
|
||||
void Read()
|
||||
{
|
||||
THEME->GetMetric( m_sGroup, m_sName, m_currentValue );
|
||||
|
||||
Reference in New Issue
Block a user