change ThemeMetric static-sized arrays to dynamically sized
This commit is contained in:
@@ -11,7 +11,7 @@ ThemeMetric<CString> FIRST_RUN_INITIAL_SCREEN ("Common","FirstRunInitialScreen")
|
||||
ThemeMetric<CString> DEFAULT_MODIFIERS ("Common","DefaultModifiers" );
|
||||
ThemeMetric<CString> DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" );
|
||||
ThemeMetric<CString> COURSE_DIFFICULTIES_TO_SHOW ("Common","CourseDifficultiesToShow");
|
||||
ThemeMetric1D<RageColor,NUM_PLAYERS> PLAYER_COLOR ("Common",PLAYER_COLOR_NAME,NUM_PLAYERS);
|
||||
ThemeMetric1D<RageColor> PLAYER_COLOR ("Common",PLAYER_COLOR_NAME,NUM_PLAYERS);
|
||||
ThemeMetric<float> JOIN_PAUSE_SECONDS ("Common","JoinPauseSeconds");
|
||||
ThemeMetric<CString> WINDOW_TITLE ("Common","WindowTitle");
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ extern ThemeMetric<CString> FIRST_RUN_INITIAL_SCREEN;
|
||||
extern ThemeMetric<CString> DEFAULT_MODIFIERS;
|
||||
extern ThemeMetric<CString> DEFAULT_CPU_MODIFIERS;
|
||||
extern ThemeMetric<CString> COURSE_DIFFICULTIES_TO_SHOW;
|
||||
extern ThemeMetric1D<RageColor,NUM_PLAYERS> PLAYER_COLOR;
|
||||
extern ThemeMetric1D<RageColor> PLAYER_COLOR;
|
||||
extern ThemeMetric<float> JOIN_PAUSE_SECONDS;
|
||||
extern ThemeMetric<CString> WINDOW_TITLE;
|
||||
|
||||
|
||||
+19
-19
@@ -41,25 +41,25 @@ CString JUDGMENT_X_NAME( size_t p, size_t both_sides ) { return "JudgmentXOffse
|
||||
CString COMBO_X_NAME( size_t p, size_t both_sides ) { return "ComboXOffset" + (both_sides ? CString("BothSides") : ssprintf("OneSideP%d",p+1) ); }
|
||||
CString ATTACK_DISPLAY_X_NAME( size_t p, size_t both_sides ){ return "AttackDisplayXOffset" + (both_sides ? CString("BothSides") : ssprintf("OneSideP%d",p+1) ); }
|
||||
|
||||
ThemeMetric<float> GRAY_ARROWS_Y_STANDARD ("Player","ReceptorArrowsYStandard");
|
||||
ThemeMetric<float> GRAY_ARROWS_Y_REVERSE ("Player","ReceptorArrowsYReverse");
|
||||
ThemeMetric2D<float,NUM_PLAYERS,2> JUDGMENT_X ("Player",JUDGMENT_X_NAME,NUM_PLAYERS,2);
|
||||
ThemeMetric<float> JUDGMENT_Y ("Player","JudgmentY");
|
||||
ThemeMetric<float> JUDGMENT_Y_REVERSE ("Player","JudgmentYReverse");
|
||||
ThemeMetric2D<float,NUM_PLAYERS,2> COMBO_X ("Player",COMBO_X_NAME,NUM_PLAYERS,2);
|
||||
ThemeMetric<float> COMBO_Y ("Player","ComboY");
|
||||
ThemeMetric<float> COMBO_Y_REVERSE ("Player","ComboYReverse");
|
||||
ThemeMetric2D<float,NUM_PLAYERS,2> ATTACK_DISPLAY_X ("Player",ATTACK_DISPLAY_X_NAME,NUM_PLAYERS,2);
|
||||
ThemeMetric<float> ATTACK_DISPLAY_Y ("Player","AttackDisplayY");
|
||||
ThemeMetric<float> ATTACK_DISPLAY_Y_REVERSE ("Player","AttackDisplayYReverse");
|
||||
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");
|
||||
ThemeMetric<int> START_DRAWING_AT_PIXELS ("Player","StartDrawingAtPixels");
|
||||
ThemeMetric<int> STOP_DRAWING_AT_PIXELS ("Player","StopDrawingAtPixels");
|
||||
ThemeMetric<int> MAX_PRO_TIMING_ERROR ("Player","MaxProTimingError");
|
||||
ThemeMetric<float> GRAY_ARROWS_Y_STANDARD ("Player","ReceptorArrowsYStandard");
|
||||
ThemeMetric<float> GRAY_ARROWS_Y_REVERSE ("Player","ReceptorArrowsYReverse");
|
||||
ThemeMetric2D<float> JUDGMENT_X ("Player",JUDGMENT_X_NAME,NUM_PLAYERS,2);
|
||||
ThemeMetric<float> JUDGMENT_Y ("Player","JudgmentY");
|
||||
ThemeMetric<float> JUDGMENT_Y_REVERSE ("Player","JudgmentYReverse");
|
||||
ThemeMetric2D<float> COMBO_X ("Player",COMBO_X_NAME,NUM_PLAYERS,2);
|
||||
ThemeMetric<float> COMBO_Y ("Player","ComboY");
|
||||
ThemeMetric<float> COMBO_Y_REVERSE ("Player","ComboYReverse");
|
||||
ThemeMetric2D<float> ATTACK_DISPLAY_X ("Player",ATTACK_DISPLAY_X_NAME,NUM_PLAYERS,2);
|
||||
ThemeMetric<float> ATTACK_DISPLAY_Y ("Player","AttackDisplayY");
|
||||
ThemeMetric<float> ATTACK_DISPLAY_Y_REVERSE ("Player","AttackDisplayYReverse");
|
||||
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");
|
||||
ThemeMetric<int> START_DRAWING_AT_PIXELS ("Player","StartDrawingAtPixels");
|
||||
ThemeMetric<int> STOP_DRAWING_AT_PIXELS ("Player","StopDrawingAtPixels");
|
||||
ThemeMetric<int> MAX_PRO_TIMING_ERROR ("Player","MaxProTimingError");
|
||||
|
||||
/* Distance to search for a note in Step(), in seconds. */
|
||||
static const float StepSearchDistance = 1.0f;
|
||||
|
||||
@@ -113,38 +113,38 @@ protected:
|
||||
RageSound m_SoundToggleOff;
|
||||
|
||||
// metrics
|
||||
ThemeMetric<float> ARROWS_X;
|
||||
ThemeMetric<float> LABELS_X;
|
||||
ThemeMetric<float> LABELS_ZOOM;
|
||||
ThemeMetric<int> LABELS_H_ALIGN;
|
||||
ThemeMetric<float> ITEMS_ZOOM;
|
||||
ThemeMetric<float> ITEMS_START_X;
|
||||
ThemeMetric<float> ITEMS_END_X;
|
||||
ThemeMetric<float> ITEMS_GAP_X;
|
||||
ThemeMetric1D<float,NUM_PLAYERS> ITEMS_LONG_ROW_X;
|
||||
ThemeMetric<float> ITEMS_LONG_ROW_SHARED_X;
|
||||
ThemeMetric<float> ITEMS_START_Y;
|
||||
ThemeMetric<float> ITEMS_SPACING_Y;
|
||||
ThemeMetric1D<float,NUM_PLAYERS> ICONS_X;
|
||||
ThemeMetric1D<float,NUM_PLAYERS> EXPLANATION_X;
|
||||
ThemeMetric1D<float,NUM_PLAYERS> EXPLANATION_Y;
|
||||
ThemeMetric1D<apActorCommands,NUM_PLAYERS> EXPLANATION_ON_COMMAND;
|
||||
ThemeMetric<float> EXPLANATION_TOGETHER_X;
|
||||
ThemeMetric<float> EXPLANATION_TOGETHER_Y;
|
||||
ThemeMetric<apActorCommands> EXPLANATION_TOGETHER_ON_COMMAND;
|
||||
ThemeMetric<bool> SHOW_SCROLL_BAR;
|
||||
ThemeMetric<float> SCROLL_BAR_HEIGHT;
|
||||
ThemeMetric<float> SCROLL_BAR_TIME;
|
||||
ThemeMetric<float> EXPLANATION_ZOOM;
|
||||
ThemeMetric<RageColor> COLOR_SELECTED;
|
||||
ThemeMetric<RageColor> COLOR_NOT_SELECTED;
|
||||
ThemeMetric<int> NUM_SHOWN_ITEMS;
|
||||
ThemeMetric<bool> SHOW_BPM_IN_SPEED_TITLE;
|
||||
ThemeMetric<apActorCommands> FRAME_ON_COMMAND;
|
||||
ThemeMetric<apActorCommands> FRAME_OFF_COMMAND;
|
||||
ThemeMetric<bool> SEPARATE_EXIT_ROW;
|
||||
ThemeMetric<float> SEPARATE_EXIT_ROW_Y;
|
||||
ThemeMetric<bool> CAPITALIZE_ALL_OPTION_NAMES;
|
||||
ThemeMetric<float> ARROWS_X;
|
||||
ThemeMetric<float> LABELS_X;
|
||||
ThemeMetric<float> LABELS_ZOOM;
|
||||
ThemeMetric<int> LABELS_H_ALIGN;
|
||||
ThemeMetric<float> ITEMS_ZOOM;
|
||||
ThemeMetric<float> ITEMS_START_X;
|
||||
ThemeMetric<float> ITEMS_END_X;
|
||||
ThemeMetric<float> ITEMS_GAP_X;
|
||||
ThemeMetric1D<float> ITEMS_LONG_ROW_X;
|
||||
ThemeMetric<float> ITEMS_LONG_ROW_SHARED_X;
|
||||
ThemeMetric<float> ITEMS_START_Y;
|
||||
ThemeMetric<float> ITEMS_SPACING_Y;
|
||||
ThemeMetric1D<float> ICONS_X;
|
||||
ThemeMetric1D<float> EXPLANATION_X;
|
||||
ThemeMetric1D<float> EXPLANATION_Y;
|
||||
ThemeMetric1D<apActorCommands> EXPLANATION_ON_COMMAND;
|
||||
ThemeMetric<float> EXPLANATION_TOGETHER_X;
|
||||
ThemeMetric<float> EXPLANATION_TOGETHER_Y;
|
||||
ThemeMetric<apActorCommands> EXPLANATION_TOGETHER_ON_COMMAND;
|
||||
ThemeMetric<bool> SHOW_SCROLL_BAR;
|
||||
ThemeMetric<float> SCROLL_BAR_HEIGHT;
|
||||
ThemeMetric<float> SCROLL_BAR_TIME;
|
||||
ThemeMetric<float> EXPLANATION_ZOOM;
|
||||
ThemeMetric<RageColor> COLOR_SELECTED;
|
||||
ThemeMetric<RageColor> COLOR_NOT_SELECTED;
|
||||
ThemeMetric<int> NUM_SHOWN_ITEMS;
|
||||
ThemeMetric<bool> SHOW_BPM_IN_SPEED_TITLE;
|
||||
ThemeMetric<apActorCommands> FRAME_ON_COMMAND;
|
||||
ThemeMetric<apActorCommands> FRAME_OFF_COMMAND;
|
||||
ThemeMetric<bool> SEPARATE_EXIT_ROW;
|
||||
ThemeMetric<float> SEPARATE_EXIT_ROW_Y;
|
||||
ThemeMetric<bool> CAPITALIZE_ALL_OPTION_NAMES;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -36,24 +36,24 @@ protected:
|
||||
Page GetPage( int iChoiceIndex ) const;
|
||||
Page GetCurrentPage() const;
|
||||
|
||||
ThemeMetric<int> NUM_ICON_PARTS;
|
||||
ThemeMetric<int> NUM_PREVIEW_PARTS;
|
||||
ThemeMetric<int> NUM_CURSOR_PARTS;
|
||||
ThemeMetric<bool> SHARED_PREVIEW_AND_CURSOR;
|
||||
ThemeMetric<int> NUM_CHOICES_ON_PAGE_1;
|
||||
ThemeMetric2D<float,NUM_PLAYERS,MAX_CURSOR_PARTS> CURSOR_OFFSET_X_FROM_ICON;
|
||||
ThemeMetric2D<float,NUM_PLAYERS,MAX_CURSOR_PARTS> CURSOR_OFFSET_Y_FROM_ICON;
|
||||
ThemeMetric<float> PRE_SWITCH_PAGE_SECONDS;
|
||||
ThemeMetric<float> POST_SWITCH_PAGE_SECONDS;
|
||||
ThemeMetric<float> EXTRA_SLEEP_AFTER_TWEEN_OFF_SECONDS;
|
||||
ThemeMetric1D<CString,NUM_MENU_DIRS> OPTION_ORDER;
|
||||
ThemeMetric<bool> WRAP_CURSOR;
|
||||
ThemeMetric<bool> SHOW_SCROLLER;
|
||||
ThemeMetric<float> SCROLLER_SECONDS_PER_ITEM;
|
||||
ThemeMetric<float> SCROLLER_NUM_ITEMS_TO_DRAW;
|
||||
ThemeMetric<float> SCROLLER_SPACING_X;
|
||||
ThemeMetric<float> SCROLLER_SPACING_Y;
|
||||
ThemeMetric<CString> DEFAULT_CHOICE;
|
||||
ThemeMetric<int> NUM_ICON_PARTS;
|
||||
ThemeMetric<int> NUM_PREVIEW_PARTS;
|
||||
ThemeMetric<int> NUM_CURSOR_PARTS;
|
||||
ThemeMetric<bool> SHARED_PREVIEW_AND_CURSOR;
|
||||
ThemeMetric<int> NUM_CHOICES_ON_PAGE_1;
|
||||
ThemeMetric2D<float> CURSOR_OFFSET_X_FROM_ICON;
|
||||
ThemeMetric2D<float> CURSOR_OFFSET_Y_FROM_ICON;
|
||||
ThemeMetric<float> PRE_SWITCH_PAGE_SECONDS;
|
||||
ThemeMetric<float> POST_SWITCH_PAGE_SECONDS;
|
||||
ThemeMetric<float> EXTRA_SLEEP_AFTER_TWEEN_OFF_SECONDS;
|
||||
ThemeMetric1D<CString> OPTION_ORDER;
|
||||
ThemeMetric<bool> WRAP_CURSOR;
|
||||
ThemeMetric<bool> SHOW_SCROLLER;
|
||||
ThemeMetric<float> SCROLLER_SECONDS_PER_ITEM;
|
||||
ThemeMetric<float> SCROLLER_NUM_ITEMS_TO_DRAW;
|
||||
ThemeMetric<float> SCROLLER_SPACING_X;
|
||||
ThemeMetric<float> SCROLLER_SPACING_Y;
|
||||
ThemeMetric<CString> DEFAULT_CHOICE;
|
||||
|
||||
int m_Next[NUM_MENU_DIRS][MAX_CHOICES];
|
||||
|
||||
|
||||
+20
-15
@@ -81,22 +81,23 @@ public:
|
||||
|
||||
typedef CString (*MetricName1D)(size_t N);
|
||||
|
||||
template <class T, size_t N>
|
||||
template <class T>
|
||||
class ThemeMetric1D : public IThemeMetric
|
||||
{
|
||||
ThemeMetric<T> m_metric[N];
|
||||
typedef ThemeMetric<T> ThemeMetricT;
|
||||
vector<ThemeMetricT> m_metric;
|
||||
|
||||
public:
|
||||
ThemeMetric1D( const CString& sGroup, MetricName1D pfn, size_t nToInit )
|
||||
ThemeMetric1D( const CString& sGroup, MetricName1D pfn, size_t N )
|
||||
{
|
||||
ASSERT( nToInit <= N );
|
||||
for( unsigned i=0; i<nToInit; i++ )
|
||||
m_metric.resize( N );
|
||||
for( unsigned i=0; i<N; i++ )
|
||||
m_metric[i].Load( sGroup, pfn(i) );
|
||||
|
||||
}
|
||||
void Read()
|
||||
{
|
||||
for( unsigned i=0; i<N; i++ )
|
||||
for( unsigned i=0; i<m_metric.size(); i++ )
|
||||
m_metric[i].Read();
|
||||
}
|
||||
const T& GetValue( size_t i ) const
|
||||
@@ -107,25 +108,29 @@ public:
|
||||
|
||||
typedef CString (*MetricName2D)(size_t N, size_t M);
|
||||
|
||||
template <class T, size_t N, size_t M>
|
||||
template <class T>
|
||||
class ThemeMetric2D : public IThemeMetric
|
||||
{
|
||||
ThemeMetric<T> m_metric[N][M];
|
||||
typedef ThemeMetric<T> ThemeMetricT;
|
||||
typedef vector<ThemeMetricT> ThemeMetricTVector;
|
||||
vector<ThemeMetricTVector> m_metric;
|
||||
|
||||
public:
|
||||
ThemeMetric2D( const CString& sGroup, MetricName2D pfn, size_t nToInit, size_t mToInit )
|
||||
ThemeMetric2D( const CString& sGroup, MetricName2D pfn, size_t N, size_t M )
|
||||
{
|
||||
ASSERT( nToInit <= N );
|
||||
ASSERT( mToInit <= M );
|
||||
for( unsigned i=0; i<nToInit; i++ )
|
||||
for( unsigned j=0; j<mToInit; j++ )
|
||||
m_metric.resize( N );
|
||||
for( unsigned i=0; i<N; i++ )
|
||||
{
|
||||
m_metric[i].resize( M );
|
||||
for( unsigned j=0; j<M; j++ )
|
||||
m_metric[i][j].Load( sGroup, pfn(i,j) );
|
||||
}
|
||||
|
||||
}
|
||||
void Read()
|
||||
{
|
||||
for( unsigned i=0; i<N; i++ )
|
||||
for( unsigned j=0; j<M; j++ )
|
||||
for( unsigned i=0; i<m_metric.size(); i++ )
|
||||
for( unsigned j=0; j<m_metric[i].size(); j++ )
|
||||
m_metric[i][j].Read();
|
||||
}
|
||||
const T& GetValue( size_t i, size_t j ) const
|
||||
|
||||
Reference in New Issue
Block a user