200 lines
5.5 KiB
C++
200 lines
5.5 KiB
C++
#pragma once
|
|
/*
|
|
-----------------------------------------------------------------------------
|
|
Class: ThemeManager
|
|
|
|
Desc: Manages which graphics and sounds are chosed to load. Every time
|
|
a sound or graphic is loaded, it gets the path from the ThemeManager.
|
|
|
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
Chris Danford
|
|
-----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "RageUtil.h"
|
|
|
|
|
|
enum ThemeElement {
|
|
GRAPHIC_ALL_MUSIC_BANNER,
|
|
GRAPHIC_ARROWS_LEFT,
|
|
GRAPHIC_ARROWS_RIGHT,
|
|
GRAPHIC_CAUTION,
|
|
GRAPHIC_GAMEPLAY_CLOSING_STAR,
|
|
GRAPHIC_DANCER_P1,
|
|
GRAPHIC_DANCER_P2,
|
|
GRAPHIC_GAMEPLAY_BOTTOM_FRAME,
|
|
GRAPHIC_GAMEPLAY_DIFFICULTY_FRAME,
|
|
GRAPHIC_GAMEPLAY_TOP_FRAME,
|
|
GRAPHIC_DIFFICULTY_ICONS,
|
|
GRAPHIC_EDIT_BACKGROUND,
|
|
GRAPHIC_EDIT_TOP_EDGE,
|
|
GRAPHIC_EDIT_SNAP_INDICATOR,
|
|
GRAPHIC_MUSIC_SCROLL_BACKGROUND,
|
|
GRAPHIC_FALLBACK_BACKGROUND,
|
|
GRAPHIC_FALLBACK_BANNER,
|
|
GRAPHIC_FALLBACK_CD_TITLE,
|
|
GRAPHIC_GAME_OPTIONS_BACKGROUND,
|
|
GRAPHIC_GAME_OPTIONS_TOP_EDGE,
|
|
GRAPHIC_GAME_OVER,
|
|
GRAPHIC_GAMEPLAY_CLEARED,
|
|
GRAPHIC_GAMEPLAY_COMBO,
|
|
GRAPHIC_GAMEPLAY_DANGER_BACKGROUND,
|
|
GRAPHIC_GAMEPLAY_DANGER_TEXT,
|
|
GRAPHIC_GAMEPLAY_FAILED,
|
|
GRAPHIC_GAMEPLAY_JUDGEMENT,
|
|
GRAPHIC_GAMEPLAY_READY,
|
|
GRAPHIC_GAMEPLAY_HERE_WE_GO,
|
|
GRAPHIC_KEEP_ALIVE,
|
|
GRAPHIC_LIFEMETER_FRAME,
|
|
GRAPHIC_LIFEMETER_PILLS,
|
|
GRAPHIC_MENU_BOTTOM_EDGE,
|
|
GRAPHIC_MENU_STYLE_ICONS,
|
|
GRAPHIC_MUSIC_SORT_ICONS,
|
|
GRAPHIC_MUSIC_STATUS_ICONS,
|
|
GRAPHIC_GAMEPLAY_OPENING_STAR,
|
|
GRAPHIC_PAD_DOUBLE,
|
|
GRAPHIC_PAD_SINGLE,
|
|
GRAPHIC_PAD_SOLO,
|
|
GRAPHIC_PLAYER_OPTIONS_BACKGROUND,
|
|
GRAPHIC_PLAYER_OPTIONS_TOP_EDGE,
|
|
GRAPHIC_RESULTS_BACKGROUND,
|
|
GRAPHIC_RESULTS_BANNER_FRAME,
|
|
GRAPHIC_RESULTS_BONUS_FRAME_P1,
|
|
GRAPHIC_RESULTS_BONUS_FRAME_P2,
|
|
GRAPHIC_RESULTS_GRADE_FRAME,
|
|
GRAPHIC_RESULTS_GRADES,
|
|
GRAPHIC_RESULTS_JUDGE_LABELS,
|
|
GRAPHIC_RESULTS_SCORE_LABELS,
|
|
GRAPHIC_RESULTS_SUMMARY_TOP_EDGE,
|
|
GRAPHIC_RESULTS_TOP_EDGE,
|
|
GRAPHIC_SELECT_DIFFICULTY_ARROW_P1,
|
|
GRAPHIC_SELECT_DIFFICULTY_ARROW_P2,
|
|
GRAPHIC_SELECT_DIFFICULTY_BACKGROUND,
|
|
GRAPHIC_SELECT_DIFFICULTY_EASY_HEADER,
|
|
GRAPHIC_SELECT_DIFFICULTY_EASY_PICTURE,
|
|
GRAPHIC_SELECT_DIFFICULTY_EXPLANATION,
|
|
GRAPHIC_SELECT_DIFFICULTY_HARD_HEADER,
|
|
GRAPHIC_SELECT_DIFFICULTY_HARD_PICTURE,
|
|
GRAPHIC_SELECT_DIFFICULTY_MEDIUM_HEADER,
|
|
GRAPHIC_SELECT_DIFFICULTY_MEDIUM_PICTURE,
|
|
GRAPHIC_SELECT_DIFFICULTY_OK,
|
|
GRAPHIC_SELECT_DIFFICULTY_TOP_EDGE,
|
|
GRAPHIC_SELECT_GAME_BACKGROUND,
|
|
GRAPHIC_SELECT_GAME_TOP_EDGE,
|
|
GRAPHIC_SELECT_GROUP_BACKGROUND,
|
|
GRAPHIC_SELECT_GROUP_BUTTON,
|
|
GRAPHIC_SELECT_GROUP_CONTENTS_HEADER,
|
|
GRAPHIC_SELECT_GROUP_EXPLANATION,
|
|
GRAPHIC_SELECT_GROUP_INFO_FRAME,
|
|
GRAPHIC_SELECT_GROUP_TOP_EDGE,
|
|
GRAPHIC_SELECT_MUSIC_BACKGROUND,
|
|
GRAPHIC_SELECT_MUSIC_DIFFICULTY_FRAME,
|
|
GRAPHIC_SELECT_MUSIC_INFO_FRAME,
|
|
GRAPHIC_SELECT_MUSIC_METER_FRAME,
|
|
GRAPHIC_SELECT_MUSIC_OPTION_ICONS,
|
|
GRAPHIC_SELECT_MUSIC_RADAR_BASE,
|
|
GRAPHIC_SELECT_MUSIC_RADAR_WORDS,
|
|
GRAPHIC_SELECT_MUSIC_ROULETTE_BANNER,
|
|
GRAPHIC_SELECT_MUSIC_SCORE_FRAME,
|
|
GRAPHIC_SELECT_MUSIC_SECTION_BAR,
|
|
GRAPHIC_SELECT_MUSIC_SCROLLBAR,
|
|
GRAPHIC_SELECT_MUSIC_SECTION_BANNER,
|
|
GRAPHIC_SELECT_MUSIC_SMALL_GRADES,
|
|
GRAPHIC_SELECT_MUSIC_SONG_BAR,
|
|
GRAPHIC_SELECT_MUSIC_SONG_HIGHLIGHT,
|
|
GRAPHIC_SELECT_MUSIC_TOP_EDGE,
|
|
GRAPHIC_SELECT_STYLE_BACKGROUND,
|
|
GRAPHIC_SELECT_STYLE_TOP_EDGE,
|
|
GRAPHIC_SELECT_STYLE_EXPLANATION,
|
|
GRAPHIC_SELECT_STYLE_ICONS,
|
|
GRAPHIC_SELECT_STYLE_INFO_0,
|
|
GRAPHIC_SELECT_STYLE_INFO_1,
|
|
GRAPHIC_SELECT_STYLE_INFO_2,
|
|
GRAPHIC_SELECT_STYLE_INFO_3,
|
|
GRAPHIC_SELECT_STYLE_INFO_4,
|
|
GRAPHIC_SELECT_STYLE_INFO_5,
|
|
GRAPHIC_SELECT_STYLE_INFO_6,
|
|
GRAPHIC_SELECT_STYLE_INFO_7,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_0,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_1,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_2,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_3,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_4,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_5,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_6,
|
|
GRAPHIC_SELECT_STYLE_PREVIEW_7,
|
|
GRAPHIC_SONG_OPTIONS_BACKGROUND,
|
|
GRAPHIC_SONG_OPTIONS_TOP_EDGE,
|
|
GRAPHIC_STAGE_UNDERSCORE,
|
|
GRAPHIC_STEPS_DESCRIPTION,
|
|
GRAPHIC_SYNCHRONIZE_BACKGROUND,
|
|
GRAPHIC_SYNCHRONIZE_TOP_EDGE,
|
|
GRAPHIC_TITLE_MENU_BACKGROUND,
|
|
GRAPHIC_TITLE_MENU_LOGO,
|
|
|
|
SOUND_EDIT_CHANGE_LINE,
|
|
SOUND_EDIT_CHANGE_SNAP,
|
|
SOUND_GAMEPLAY_ASSIST_TICK,
|
|
SOUND_GAMEPLAY_FAILED,
|
|
SOUND_INTRO_BREAK,
|
|
SOUND_MENU_BACK,
|
|
SOUND_MENU_INVALID,
|
|
SOUND_MENU_MUSIC,
|
|
SOUND_MENU_PROMPT,
|
|
SOUND_MENU_START,
|
|
SOUND_MENU_SWOOSH,
|
|
SOUND_MENU_TIMER,
|
|
SOUND_MUSIC_SCROLL_MUSIC,
|
|
SOUND_OPTION_CHANGE_COL,
|
|
SOUND_OPTION_CHANGE_ROW,
|
|
SOUND_RESULTS_FLY_OFF,
|
|
SOUND_RESULTS_SCORE_TICK,
|
|
SOUND_SELECT_DIFFICULTY_CHANGE,
|
|
SOUND_SELECT_GROUP_CHANGE,
|
|
SOUND_SELECT_MUSIC_SECTION_EXPAND,
|
|
SOUND_SELECT_MUSIC_CHANGE_MUSIC,
|
|
SOUND_SELECT_MUSIC_CHANGE_SORT,
|
|
SOUND_SELECT_MUSIC_CHANGE_NOTES,
|
|
SOUND_SELECT_STYLE_CHANGE,
|
|
SOUND_TITLE_MENU_CHANGE,
|
|
|
|
FONT_HEADER1,
|
|
FONT_HEADER2,
|
|
FONT_NORMAL,
|
|
FONT_COMBO_NUMBERS,
|
|
FONT_METER,
|
|
FONT_SCORE_NUMBERS,
|
|
FONT_TIMER_NUMBERS,
|
|
FONT_TEXT_BANNER,
|
|
FONT_STAGE,
|
|
|
|
NUM_THEME_ELEMENTS // leave this at the end
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ThemeManager
|
|
{
|
|
public:
|
|
ThemeManager();
|
|
|
|
void GetThemeNames( CStringArray& AddTo );
|
|
CString GetCurrentThemeName() { return m_sCurThemeName; }
|
|
void SwitchTheme( CString sThemeName ); // return false if theme doesn't exist
|
|
void AssertThemeIsComplete( CString sThemeName ); // return false if theme doesn't exist
|
|
CString GetPathTo( ThemeElement te );
|
|
|
|
protected:
|
|
CString GetThemeDirFromName( CString sAnnouncerName );
|
|
CString GetElementDir( CString sThemeName );
|
|
|
|
CString m_sCurThemeName;
|
|
};
|
|
|
|
|
|
|
|
extern ThemeManager* THEME; // global and accessable from anywhere in our program
|