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_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");
+1 -1
View File
@@ -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
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 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;
+32 -32
View File
@@ -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
+18 -18
View File
@@ -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
View File
@@ -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