Merge pull request #418 from hackgrid/translate-hints

Translate hints
This commit is contained in:
lambertjamesd 2023-11-12 19:40:43 -07:00 committed by GitHub
commit caeb2dcb69
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 28 deletions

View file

@ -15,6 +15,6 @@
"GameUI_Deadzone" "Deadzone" "GameUI_Deadzone" "Deadzone"
"GameUI_Acceleration" "Acceleration" "GameUI_Acceleration" "Acceleration"
"GameUI_Sensitivity" "Sensitivity" "GameUI_Sensitivity" "Sensitivity"
"HINT_MOVE" "MOVE" "HINT_MOVE" "TO MOVE"
} }
} }

View file

@ -478,8 +478,12 @@ void controlsMenuRender(struct ControlsMenu* controlsMenu, struct RenderState* r
void controlsRenderPrompt(enum ControllerAction action, char* message, float opacity, struct RenderState* renderState) { void controlsRenderPrompt(enum ControllerAction action, char* message, float opacity, struct RenderState* renderState) {
struct Vector2s16 size = fontMeasure(&gDejaVuSansFont, message); if (message == NULL || (message != NULL && message[0] == '\0'))
return;
struct FontRenderer* fontRender = stackMalloc(sizeof(struct FontRenderer));
fontRendererLayout(fontRender, &gDejaVuSansFont, message, SCREEN_WD - (CONTROL_PROMPT_RIGHT_MARGIN + (CONTROL_PROMPT_PADDING * 2)));
int iconsWidth = controlsMeasureIcons(action); int iconsWidth = controlsMeasureIcons(action);
int opacityAsInt = (int)(255 * opacity); int opacityAsInt = (int)(255 * opacity);
@ -490,9 +494,9 @@ void controlsRenderPrompt(enum ControllerAction action, char* message, float opa
opacityAsInt = 0; opacityAsInt = 0;
} }
int textPositionX = (SCREEN_WD - CONTROL_PROMPT_RIGHT_MARGIN - CONTROL_PROMPT_PADDING) - size.x; int textPositionX = (SCREEN_WD - CONTROL_PROMPT_RIGHT_MARGIN - CONTROL_PROMPT_PADDING) - fontRender->width;
int textPositionY = (SCREEN_HT - CONTROL_PROMPT_BOTTOM_MARGIN - CONTROL_PROMPT_PADDING) - size.y; int textPositionY = (SCREEN_HT - CONTROL_PROMPT_BOTTOM_MARGIN - CONTROL_PROMPT_PADDING) - fontRender->height;
gSPDisplayList(renderState->dl++, ui_material_list[SOLID_TRANSPARENT_OVERLAY_INDEX]); gSPDisplayList(renderState->dl++, ui_material_list[SOLID_TRANSPARENT_OVERLAY_INDEX]);
gDPSetEnvColor(renderState->dl++, 0, 0, 0, opacityAsInt / 3); gDPSetEnvColor(renderState->dl++, 0, 0, 0, opacityAsInt / 3);
gDPFillRectangle( gDPFillRectangle(
@ -504,26 +508,28 @@ void controlsRenderPrompt(enum ControllerAction action, char* message, float opa
); );
gSPDisplayList(renderState->dl++, ui_material_revert_list[SOLID_TRANSPARENT_OVERLAY_INDEX]); gSPDisplayList(renderState->dl++, ui_material_revert_list[SOLID_TRANSPARENT_OVERLAY_INDEX]);
gSPDisplayList(renderState->dl++, ui_material_list[DEJAVU_SANS_0_INDEX]); struct Coloru8 textColor;
gDPSetEnvColor(renderState->dl++, 232, 206, 80, opacityAsInt);
renderState->dl = fontRender( textColor.r = 232;
&gDejaVuSansFont, textColor.g = 206;
message, textColor.b = 80;
textPositionX, textColor.a = opacityAsInt;
textPositionY,
renderState->dl renderState->dl = fontRendererBuildGfx(fontRender, gDejaVuSansImages, textPositionX, textPositionY, &textColor, renderState->dl);
);
gSPDisplayList(renderState->dl++, ui_material_revert_list[DEJAVU_SANS_0_INDEX]); gSPDisplayList(renderState->dl++, ui_material_revert_list[DEJAVU_SANS_0_INDEX]);
gSPDisplayList(renderState->dl++, ui_material_list[BUTTON_ICONS_INDEX]); gSPDisplayList(renderState->dl++, ui_material_list[BUTTON_ICONS_INDEX]);
gDPSetEnvColor(renderState->dl++, 232, 206, 80, opacityAsInt); gDPSetEnvColor(renderState->dl++, 232, 206, 80, opacityAsInt);
renderState->dl = controlsRenderIcons(renderState->dl, action, textPositionX - CONTROL_PROMPT_PADDING, textPositionY); renderState->dl = controlsRenderIcons(renderState->dl, action, textPositionX - CONTROL_PROMPT_PADDING, textPositionY);
gSPDisplayList(renderState->dl++, ui_material_revert_list[BUTTON_ICONS_INDEX]); gSPDisplayList(renderState->dl++, ui_material_revert_list[BUTTON_ICONS_INDEX]);
stackMallocFree(fontRender);
} }
void controlsRenderSubtitle(char* message, float textOpacity, float backgroundOpacity, struct RenderState* renderState, enum SubtitleType subtitleType) { void controlsRenderSubtitle(char* message, float textOpacity, float backgroundOpacity, struct RenderState* renderState, enum SubtitleType subtitleType) {
if (message == NULL || (message != NULL && message[0] == '\0')) if (message == NULL || (message != NULL && message[0] == '\0'))
return; return;
struct FontRenderer* fontRender = stackMalloc(sizeof(struct FontRenderer)); struct FontRenderer* fontRender = stackMalloc(sizeof(struct FontRenderer));
fontRendererLayout(fontRender, &gDejaVuSansFont, message, SCREEN_WD - (SUBTITLE_SIDE_MARGIN + SUBTITLE_PADDING) * 2); fontRendererLayout(fontRender, &gDejaVuSansFont, message, SCREEN_WD - (SUBTITLE_SIDE_MARGIN + SUBTITLE_PADDING) * 2);

View file

@ -155,16 +155,16 @@ u8 gPromptActions[] = {
ControllerActionJump, ControllerActionJump,
}; };
char* gPromptText[] = { int gPromptText[] = {
NULL, NULL,
"TO PLACE THE ORANGE PORTAL", HINT_GET_PORTAL_2,
"TO PLACE THE BLUE PORTAL", HINT_GET_PORTAL_1,
"TO PICKUP AN OBJECT", HINT_USE_ITEMS,
"TO DROP AN OBJECT", HINT_DROP_ITEMS,
"TO USE", HINT_USE_SWITCHES,
"TO CROUCH", HINT_DUCK,
"TO MOVE", HINT_MOVE,
"TO JUMP", HINT_JUMP,
}; };
void hudShowActionPrompt(struct Hud* hud, enum CutscenePromptType promptType) { void hudShowActionPrompt(struct Hud* hud, enum CutscenePromptType promptType) {
@ -359,10 +359,10 @@ void hudRender(struct Hud* hud, struct Player* player, struct RenderState* rende
} }
if (hud->promptOpacity > 0.0f && hud->promptType != CutscenePromptTypeNone) { if (hud->promptOpacity > 0.0f && hud->promptType != CutscenePromptTypeNone) {
controlsRenderPrompt(gPromptActions[hud->promptType], gPromptText[hud->promptType], hud->promptOpacity, renderState); controlsRenderPrompt(gPromptActions[hud->promptType], translationsGet(gPromptText[hud->promptType]), hud->promptOpacity, renderState);
} }
if (hud->subtitleOpacity > 0.0f && (gSaveData.controls.flags & ControlSaveSubtitlesEnabled || gSaveData.controls.flags & ControlSaveAllSubtitlesEnabled) && hud->subtitleKey != SubtitleKeyNone) { if (hud->subtitleOpacity > 0.0f && (gSaveData.controls.flags & ControlSaveSubtitlesEnabled || gSaveData.controls.flags & ControlSaveAllSubtitlesEnabled) && hud->subtitleKey != SubtitleKeyNone) {
controlsRenderSubtitle(translationsGet(hud->subtitleKey), hud->subtitleOpacity, hud->backgroundOpacity, renderState, hud->subtitleType); controlsRenderSubtitle(translationsGet(hud->subtitleKey), hud->subtitleOpacity, hud->backgroundOpacity, renderState, hud->subtitleType);
} }
} }

View file

@ -36,6 +36,13 @@ portal_whitelist = {
"PORTAL_CHAPTER1_TITLE", "PORTAL_CHAPTER1_TITLE",
"VALVE_PRIMARY_ATTACK", "VALVE_PRIMARY_ATTACK",
"VALVE_SECONDARY_ATTACK", "VALVE_SECONDARY_ATTACK",
"HINT_GET_PORTAL_1",
"HINT_GET_PORTAL_2",
"HINT_USE_ITEMS",
"HINT_DROP_ITEMS",
"HINT_USE_SWITCHES",
"HINT_DUCK",
"HINT_JUMP",
} }
valve_whitelist = { valve_whitelist = {
@ -309,7 +316,10 @@ def filter_whitelist(keys, values, whitelist):
for index in range(len(keys)): for index in range(len(keys)):
if keys[index] in whitelist: if keys[index] in whitelist:
result_keys.append(keys[index]) result_keys.append(keys[index])
result.append(values[index]) value = values[index]
if "HINT_" in keys[index]:
value = re.sub('%[^%]*%', '', value).strip()
result.append(value)
return result_keys, result return result_keys, result