mirror of https://github.com/sm64pc/sm64pc.git
[WIP] Converted old options menu screens to MoonScreens
This commit is contained in:
parent
6af8138201
commit
0fcf880472
|
@ -52,19 +52,31 @@ static const u8 toggleStr[][20] = {
|
|||
};
|
||||
|
||||
static const u8 menuStr[][32] = {
|
||||
"TEXT_OPT_HIGHLIGHT",
|
||||
"TEXT_OPT_BUTTON1",
|
||||
"TEXT_OPT_BUTTON2",
|
||||
"TEXT_OPT_OPTIONS",
|
||||
"TEXT_OPT_CAMERA",
|
||||
"TEXT_OPT_CONTROLS",
|
||||
"TEXT_OPT_VIDEO",
|
||||
"TEXT_OPT_AUDIO",
|
||||
"TEXT_EXIT_GAME",
|
||||
"TEXT_OPT_CHEATS",
|
||||
"TEXT_OPT_GAME"
|
||||
"TEXT_OPT_HIGHLIGHT", //
|
||||
"TEXT_OPT_BUTTON1", //
|
||||
"TEXT_OPT_BUTTON2", //
|
||||
"TEXT_OPT_OPTIONS", //
|
||||
"TEXT_OPT_CAMERA", //
|
||||
"TEXT_OPT_CONTROLS", //
|
||||
"TEXT_OPT_VIDEO", // *
|
||||
"TEXT_OPT_AUDIO", // *
|
||||
"TEXT_EXIT_GAME", //
|
||||
"TEXT_OPT_CHEATS", //
|
||||
"TEXT_OPT_GAME" // *
|
||||
};
|
||||
|
||||
// optsCameraStr[9],
|
||||
// optsCameraStr[6],
|
||||
// optsCameraStr[7],
|
||||
// optsCameraStr[2],
|
||||
// optsCameraStr[3],
|
||||
|
||||
// optsCameraStr[0],
|
||||
// optsCameraStr[1],
|
||||
// optsCameraStr[4],
|
||||
// optsCameraStr[5],
|
||||
// optsCameraStr[8],
|
||||
|
||||
static const u8 optsCameraStr[][32] = {
|
||||
"TEXT_OPT_CAMX",
|
||||
"TEXT_OPT_CAMY",
|
||||
|
@ -231,15 +243,15 @@ static void optvideo_apply(UNUSED struct Option *self, s32 arg) {
|
|||
|
||||
#ifdef BETTERCAMERA
|
||||
static struct Option optsCamera[] = {
|
||||
DEF_OPT_TOGGLE( optsCameraStr[9], &configEnableCamera ),
|
||||
DEF_OPT_TOGGLE( optsCameraStr[6], &configCameraAnalog ),
|
||||
DEF_OPT_TOGGLE( optsCameraStr[7], &configCameraMouse ),
|
||||
DEF_OPT_TOGGLE( optsCameraStr[9], &configEnableCamera ),
|
||||
DEF_OPT_TOGGLE( optsCameraStr[6], &configCameraAnalog ),
|
||||
DEF_OPT_TOGGLE( optsCameraStr[7], &configCameraMouse ),
|
||||
DEF_OPT_TOGGLE( optsCameraStr[2], &configCameraInvertX ),
|
||||
DEF_OPT_TOGGLE( optsCameraStr[3], &configCameraInvertY ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[0], &configCameraXSens, 1, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[1], &configCameraYSens, 1, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[4], &configCameraAggr, 0, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[5], &configCameraPan, 0, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[0], &configCameraXSens, 1, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[1], &configCameraYSens, 1, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[4], &configCameraAggr, 0, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[5], &configCameraPan, 0, 100, 1 ),
|
||||
DEF_OPT_SCROLL( optsCameraStr[8], &configCameraDegrade, 0, 100, 1 ),
|
||||
};
|
||||
#endif
|
||||
|
@ -265,7 +277,7 @@ static struct Option optsControls[] = {
|
|||
DEF_OPT_SCROLL( bindStr[17], &configRumbleStrength, 0, 100, 1)
|
||||
};
|
||||
|
||||
static struct Option optsVideo[] = {
|
||||
static struct Option optsVideo[] = { // *
|
||||
#ifndef TARGET_SWITCH
|
||||
DEF_OPT_TOGGLE( optsVideoStr[0], &configWindow.fullscreen ),
|
||||
DEF_OPT_TOGGLE( optsVideoStr[5], &configWindow.vsync ),
|
||||
|
@ -278,7 +290,7 @@ static struct Option optsVideo[] = {
|
|||
#endif
|
||||
};
|
||||
|
||||
static struct Option optsGame[] = {
|
||||
static struct Option optsGame[] = { // *
|
||||
DEF_OPT_CHOICE( optsGameStr[0], &configLanguage, NULL ),
|
||||
DEF_OPT_TOGGLE( optsGameStr[1], &configPrecacheRes ),
|
||||
#ifdef TARGET_SWITCH
|
||||
|
@ -286,7 +298,7 @@ static struct Option optsGame[] = {
|
|||
#endif
|
||||
};
|
||||
|
||||
static struct Option optsAudio[] = {
|
||||
static struct Option optsAudio[] = { // *
|
||||
DEF_OPT_SCROLL( optsAudioStr[0], &configMasterVolume, 0, MAX_VOLUME, 1 ),
|
||||
DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, MAX_VOLUME, 1),
|
||||
DEF_OPT_SCROLL( optsAudioStr[2], &configSfxVolume, 0, MAX_VOLUME, 1),
|
||||
|
@ -320,27 +332,14 @@ static struct SubMenu menuCheats = DEF_SUBMENU( menuStr[9], optsCheats );
|
|||
/* main options menu definition */
|
||||
|
||||
static struct Option optsMain[] = {
|
||||
DEF_OPT_SUBMENU( menuStr[10], &menuGame ),
|
||||
#ifdef BETTERCAMERA
|
||||
DEF_OPT_SUBMENU( menuStr[4], &menuCamera ),
|
||||
#endif
|
||||
DEF_OPT_SUBMENU( menuStr[5], &menuControls ),
|
||||
DEF_OPT_SUBMENU( menuStr[6], &menuVideo ),
|
||||
DEF_OPT_SUBMENU( menuStr[7], &menuAudio ),
|
||||
DEF_OPT_BUTTON ( menuStr[8], optmenu_act_exit ),
|
||||
// NOTE: always keep cheats the last option here because of the half-assed way I toggle them
|
||||
DEF_OPT_SUBMENU( menuStr[9], &menuCheats )
|
||||
};
|
||||
|
||||
static struct SubMenu mainOptions[] = {
|
||||
#ifdef BETTERCAMERA
|
||||
DEF_SUBMENU( menuStr[4], optsCamera ),
|
||||
#endif
|
||||
// DEF_SUBMENU( menuStr[10], optsGame ),
|
||||
DEF_SUBMENU( menuStr[5], optsControls ),
|
||||
DEF_SUBMENU( menuStr[6], optsVideo ),
|
||||
DEF_SUBMENU( menuStr[7], optsAudio ),
|
||||
DEF_SUBMENU( menuStr[9], optsCheats )
|
||||
};
|
||||
|
||||
/* implementation */
|
||||
|
@ -382,7 +381,7 @@ static void optmenu_draw_box(s16 x1, s16 y1, s16 x2, s16 y2, u8 r, u8 g, u8 b, u
|
|||
static void optmenu_draw_text(s16 x, s16 y, const u8 *str, u8 col) {
|
||||
const u8 textX = get_str_x_pos_from_center(x, (u8*)str, 10.0f);
|
||||
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);
|
||||
|
||||
|
||||
print_generic_string(textX+1, y-1, str);
|
||||
if (col == 0) {
|
||||
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
|
||||
|
@ -392,7 +391,7 @@ static void optmenu_draw_text(s16 x, s16 y, const u8 *str, u8 col) {
|
|||
print_generic_string(textX, y, str);
|
||||
}
|
||||
|
||||
static void optmenu_draw_scaled_text(f32 x, f32 y, const u8 *str, int col, float scale) {
|
||||
static void optmenu_draw_scaled_text(f32 x, f32 y, const u8 *str, int col, float scale) {
|
||||
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);
|
||||
moon_draw_text(x + 1, y-1, str, scale);
|
||||
if (col == -1) {
|
||||
|
@ -402,9 +401,9 @@ static void optmenu_draw_scaled_text(f32 x, f32 y, const u8 *str, int col, float
|
|||
} else if (col == 1) {
|
||||
gDPSetEnvColor(gDisplayListHead++, 32, 255, 32, 255);
|
||||
} else {
|
||||
gDPSetEnvColor(gDisplayListHead++, 0, 255, 242, 255);
|
||||
gDPSetEnvColor(gDisplayListHead++, 0, 255, 242, 255);
|
||||
}
|
||||
moon_draw_text(x, y, str, scale);
|
||||
moon_draw_text(x, y, str, scale);
|
||||
}
|
||||
|
||||
#include <stdarg.h>
|
||||
|
@ -420,7 +419,7 @@ u8* concat(u8* a, u8* b) {
|
|||
return tmp;
|
||||
}
|
||||
|
||||
u8* join(u8* a, u8* b, u8* c) {
|
||||
u8* join(u8* a, u8* b, u8* c) {
|
||||
int a_size = sizeof(a) / sizeof(a[0]);
|
||||
int b_size = sizeof(b) / sizeof(b[0]);
|
||||
int c_size = sizeof(c) / sizeof(c[0]);
|
||||
|
@ -433,15 +432,15 @@ u8* join(u8* a, u8* b, u8* c) {
|
|||
return tmp;
|
||||
}
|
||||
|
||||
static void optmenu_draw_opt(const struct Option *opt, s16 x, s16 y, u8 sel) {
|
||||
static void optmenu_draw_opt(const struct Option *opt, s16 x, s16 y, u8 sel) {
|
||||
u8 * choice;
|
||||
|
||||
u8* base = (u8*)get_key_string(opt->label);
|
||||
u8* base = (u8*)get_key_string(opt->label);
|
||||
|
||||
s16 sx = 0;
|
||||
s16 sy = 0;
|
||||
s16 sw = 0;
|
||||
s16 sh = 0;
|
||||
s16 sh = 0;
|
||||
u8* lbl;
|
||||
|
||||
int width;
|
||||
|
@ -458,7 +457,7 @@ static void optmenu_draw_opt(const struct Option *opt, s16 x, s16 y, u8 sel) {
|
|||
optmenu_draw_scaled_text(x - width, y, lbl, -1, scale);
|
||||
optmenu_draw_scaled_text(x - width + 1 + moon_get_text_width(lbl, scale, FALSE), y, getTranslatedText(":"), -1, scale);
|
||||
optmenu_draw_scaled_text(x - width + 9 + moon_get_text_width(lbl, scale, FALSE), y, tmpText, opt->type & OPT_TOGGLE ? (int)*opt->bval : 2, scale);
|
||||
}
|
||||
}
|
||||
|
||||
switch (opt->type) {
|
||||
case OPT_BUTTON:
|
||||
|
@ -469,7 +468,7 @@ static void optmenu_draw_opt(const struct Option *opt, s16 x, s16 y, u8 sel) {
|
|||
|
||||
case OPT_SCROLL:
|
||||
sx = x - 127 / 2;
|
||||
sy = 209 - (y - 35);
|
||||
sy = 209 - (y - 35);
|
||||
sw = sx + (127.0 * (((*opt->uval * 1.0) + __FLT_MIN__) / (opt->scrMax * 1.0)));
|
||||
sh = sy + 7;
|
||||
|
||||
|
@ -491,7 +490,7 @@ static void optmenu_draw_opt(const struct Option *opt, s16 x, s16 y, u8 sel) {
|
|||
optmenu_draw_scaled_text(x - width, y, lbl, -1, scale);
|
||||
// optmenu_draw_scaled_text(x - width + 1 + moon_get_text_width(lbl, scale), y, getTranslatedText("-"), -1, scale);
|
||||
// optmenu_draw_scaled_text(x - width + 9 + moon_get_text_width(lbl, scale), y, tmpText, opt->type & OPT_TOGGLE ? (int)*opt->bval : 2, scale);
|
||||
|
||||
|
||||
int base_width = moon_get_text_width(lbl, scale, FALSE);
|
||||
int padding = 3;
|
||||
u8* txt;
|
||||
|
@ -503,7 +502,7 @@ static void optmenu_draw_opt(const struct Option *opt, s16 x, s16 y, u8 sel) {
|
|||
txt = get_key_string(bindStr[optmenu_binding && white ? 1 : 0]);
|
||||
base_width += moon_get_text_width(txt, scale, FALSE) + padding;
|
||||
optmenu_draw_scaled_text(x - width + base_width, y, txt, -1, scale);
|
||||
} else {
|
||||
} else {
|
||||
u8* txt = getTranslatedText("0000");
|
||||
base_width += moon_get_text_width(txt, scale, FALSE) + padding;
|
||||
optmenu_draw_scaled_text(x - width + base_width, y, txt, -1, scale);
|
||||
|
@ -593,16 +592,16 @@ float gGlobal = 0;
|
|||
void optmenu_draw(void) {
|
||||
gGlobal += 1.0f;
|
||||
s16 scroll;
|
||||
s16 scrollpos;
|
||||
s16 scrollpos;
|
||||
|
||||
float range = 0.5f;
|
||||
float step = 0.1f;
|
||||
|
||||
if(gSwitchValue >= range)
|
||||
if(gSwitchValue >= range)
|
||||
gSwitchNewValue -= step;
|
||||
else if (gSwitchValue <= -range)
|
||||
gSwitchNewValue += step;
|
||||
|
||||
|
||||
gSwitchValue = lerp(gSwitchValue, gSwitchNewValue, 0.01f);
|
||||
|
||||
u8* label = get_key_string(currentMenu->label);
|
||||
|
@ -617,7 +616,7 @@ void optmenu_draw(void) {
|
|||
|
||||
optmenu_draw_scaled_text(labelX - 50 - gSwitchValue, SCREEN_HEIGHT - 34, getTranslatedText("<"), -1, 0.6f);
|
||||
optmenu_draw_scaled_text(labelX + txtW + 50 + gSwitchValue, SCREEN_HEIGHT - 34, getTranslatedText(">"), -1, 0.6f);
|
||||
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);
|
||||
|
||||
PDrintBox(25, 50, SCREEN_WIDTH - 50, SCREEN_HEIGHT * 0.6, 0x00000080, true);
|
||||
|
@ -630,7 +629,7 @@ void optmenu_draw(void) {
|
|||
if (scroll <= base && scroll > padding) {
|
||||
if((currentMenu->select == i))
|
||||
PDrintBox(30, 174 - (15 * i), SCREEN_WIDTH - 60, padding, 0xFFF20040, true);
|
||||
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
|
||||
|
||||
optmenu_draw_opt(¤tMenu->opts[i], 160, scroll, (currentMenu->select == i));
|
||||
|
@ -664,9 +663,9 @@ void optmenu_toggle(void) {
|
|||
currentMenu->scroll = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
optmenu_open = 1;
|
||||
|
||||
|
||||
/* Resets l_counter to 0 every time the options menu is open */
|
||||
l_counter = 0;
|
||||
} else {
|
||||
|
@ -698,14 +697,14 @@ void optmenu_check_buttons(void) {
|
|||
|
||||
if (gPlayer1Controller->buttonPressed & R_TRIG)
|
||||
optmenu_toggle();
|
||||
|
||||
|
||||
if(gPlayer1Controller->buttonPressed & L_CBUTTONS){
|
||||
int s = sizeof(mainOptions) / sizeof(mainOptions[0]);
|
||||
if(current_index > 0) current_index--;
|
||||
else current_index = s - 1;
|
||||
currentMenu = &mainOptions[current_index];
|
||||
}
|
||||
if(gPlayer1Controller->buttonPressed & R_CBUTTONS){
|
||||
if(gPlayer1Controller->buttonPressed & R_CBUTTONS){
|
||||
int s = sizeof(mainOptions) / sizeof(mainOptions[0]);
|
||||
|
||||
if(current_index < s - 1) current_index++;
|
||||
|
@ -714,7 +713,7 @@ void optmenu_check_buttons(void) {
|
|||
}
|
||||
|
||||
/* Enables cheats if the user press the L trigger 3 times while in the options menu. Also plays a sound. */
|
||||
|
||||
|
||||
if ((gPlayer1Controller->buttonPressed & L_TRIG) && !Cheats.EnableCheats) {
|
||||
if (l_counter == 2) {
|
||||
Cheats.EnableCheats = true;
|
||||
|
@ -724,7 +723,7 @@ void optmenu_check_buttons(void) {
|
|||
l_counter++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!optmenu_open) return;
|
||||
|
||||
u8 allowInput = 0;
|
||||
|
|
Loading…
Reference in New Issue