change ThemeMetric static-sized arrays to dynamically sized

This commit is contained in:
Chris Danford
2005-02-13 06:44:50 +00:00
parent 12e7f2d5da
commit fdad5746e7
6 changed files with 91 additions and 86 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ ThemeMetric<CString> FIRST_RUN_INITIAL_SCREEN ("Common","FirstRunInitialScreen")
ThemeMetric<CString> DEFAULT_MODIFIERS ("Common","DefaultModifiers" ); ThemeMetric<CString> DEFAULT_MODIFIERS ("Common","DefaultModifiers" );
ThemeMetric<CString> DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" ); ThemeMetric<CString> DEFAULT_CPU_MODIFIERS ("Common","DefaultCpuModifiers" );
ThemeMetric<CString> COURSE_DIFFICULTIES_TO_SHOW ("Common","CourseDifficultiesToShow"); 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<float> JOIN_PAUSE_SECONDS ("Common","JoinPauseSeconds");
ThemeMetric<CString> WINDOW_TITLE ("Common","WindowTitle"); ThemeMetric<CString> WINDOW_TITLE ("Common","WindowTitle");
+1 -1
View File
@@ -12,7 +12,7 @@ extern ThemeMetric<CString> FIRST_RUN_INITIAL_SCREEN;
extern ThemeMetric<CString> DEFAULT_MODIFIERS; extern ThemeMetric<CString> DEFAULT_MODIFIERS;
extern ThemeMetric<CString> DEFAULT_CPU_MODIFIERS; extern ThemeMetric<CString> DEFAULT_CPU_MODIFIERS;
extern ThemeMetric<CString> COURSE_DIFFICULTIES_TO_SHOW; 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<float> JOIN_PAUSE_SECONDS;
extern ThemeMetric<CString> WINDOW_TITLE; extern ThemeMetric<CString> WINDOW_TITLE;
+19 -19
View File
@@ -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 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) ); } 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_STANDARD ("Player","ReceptorArrowsYStandard");
ThemeMetric<float> GRAY_ARROWS_Y_REVERSE ("Player","ReceptorArrowsYReverse"); ThemeMetric<float> GRAY_ARROWS_Y_REVERSE ("Player","ReceptorArrowsYReverse");
ThemeMetric2D<float,NUM_PLAYERS,2> JUDGMENT_X ("Player",JUDGMENT_X_NAME,NUM_PLAYERS,2); ThemeMetric2D<float> JUDGMENT_X ("Player",JUDGMENT_X_NAME,NUM_PLAYERS,2);
ThemeMetric<float> JUDGMENT_Y ("Player","JudgmentY"); ThemeMetric<float> JUDGMENT_Y ("Player","JudgmentY");
ThemeMetric<float> JUDGMENT_Y_REVERSE ("Player","JudgmentYReverse"); ThemeMetric<float> JUDGMENT_Y_REVERSE ("Player","JudgmentYReverse");
ThemeMetric2D<float,NUM_PLAYERS,2> COMBO_X ("Player",COMBO_X_NAME,NUM_PLAYERS,2); ThemeMetric2D<float> COMBO_X ("Player",COMBO_X_NAME,NUM_PLAYERS,2);
ThemeMetric<float> COMBO_Y ("Player","ComboY"); ThemeMetric<float> COMBO_Y ("Player","ComboY");
ThemeMetric<float> COMBO_Y_REVERSE ("Player","ComboYReverse"); ThemeMetric<float> COMBO_Y_REVERSE ("Player","ComboYReverse");
ThemeMetric2D<float,NUM_PLAYERS,2> ATTACK_DISPLAY_X ("Player",ATTACK_DISPLAY_X_NAME,NUM_PLAYERS,2); 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 ("Player","AttackDisplayY");
ThemeMetric<float> ATTACK_DISPLAY_Y_REVERSE ("Player","AttackDisplayYReverse"); ThemeMetric<float> ATTACK_DISPLAY_Y_REVERSE ("Player","AttackDisplayYReverse");
ThemeMetric<float> HOLD_JUDGMENT_Y_STANDARD ("Player","HoldJudgmentYStandard"); ThemeMetric<float> HOLD_JUDGMENT_Y_STANDARD ("Player","HoldJudgmentYStandard");
ThemeMetric<float> HOLD_JUDGMENT_Y_REVERSE ("Player","HoldJudgmentYReverse"); ThemeMetric<float> HOLD_JUDGMENT_Y_REVERSE ("Player","HoldJudgmentYReverse");
ThemeMetric<int> BRIGHT_GHOST_COMBO_THRESHOLD("Player","BrightGhostComboThreshold"); ThemeMetric<int> BRIGHT_GHOST_COMBO_THRESHOLD("Player","BrightGhostComboThreshold");
ThemeMetric<bool> TAP_JUDGMENTS_UNDER_FIELD ("Player","TapJudgmentsUnderField"); ThemeMetric<bool> TAP_JUDGMENTS_UNDER_FIELD ("Player","TapJudgmentsUnderField");
ThemeMetric<bool> HOLD_JUDGMENTS_UNDER_FIELD ("Player","HoldJudgmentsUnderField"); ThemeMetric<bool> HOLD_JUDGMENTS_UNDER_FIELD ("Player","HoldJudgmentsUnderField");
ThemeMetric<int> START_DRAWING_AT_PIXELS ("Player","StartDrawingAtPixels"); ThemeMetric<int> START_DRAWING_AT_PIXELS ("Player","StartDrawingAtPixels");
ThemeMetric<int> STOP_DRAWING_AT_PIXELS ("Player","StopDrawingAtPixels"); ThemeMetric<int> STOP_DRAWING_AT_PIXELS ("Player","StopDrawingAtPixels");
ThemeMetric<int> MAX_PRO_TIMING_ERROR ("Player","MaxProTimingError"); ThemeMetric<int> MAX_PRO_TIMING_ERROR ("Player","MaxProTimingError");
/* Distance to search for a note in Step(), in seconds. */ /* Distance to search for a note in Step(), in seconds. */
static const float StepSearchDistance = 1.0f; static const float StepSearchDistance = 1.0f;
+32 -32
View File
@@ -113,38 +113,38 @@ protected:
RageSound m_SoundToggleOff; RageSound m_SoundToggleOff;
// metrics // metrics
ThemeMetric<float> ARROWS_X; ThemeMetric<float> ARROWS_X;
ThemeMetric<float> LABELS_X; ThemeMetric<float> LABELS_X;
ThemeMetric<float> LABELS_ZOOM; ThemeMetric<float> LABELS_ZOOM;
ThemeMetric<int> LABELS_H_ALIGN; ThemeMetric<int> LABELS_H_ALIGN;
ThemeMetric<float> ITEMS_ZOOM; ThemeMetric<float> ITEMS_ZOOM;
ThemeMetric<float> ITEMS_START_X; ThemeMetric<float> ITEMS_START_X;
ThemeMetric<float> ITEMS_END_X; ThemeMetric<float> ITEMS_END_X;
ThemeMetric<float> ITEMS_GAP_X; ThemeMetric<float> ITEMS_GAP_X;
ThemeMetric1D<float,NUM_PLAYERS> ITEMS_LONG_ROW_X; ThemeMetric1D<float> ITEMS_LONG_ROW_X;
ThemeMetric<float> ITEMS_LONG_ROW_SHARED_X; ThemeMetric<float> ITEMS_LONG_ROW_SHARED_X;
ThemeMetric<float> ITEMS_START_Y; ThemeMetric<float> ITEMS_START_Y;
ThemeMetric<float> ITEMS_SPACING_Y; ThemeMetric<float> ITEMS_SPACING_Y;
ThemeMetric1D<float,NUM_PLAYERS> ICONS_X; ThemeMetric1D<float> ICONS_X;
ThemeMetric1D<float,NUM_PLAYERS> EXPLANATION_X; ThemeMetric1D<float> EXPLANATION_X;
ThemeMetric1D<float,NUM_PLAYERS> EXPLANATION_Y; ThemeMetric1D<float> EXPLANATION_Y;
ThemeMetric1D<apActorCommands,NUM_PLAYERS> EXPLANATION_ON_COMMAND; ThemeMetric1D<apActorCommands> EXPLANATION_ON_COMMAND;
ThemeMetric<float> EXPLANATION_TOGETHER_X; ThemeMetric<float> EXPLANATION_TOGETHER_X;
ThemeMetric<float> EXPLANATION_TOGETHER_Y; ThemeMetric<float> EXPLANATION_TOGETHER_Y;
ThemeMetric<apActorCommands> EXPLANATION_TOGETHER_ON_COMMAND; ThemeMetric<apActorCommands> EXPLANATION_TOGETHER_ON_COMMAND;
ThemeMetric<bool> SHOW_SCROLL_BAR; ThemeMetric<bool> SHOW_SCROLL_BAR;
ThemeMetric<float> SCROLL_BAR_HEIGHT; ThemeMetric<float> SCROLL_BAR_HEIGHT;
ThemeMetric<float> SCROLL_BAR_TIME; ThemeMetric<float> SCROLL_BAR_TIME;
ThemeMetric<float> EXPLANATION_ZOOM; ThemeMetric<float> EXPLANATION_ZOOM;
ThemeMetric<RageColor> COLOR_SELECTED; ThemeMetric<RageColor> COLOR_SELECTED;
ThemeMetric<RageColor> COLOR_NOT_SELECTED; ThemeMetric<RageColor> COLOR_NOT_SELECTED;
ThemeMetric<int> NUM_SHOWN_ITEMS; ThemeMetric<int> NUM_SHOWN_ITEMS;
ThemeMetric<bool> SHOW_BPM_IN_SPEED_TITLE; ThemeMetric<bool> SHOW_BPM_IN_SPEED_TITLE;
ThemeMetric<apActorCommands> FRAME_ON_COMMAND; ThemeMetric<apActorCommands> FRAME_ON_COMMAND;
ThemeMetric<apActorCommands> FRAME_OFF_COMMAND; ThemeMetric<apActorCommands> FRAME_OFF_COMMAND;
ThemeMetric<bool> SEPARATE_EXIT_ROW; ThemeMetric<bool> SEPARATE_EXIT_ROW;
ThemeMetric<float> SEPARATE_EXIT_ROW_Y; ThemeMetric<float> SEPARATE_EXIT_ROW_Y;
ThemeMetric<bool> CAPITALIZE_ALL_OPTION_NAMES; ThemeMetric<bool> CAPITALIZE_ALL_OPTION_NAMES;
}; };
#endif #endif
+18 -18
View File
@@ -36,24 +36,24 @@ protected:
Page GetPage( int iChoiceIndex ) const; Page GetPage( int iChoiceIndex ) const;
Page GetCurrentPage() const; Page GetCurrentPage() const;
ThemeMetric<int> NUM_ICON_PARTS; ThemeMetric<int> NUM_ICON_PARTS;
ThemeMetric<int> NUM_PREVIEW_PARTS; ThemeMetric<int> NUM_PREVIEW_PARTS;
ThemeMetric<int> NUM_CURSOR_PARTS; ThemeMetric<int> NUM_CURSOR_PARTS;
ThemeMetric<bool> SHARED_PREVIEW_AND_CURSOR; ThemeMetric<bool> SHARED_PREVIEW_AND_CURSOR;
ThemeMetric<int> NUM_CHOICES_ON_PAGE_1; ThemeMetric<int> NUM_CHOICES_ON_PAGE_1;
ThemeMetric2D<float,NUM_PLAYERS,MAX_CURSOR_PARTS> CURSOR_OFFSET_X_FROM_ICON; ThemeMetric2D<float> CURSOR_OFFSET_X_FROM_ICON;
ThemeMetric2D<float,NUM_PLAYERS,MAX_CURSOR_PARTS> CURSOR_OFFSET_Y_FROM_ICON; ThemeMetric2D<float> CURSOR_OFFSET_Y_FROM_ICON;
ThemeMetric<float> PRE_SWITCH_PAGE_SECONDS; ThemeMetric<float> PRE_SWITCH_PAGE_SECONDS;
ThemeMetric<float> POST_SWITCH_PAGE_SECONDS; ThemeMetric<float> POST_SWITCH_PAGE_SECONDS;
ThemeMetric<float> EXTRA_SLEEP_AFTER_TWEEN_OFF_SECONDS; ThemeMetric<float> EXTRA_SLEEP_AFTER_TWEEN_OFF_SECONDS;
ThemeMetric1D<CString,NUM_MENU_DIRS> OPTION_ORDER; ThemeMetric1D<CString> OPTION_ORDER;
ThemeMetric<bool> WRAP_CURSOR; ThemeMetric<bool> WRAP_CURSOR;
ThemeMetric<bool> SHOW_SCROLLER; ThemeMetric<bool> SHOW_SCROLLER;
ThemeMetric<float> SCROLLER_SECONDS_PER_ITEM; ThemeMetric<float> SCROLLER_SECONDS_PER_ITEM;
ThemeMetric<float> SCROLLER_NUM_ITEMS_TO_DRAW; ThemeMetric<float> SCROLLER_NUM_ITEMS_TO_DRAW;
ThemeMetric<float> SCROLLER_SPACING_X; ThemeMetric<float> SCROLLER_SPACING_X;
ThemeMetric<float> SCROLLER_SPACING_Y; ThemeMetric<float> SCROLLER_SPACING_Y;
ThemeMetric<CString> DEFAULT_CHOICE; ThemeMetric<CString> DEFAULT_CHOICE;
int m_Next[NUM_MENU_DIRS][MAX_CHOICES]; int m_Next[NUM_MENU_DIRS][MAX_CHOICES];
+20 -15
View File
@@ -81,22 +81,23 @@ public:
typedef CString (*MetricName1D)(size_t N); typedef CString (*MetricName1D)(size_t N);
template <class T, size_t N> template <class T>
class ThemeMetric1D : public IThemeMetric class ThemeMetric1D : public IThemeMetric
{ {
ThemeMetric<T> m_metric[N]; typedef ThemeMetric<T> ThemeMetricT;
vector<ThemeMetricT> m_metric;
public: public:
ThemeMetric1D( const CString& sGroup, MetricName1D pfn, size_t nToInit ) ThemeMetric1D( const CString& sGroup, MetricName1D pfn, size_t N )
{ {
ASSERT( nToInit <= N ); m_metric.resize( N );
for( unsigned i=0; i<nToInit; i++ ) for( unsigned i=0; i<N; i++ )
m_metric[i].Load( sGroup, pfn(i) ); m_metric[i].Load( sGroup, pfn(i) );
} }
void Read() void Read()
{ {
for( unsigned i=0; i<N; i++ ) for( unsigned i=0; i<m_metric.size(); i++ )
m_metric[i].Read(); m_metric[i].Read();
} }
const T& GetValue( size_t i ) const const T& GetValue( size_t i ) const
@@ -107,25 +108,29 @@ public:
typedef CString (*MetricName2D)(size_t N, size_t M); 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 class ThemeMetric2D : public IThemeMetric
{ {
ThemeMetric<T> m_metric[N][M]; typedef ThemeMetric<T> ThemeMetricT;
typedef vector<ThemeMetricT> ThemeMetricTVector;
vector<ThemeMetricTVector> m_metric;
public: 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 ); m_metric.resize( N );
ASSERT( mToInit <= M ); for( unsigned i=0; i<N; i++ )
for( unsigned i=0; i<nToInit; i++ ) {
for( unsigned j=0; j<mToInit; j++ ) m_metric[i].resize( M );
for( unsigned j=0; j<M; j++ )
m_metric[i][j].Load( sGroup, pfn(i,j) ); m_metric[i][j].Load( sGroup, pfn(i,j) );
}
} }
void Read() void Read()
{ {
for( unsigned i=0; i<N; i++ ) for( unsigned i=0; i<m_metric.size(); i++ )
for( unsigned j=0; j<M; j++ ) for( unsigned j=0; j<m_metric[i].size(); j++ )
m_metric[i][j].Read(); m_metric[i][j].Read();
} }
const T& GetValue( size_t i, size_t j ) const const T& GetValue( size_t i, size_t j ) const