Translate use defaults button

This commit is contained in:
James Lambert 2023-11-11 10:12:27 -07:00
parent 950006fdce
commit 335bde9482
4 changed files with 48 additions and 15 deletions

View file

@ -27,9 +27,8 @@
#define SEPARATOR_SPACE 3 #define SEPARATOR_SPACE 3
#define USE_DEFAULTS_X 190 #define USE_DEFAULTS_X 286
#define USE_DEFAULTS_Y 186 #define USE_DEFAULTS_Y 186
#define USE_DEFAULTS_WIDTH 96
#define USE_DEFAULTS_HEIGHT 16 #define USE_DEFAULTS_HEIGHT 16
struct ControllerIcon { struct ControllerIcon {
@ -278,9 +277,10 @@ void controlsMenuInit(struct ControlsMenu* controlsMenu) {
controlsMenu->useDefaults = menuBuildButton( controlsMenu->useDefaults = menuBuildButton(
&gDejaVuSansFont, &gDejaVuSansFont,
"Use Defaults", translationsGet(GAMEUI_USEDEFAULTS),
USE_DEFAULTS_X, USE_DEFAULTS_Y, USE_DEFAULTS_X, USE_DEFAULTS_Y,
USE_DEFAULTS_WIDTH, USE_DEFAULTS_HEIGHT USE_DEFAULTS_HEIGHT,
1
); );
controlsMenu->scrollOutline = menuBuildOutline(CONTROLS_X, CONTROLS_Y, CONTROLS_WIDTH, CONTROLS_HEIGHT, 1); controlsMenu->scrollOutline = menuBuildOutline(CONTROLS_X, CONTROLS_Y, CONTROLS_WIDTH, CONTROLS_HEIGHT, 1);
@ -297,6 +297,7 @@ void controlsRebuildtext(struct ControlsMenu* controlsMenu) {
controlsMenuInitText(controlsMenu); controlsMenuInitText(controlsMenu);
controlsLayout(controlsMenu); controlsLayout(controlsMenu);
menuRebuildButtonText(&controlsMenu->useDefaults, &gDejaVuSansFont, translationsGet(GAMEUI_USEDEFAULTS), 1);
} }
enum MenuDirection controlsMenuUpdate(struct ControlsMenu* controlsMenu) { enum MenuDirection controlsMenuUpdate(struct ControlsMenu* controlsMenu) {
@ -419,9 +420,9 @@ void controlsMenuRender(struct ControlsMenu* controlsMenu, struct RenderState* r
gDPSetEnvColor(renderState->dl++, gSelectionOrange.r, gSelectionOrange.g, gSelectionOrange.b, gSelectionOrange.a); gDPSetEnvColor(renderState->dl++, gSelectionOrange.r, gSelectionOrange.g, gSelectionOrange.b, gSelectionOrange.a);
gDPFillRectangle( gDPFillRectangle(
renderState->dl++, renderState->dl++,
USE_DEFAULTS_X, controlsMenu->useDefaults.x,
USE_DEFAULTS_Y, USE_DEFAULTS_Y,
USE_DEFAULTS_X + USE_DEFAULTS_WIDTH, controlsMenu->useDefaults.x + controlsMenu->useDefaults.w,
USE_DEFAULTS_Y + USE_DEFAULTS_HEIGHT USE_DEFAULTS_Y + USE_DEFAULTS_HEIGHT
); );
} }
@ -437,13 +438,13 @@ void controlsMenuRender(struct ControlsMenu* controlsMenu, struct RenderState* r
gDPPipeSync(renderState->dl++); gDPPipeSync(renderState->dl++);
gDPSetScissor(renderState->dl++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WD, SCREEN_HT); gDPSetScissor(renderState->dl++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WD, SCREEN_HT);
menuSetRenderColor(renderState, controlsMenu->selectedRow == ControllerActionCount, &gColorBlack, &gColorWhite); struct PrerenderedTextBatch* batch = prerenderedBatchStart();
gSPDisplayList(renderState->dl++, controlsMenu->useDefaults.text); prerenderedBatchAdd(batch, controlsMenu->useDefaults.text, controlsMenu->selectedRow == ControllerActionCount ? &gColorBlack : &gColorWhite);
gDPPipeSync(renderState->dl++); renderState->dl = prerenderedBatchFinish(batch, gDejaVuSansImages, renderState->dl);
gDPSetEnvColor(renderState->dl++, gColorWhite.r, gColorWhite.g, gColorWhite.b, gColorWhite.a);
gDPSetScissor(renderState->dl++, G_SC_NON_INTERLACE, CONTROLS_X, CONTROLS_Y, CONTROLS_X + CONTROLS_WIDTH, CONTROLS_Y + CONTROLS_HEIGHT); gDPSetScissor(renderState->dl++, G_SC_NON_INTERLACE, CONTROLS_X, CONTROLS_Y, CONTROLS_X + CONTROLS_WIDTH, CONTROLS_Y + CONTROLS_HEIGHT);
struct PrerenderedTextBatch* batch = prerenderedBatchStart(); batch = prerenderedBatchStart();
for (int i = 0; i < ControllerActionCount; ++i) { for (int i = 0; i < ControllerActionCount; ++i) {
prerenderedBatchAdd(batch, controlsMenu->actionRows[i].actionText, controlsMenu->selectedRow == i ? &gColorBlack : &gColorWhite); prerenderedBatchAdd(batch, controlsMenu->actionRows[i].actionText, controlsMenu->selectedRow == i ? &gColorBlack : &gColorWhite);

View file

@ -158,10 +158,23 @@ Gfx* menuBuildOutline(int x, int y, int width, int height, int invert) {
return result; return result;
} }
struct MenuButton menuBuildButton(struct Font* font, char* message, int x, int y, int width, int height) { #define BUTTON_LEFT_PADDING 4
#define BUTTON_RIGHT_PADDING 9
#define BUTTON_TOP_PADDING 2
struct MenuButton menuBuildButton(struct Font* font, char* message, int x, int y, int height, int rightAlign) {
struct MenuButton result; struct MenuButton result;
result.text = menuBuildText(font, message, x + 4, y + 2); result.text = menuBuildPrerenderedText(font, message, x + BUTTON_LEFT_PADDING, y + BUTTON_TOP_PADDING, SCREEN_HT);
int width = result.text->width + BUTTON_LEFT_PADDING + BUTTON_RIGHT_PADDING;
if (rightAlign) {
x -= width;
prerenderedTextRelocate(result.text, x + BUTTON_LEFT_PADDING, y + BUTTON_TOP_PADDING);
}
result.outline = menuBuildOutline(x, y, width, height, 0); result.outline = menuBuildOutline(x, y, width, height, 0);
result.x = x; result.x = x;
@ -173,6 +186,23 @@ struct MenuButton menuBuildButton(struct Font* font, char* message, int x, int y
return result; return result;
} }
void menuRebuildButtonText(struct MenuButton* button, struct Font* font, char* message, int rightAlign) {
menuFreePrerenderedDeferred(button->text);
button->text = menuBuildPrerenderedText(font, message, button->x + BUTTON_LEFT_PADDING, button->y + BUTTON_TOP_PADDING, SCREEN_HT);
int newWidth = button->text->width + BUTTON_LEFT_PADDING + BUTTON_RIGHT_PADDING;
if (rightAlign) {
button->x -= newWidth - button->w;
prerenderedTextRelocate(button->text, button->x + BUTTON_LEFT_PADDING, button->y + BUTTON_TOP_PADDING);
}
button->w = newWidth;
menuRenderOutline(button->x, button->y, button->w, button->h, 0, button->outline);
}
void menuSetRenderColor(struct RenderState* renderState, int isSelected, struct Coloru8* selected, struct Coloru8* defaultColor) { void menuSetRenderColor(struct RenderState* renderState, int isSelected, struct Coloru8* selected, struct Coloru8* defaultColor) {
if (isSelected) { if (isSelected) {
gDPSetEnvColor(renderState->dl++, selected->r, selected->g, selected->b, selected->a); gDPSetEnvColor(renderState->dl++, selected->r, selected->g, selected->b, selected->a);

View file

@ -10,7 +10,7 @@
struct MenuButton { struct MenuButton {
Gfx* outline; Gfx* outline;
Gfx* text; struct PrerenderedText* text;
short x, y; short x, y;
short w, h; short w, h;
}; };
@ -58,8 +58,9 @@ Gfx* menuRerenderSolidBorder(int x, int y, int w, int h, int nx, int ny, int nw,
Gfx* menuBuildSolidBorder(int x, int y, int w, int h, int nx, int ny, int nw, int nh); Gfx* menuBuildSolidBorder(int x, int y, int w, int h, int nx, int ny, int nw, int nh);
Gfx* menuBuildOutline(int x, int y, int width, int height, int invert); Gfx* menuBuildOutline(int x, int y, int width, int height, int invert);
struct MenuButton menuBuildButton(struct Font* font, char* message, int x, int y, int width, int height); struct MenuButton menuBuildButton(struct Font* font, char* message, int x, int y, int height, int rightAlign);
void menuSetRenderColor(struct RenderState* renderState, int isSelected, struct Coloru8* selected, struct Coloru8* defaultColor); void menuSetRenderColor(struct RenderState* renderState, int isSelected, struct Coloru8* selected, struct Coloru8* defaultColor);
void menuRebuildButtonText(struct MenuButton* button, struct Font* font, char* message, int rightAlign);
struct MenuCheckbox menuBuildCheckbox(struct Font* font, char* message, int x, int y, int shouldUsePrerendered); struct MenuCheckbox menuBuildCheckbox(struct Font* font, char* message, int x, int y, int shouldUsePrerendered);
Gfx* menuCheckboxRender(struct MenuCheckbox* checkbox, Gfx* dl); Gfx* menuCheckboxRender(struct MenuCheckbox* checkbox, Gfx* dl);

View file

@ -22,6 +22,7 @@ hl_gameui_whitelist = {
"GAMEUI_SAVEGAME", "GAMEUI_SAVEGAME",
"GAMEUI_SOUNDEFFECTVOLUME", "GAMEUI_SOUNDEFFECTVOLUME",
"GAMEUI_SUBTITLESANDSOUNDEFFECTS", "GAMEUI_SUBTITLESANDSOUNDEFFECTS",
"GAMEUI_USEDEFAULTS",
"GAMEUI_VIDEO", "GAMEUI_VIDEO",
} }