mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 02:25:32 -04:00
Add themes list menu
This commit is contained in:
parent
0573eaedd4
commit
c2d84dcdb5
@ -204,6 +204,7 @@ static void SwitchToColours(void* w, int idx) { ColoursScreen_SetActive(); }
|
|||||||
static void SwitchToDirectConnect(void* w, int idx) { DirectConnectScreen_SetActive(); }
|
static void SwitchToDirectConnect(void* w, int idx) { DirectConnectScreen_SetActive(); }
|
||||||
static void SwitchToMain(void* w, int idx) { MainScreen_SetActive(); }
|
static void SwitchToMain(void* w, int idx) { MainScreen_SetActive(); }
|
||||||
static void SwitchToSettings(void* w, int idx) { SettingsScreen_SetActive(); }
|
static void SwitchToSettings(void* w, int idx) { SettingsScreen_SetActive(); }
|
||||||
|
static void SwitchToThemes(void* w, int idx) { ThemesScreen_SetActive(); }
|
||||||
static void SwitchToUpdates(void* w, int idx) { UpdatesScreen_SetActive(); }
|
static void SwitchToUpdates(void* w, int idx) { UpdatesScreen_SetActive(); }
|
||||||
|
|
||||||
|
|
||||||
@ -411,7 +412,7 @@ static void ColoursScreen_KeyDown(struct LScreen* s, int key, cc_bool was) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ColoursScreen_ResetAll(void* w, int idx) {
|
static void ColoursScreen_ResetAll(void* w, int idx) {
|
||||||
Launcher_ResetTheme();
|
Launcher_Theme = Launcher_ModernTheme;
|
||||||
Launcher_SaveTheme();
|
Launcher_SaveTheme();
|
||||||
ColoursScreen_UpdateAll(&ColoursScreen_Instance);
|
ColoursScreen_UpdateAll(&ColoursScreen_Instance);
|
||||||
Launcher_Redraw();
|
Launcher_Redraw();
|
||||||
@ -447,7 +448,7 @@ static void ColoursScreen_Init(struct LScreen* s_) {
|
|||||||
LButton_Init(s_, &s->btnBack, 80, 35, "Back");
|
LButton_Init(s_, &s->btnBack, 80, 35, "Back");
|
||||||
|
|
||||||
s->btnDefault.OnClick = ColoursScreen_ResetAll;
|
s->btnDefault.OnClick = ColoursScreen_ResetAll;
|
||||||
s->btnBack.OnClick = SwitchToSettings;
|
s->btnBack.OnClick = SwitchToThemes;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ColoursScreen_Show(struct LScreen* s_) {
|
static void ColoursScreen_Show(struct LScreen* s_) {
|
||||||
@ -1410,21 +1411,21 @@ static void SettingsScreen_Init(struct LScreen* s_) {
|
|||||||
LButton_Init(s_, &s->btnMode, 110, 35, "Mode");
|
LButton_Init(s_, &s->btnMode, 110, 35, "Mode");
|
||||||
LLabel_Init(s_, &s->lblMode, "&eChange the enabled features");
|
LLabel_Init(s_, &s->lblMode, "&eChange the enabled features");
|
||||||
|
|
||||||
LButton_Init(s_, &s->btnColours, 110, 35, "Colours");
|
LButton_Init(s_, &s->btnColours, 110, 35, "Theme");
|
||||||
LLabel_Init(s_, &s->lblColours, "&eChange how the launcher looks");
|
LLabel_Init(s_, &s->lblColours, "&eChange how the launcher looks");
|
||||||
|
|
||||||
LButton_Init(s_, &s->btnBack, 80, 35, "Back");
|
LButton_Init(s_, &s->btnBack, 80, 35, "Back");
|
||||||
|
|
||||||
s->btnMode.OnClick = SwitchToChooseMode;
|
s->btnMode.OnClick = SwitchToChooseMode;
|
||||||
s->btnUpdates.OnClick = SwitchToUpdates;
|
s->btnUpdates.OnClick = SwitchToUpdates;
|
||||||
s->btnColours.OnClick = SwitchToColours;
|
s->btnColours.OnClick = SwitchToThemes;
|
||||||
s->btnBack.OnClick = SwitchToMain;
|
s->btnBack.OnClick = SwitchToMain;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SettingsScreen_Show(struct LScreen* s_) {
|
static void SettingsScreen_Show(struct LScreen* s_) {
|
||||||
struct SettingsScreen* s = (struct SettingsScreen*)s_;
|
struct SettingsScreen* s = (struct SettingsScreen*)s_;
|
||||||
s->btnColours.hidden = Launcher_Theme.ClassicBackground;
|
s->btnColours.hidden = Options_GetBool(OPT_CLASSIC_MODE, false);
|
||||||
s->lblColours.hidden = Launcher_Theme.ClassicBackground;
|
s->lblColours.hidden = s->btnColours.hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SettingsScreen_Layout(struct LScreen* s_) {
|
static void SettingsScreen_Layout(struct LScreen* s_) {
|
||||||
@ -1451,6 +1452,60 @@ void SettingsScreen_SetActive(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*########################################################################################################################*
|
||||||
|
*----------------------------------------------------------ThemesScreen----------------------------------------------------*
|
||||||
|
*#########################################################################################################################*/
|
||||||
|
static struct ThemesScreen {
|
||||||
|
LScreen_Layout
|
||||||
|
struct LButton btnModern, btnClassic, btnCustom, btnBack;
|
||||||
|
struct LWidget* _widgets[4];
|
||||||
|
} ThemesScreen_Instance;
|
||||||
|
|
||||||
|
static void ThemesScreen_Set(const struct LauncherTheme* theme) {
|
||||||
|
Launcher_Theme = *theme;
|
||||||
|
Launcher_SaveTheme();
|
||||||
|
Launcher_Redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ThemesScreen_Modern(void* w, int idx) {
|
||||||
|
ThemesScreen_Set(&Launcher_ModernTheme);
|
||||||
|
}
|
||||||
|
static void ThemesScreen_Classic(void* w, int idx) {
|
||||||
|
ThemesScreen_Set(&Launcher_ClassicTheme);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ThemesScreen_Init(struct LScreen* s_) {
|
||||||
|
struct ThemesScreen* s = (struct ThemesScreen*)s_;
|
||||||
|
s->widgets = s->_widgets;
|
||||||
|
|
||||||
|
LButton_Init(s_, &s->btnModern, 200, 35, "Modern");
|
||||||
|
LButton_Init(s_, &s->btnClassic, 200, 35, "Classic");
|
||||||
|
LButton_Init(s_, &s->btnCustom, 200, 35, "Custom");
|
||||||
|
LButton_Init(s_, &s->btnBack, 80, 35, "Back");
|
||||||
|
|
||||||
|
s->btnModern.OnClick = ThemesScreen_Modern;
|
||||||
|
s->btnClassic.OnClick = ThemesScreen_Classic;
|
||||||
|
s->btnCustom.OnClick = SwitchToColours;
|
||||||
|
s->btnBack.OnClick = SwitchToSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ThemesScreen_Layout(struct LScreen* s_) {
|
||||||
|
struct ThemesScreen* s = (struct ThemesScreen*)s_;
|
||||||
|
LWidget_SetLocation(&s->btnModern, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -120);
|
||||||
|
LWidget_SetLocation(&s->btnClassic, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -70);
|
||||||
|
LWidget_SetLocation(&s->btnCustom, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -20);
|
||||||
|
LWidget_SetLocation(&s->btnBack, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 170);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ThemesScreen_SetActive(void) {
|
||||||
|
struct ThemesScreen* s = &ThemesScreen_Instance;
|
||||||
|
LScreen_Reset((struct LScreen*)s);
|
||||||
|
s->Init = ThemesScreen_Init;
|
||||||
|
s->Layout = ThemesScreen_Layout;
|
||||||
|
Launcher_SetScreen((struct LScreen*)s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*--------------------------------------------------------UpdatesScreen----------------------------------------------------*
|
*--------------------------------------------------------UpdatesScreen----------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
|
@ -44,5 +44,6 @@ void CheckResourcesScreen_SetActive(void);
|
|||||||
void FetchResourcesScreen_SetActive(void);
|
void FetchResourcesScreen_SetActive(void);
|
||||||
void ServersScreen_SetActive(void);
|
void ServersScreen_SetActive(void);
|
||||||
void SettingsScreen_SetActive(void);
|
void SettingsScreen_SetActive(void);
|
||||||
|
void ThemesScreen_SetActive(void);
|
||||||
void UpdatesScreen_SetActive(void);
|
void UpdatesScreen_SetActive(void);
|
||||||
#endif
|
#endif
|
||||||
|
@ -373,14 +373,6 @@ const struct LauncherTheme Launcher_ClassicTheme = {
|
|||||||
BitmapCol_Make(162, 131, 186, 255), /* button highlight WIP */
|
BitmapCol_Make(162, 131, 186, 255), /* button highlight WIP */
|
||||||
};
|
};
|
||||||
|
|
||||||
static cc_bool IsClassicMode(void) {
|
|
||||||
return Options_GetBool(OPT_CLASSIC_MODE, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Launcher_ResetTheme(void) {
|
|
||||||
Launcher_Theme = IsClassicMode() ? Launcher_ClassicTheme : Launcher_ModernTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
CC_NOINLINE static void Launcher_GetCol(const char* key, BitmapCol* col) {
|
CC_NOINLINE static void Launcher_GetCol(const char* key, BitmapCol* col) {
|
||||||
cc_uint8 rgb[3];
|
cc_uint8 rgb[3];
|
||||||
cc_string value;
|
cc_string value;
|
||||||
@ -391,18 +383,18 @@ CC_NOINLINE static void Launcher_GetCol(const char* key, BitmapCol* col) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Launcher_LoadTheme(void) {
|
void Launcher_LoadTheme(void) {
|
||||||
cc_string classicBG;
|
if (Options_GetBool(OPT_CLASSIC_MODE, false)) {
|
||||||
Launcher_ResetTheme();
|
Launcher_Theme = Launcher_ClassicTheme;
|
||||||
if (IsClassicMode()) return;
|
return;
|
||||||
|
}
|
||||||
|
Launcher_Theme = Launcher_ModernTheme;
|
||||||
|
Launcher_Theme.ClassicBackground = Options_GetBool("nostalgia-classicbg", false);
|
||||||
|
|
||||||
Launcher_GetCol("launcher-back-col", &Launcher_Theme.BackgroundColor);
|
Launcher_GetCol("launcher-back-col", &Launcher_Theme.BackgroundColor);
|
||||||
Launcher_GetCol("launcher-btn-border-col", &Launcher_Theme.ButtonBorderColor);
|
Launcher_GetCol("launcher-btn-border-col", &Launcher_Theme.ButtonBorderColor);
|
||||||
Launcher_GetCol("launcher-btn-fore-active-col", &Launcher_Theme.ButtonForeActiveColor);
|
Launcher_GetCol("launcher-btn-fore-active-col", &Launcher_Theme.ButtonForeActiveColor);
|
||||||
Launcher_GetCol("launcher-btn-fore-inactive-col", &Launcher_Theme.ButtonForeColor);
|
Launcher_GetCol("launcher-btn-fore-inactive-col", &Launcher_Theme.ButtonForeColor);
|
||||||
Launcher_GetCol("launcher-btn-highlight-inactive-col", &Launcher_Theme.ButtonHighlightColor);
|
Launcher_GetCol("launcher-btn-highlight-inactive-col", &Launcher_Theme.ButtonHighlightColor);
|
||||||
|
|
||||||
if (!Options_UNSAFE_Get("nostalgia-classicbg", &classicBG)) return;
|
|
||||||
Launcher_Theme.ClassicBackground = Options_GetBool("nostalgia-classicbg", false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CC_NOINLINE static void Launcher_SetCol(const char* key, BitmapCol col) {
|
CC_NOINLINE static void Launcher_SetCol(const char* key, BitmapCol col) {
|
||||||
@ -421,6 +413,7 @@ void Launcher_SaveTheme(void) {
|
|||||||
Launcher_SetCol("launcher-btn-fore-active-col", Launcher_Theme.ButtonForeActiveColor);
|
Launcher_SetCol("launcher-btn-fore-active-col", Launcher_Theme.ButtonForeActiveColor);
|
||||||
Launcher_SetCol("launcher-btn-fore-inactive-col", Launcher_Theme.ButtonForeColor);
|
Launcher_SetCol("launcher-btn-fore-inactive-col", Launcher_Theme.ButtonForeColor);
|
||||||
Launcher_SetCol("launcher-btn-highlight-inactive-col", Launcher_Theme.ButtonHighlightColor);
|
Launcher_SetCol("launcher-btn-highlight-inactive-col", Launcher_Theme.ButtonHighlightColor);
|
||||||
|
Options_SetBool("nostalgia-classicbg", Launcher_Theme.ClassicBackground);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,11 +44,9 @@ extern const struct LauncherTheme Launcher_ModernTheme;
|
|||||||
/* Minecraft Classic theme */
|
/* Minecraft Classic theme */
|
||||||
extern const struct LauncherTheme Launcher_ClassicTheme;
|
extern const struct LauncherTheme Launcher_ClassicTheme;
|
||||||
|
|
||||||
/* Resets colours to default. */
|
/* Loads theme from options. */
|
||||||
void Launcher_ResetTheme(void);
|
|
||||||
/* Loads colours from options. */
|
|
||||||
void Launcher_LoadTheme(void);
|
void Launcher_LoadTheme(void);
|
||||||
/* Saves the colours to options. */
|
/* Saves the theme to options. */
|
||||||
/* NOTE: Does not save options file itself. */
|
/* NOTE: Does not save options file itself. */
|
||||||
void Launcher_SaveTheme(void);
|
void Launcher_SaveTheme(void);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user