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_Acceleration" "Acceleration"
"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) {
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 opacityAsInt = (int)(255 * opacity);
@ -490,9 +494,9 @@ void controlsRenderPrompt(enum ControllerAction action, char* message, float opa
opacityAsInt = 0;
}
int textPositionX = (SCREEN_WD - CONTROL_PROMPT_RIGHT_MARGIN - CONTROL_PROMPT_PADDING) - size.x;
int textPositionY = (SCREEN_HT - CONTROL_PROMPT_BOTTOM_MARGIN - CONTROL_PROMPT_PADDING) - size.y;
int textPositionX = (SCREEN_WD - CONTROL_PROMPT_RIGHT_MARGIN - CONTROL_PROMPT_PADDING) - fontRender->width;
int textPositionY = (SCREEN_HT - CONTROL_PROMPT_BOTTOM_MARGIN - CONTROL_PROMPT_PADDING) - fontRender->height;
gSPDisplayList(renderState->dl++, ui_material_list[SOLID_TRANSPARENT_OVERLAY_INDEX]);
gDPSetEnvColor(renderState->dl++, 0, 0, 0, opacityAsInt / 3);
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_list[DEJAVU_SANS_0_INDEX]);
gDPSetEnvColor(renderState->dl++, 232, 206, 80, opacityAsInt);
renderState->dl = fontRender(
&gDejaVuSansFont,
message,
textPositionX,
textPositionY,
renderState->dl
);
struct Coloru8 textColor;
textColor.r = 232;
textColor.g = 206;
textColor.b = 80;
textColor.a = opacityAsInt;
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_list[BUTTON_ICONS_INDEX]);
gDPSetEnvColor(renderState->dl++, 232, 206, 80, opacityAsInt);
renderState->dl = controlsRenderIcons(renderState->dl, action, textPositionX - CONTROL_PROMPT_PADDING, textPositionY);
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) {
if (message == NULL || (message != NULL && message[0] == '\0'))
return;
return;
struct FontRenderer* fontRender = stackMalloc(sizeof(struct FontRenderer));
fontRendererLayout(fontRender, &gDejaVuSansFont, message, SCREEN_WD - (SUBTITLE_SIDE_MARGIN + SUBTITLE_PADDING) * 2);

View file

@ -155,16 +155,16 @@ u8 gPromptActions[] = {
ControllerActionJump,
};
char* gPromptText[] = {
int gPromptText[] = {
NULL,
"TO PLACE THE ORANGE PORTAL",
"TO PLACE THE BLUE PORTAL",
"TO PICKUP AN OBJECT",
"TO DROP AN OBJECT",
"TO USE",
"TO CROUCH",
"TO MOVE",
"TO JUMP",
HINT_GET_PORTAL_2,
HINT_GET_PORTAL_1,
HINT_USE_ITEMS,
HINT_DROP_ITEMS,
HINT_USE_SWITCHES,
HINT_DUCK,
HINT_MOVE,
HINT_JUMP,
};
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) {
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) {
controlsRenderSubtitle(translationsGet(hud->subtitleKey), hud->subtitleOpacity, hud->backgroundOpacity, renderState, hud->subtitleType);
}
}
}

View file

@ -36,6 +36,13 @@ portal_whitelist = {
"PORTAL_CHAPTER1_TITLE",
"VALVE_PRIMARY_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 = {
@ -309,7 +316,10 @@ def filter_whitelist(keys, values, whitelist):
for index in range(len(keys)):
if keys[index] in whitelist:
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