mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-04-28 21:27:58 +03:00
Merge 2cc2aca148
into fbbfc07ff1
This commit is contained in:
commit
b572d52605
5 changed files with 46 additions and 2 deletions
|
@ -22,6 +22,7 @@ DEFINE_HOOK(OnFlagSet, (int16_t flagType, int16_t flag));
|
|||
DEFINE_HOOK(OnFlagUnset, (int16_t flagType, int16_t flag));
|
||||
DEFINE_HOOK(OnSceneSpawnActors, ());
|
||||
DEFINE_HOOK(OnPlayerUpdate, ());
|
||||
DEFINE_HOOK(OnSetDoAction, (uint16_t action));
|
||||
DEFINE_HOOK(OnOcarinaSongAction, ());
|
||||
DEFINE_HOOK(OnCuccoOrChickenHatch, ());
|
||||
DEFINE_HOOK(OnShopSlotChange, (uint8_t cursorIndex, int16_t price));
|
||||
|
|
|
@ -85,6 +85,10 @@ void GameInteractor_ExecuteOnPlayerUpdate() {
|
|||
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnPlayerUpdate>();
|
||||
}
|
||||
|
||||
void GameInteractor_ExecuteOnSetDoAction(uint16_t action) {
|
||||
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnSetDoAction>(action);
|
||||
}
|
||||
|
||||
void GameInteractor_ExecuteOnOcarinaSongAction() {
|
||||
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnOcarinaSongAction>();
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ void GameInteractor_ExecuteOnFlagSet(int16_t flagType, int16_t flag);
|
|||
void GameInteractor_ExecuteOnFlagUnset(int16_t flagType, int16_t flag);
|
||||
void GameInteractor_ExecuteOnSceneSpawnActors();
|
||||
void GameInteractor_ExecuteOnPlayerUpdate();
|
||||
void GameInteractor_ExecuteOnSetDoAction(uint16_t action);
|
||||
void GameInteractor_ExecuteOnOcarinaSongAction();
|
||||
void GameInteractor_ExecuteOnCuccoOrChickenHatch();
|
||||
void GameInteractor_ExecuteOnActorInit(void* actor);
|
||||
|
|
|
@ -95,10 +95,8 @@ const char* GetLanguageCode() {
|
|||
switch (CVarGetInteger(CVAR_SETTING("Languages"), 0)) {
|
||||
case LANGUAGE_FRA:
|
||||
return "fr-FR";
|
||||
break;
|
||||
case LANGUAGE_GER:
|
||||
return "de-DE";
|
||||
break;
|
||||
}
|
||||
|
||||
return "en-US";
|
||||
|
@ -1148,6 +1146,44 @@ void RegisterOnSetGameLanguageHook() {
|
|||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSetGameLanguage>([]() { InitTTSBank(); });
|
||||
}
|
||||
|
||||
void RegisterOnSetDoAction() {
|
||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSetDoAction>([](uint16_t action) {
|
||||
if (CVarGetInteger(CVAR_SETTING("A11yTTS"), 0)) {
|
||||
uint8_t language = CVarGetInteger(CVAR_SETTING("Languages"), 0);
|
||||
const char* text;
|
||||
switch (action) {
|
||||
case DO_ACTION_CHECK:
|
||||
text = language == LANGUAGE_FRA ? "voir" : language == LANGUAGE_GER ? "lesen" : "check";
|
||||
break;
|
||||
case DO_ACTION_ENTER:
|
||||
text = language == LANGUAGE_FRA ? "entrer" : language == LANGUAGE_GER ? "kriechen" : "enter";
|
||||
break;
|
||||
case DO_ACTION_OPEN:
|
||||
text = language == LANGUAGE_FRA ? "ouvrir" : language == LANGUAGE_GER ? "öffnen" : "open";
|
||||
break;
|
||||
case DO_ACTION_CLIMB:
|
||||
text = language == LANGUAGE_FRA ? "monter" : language == LANGUAGE_GER ? "hinauf" : "climb";
|
||||
break;
|
||||
case DO_ACTION_SPEAK:
|
||||
text = language == LANGUAGE_FRA ? "parler" : language == LANGUAGE_GER ? "reden" : "speak";
|
||||
break;
|
||||
case DO_ACTION_GRAB:
|
||||
text = language == LANGUAGE_FRA ? "action" : language == LANGUAGE_GER ? "aktion" : "grab";
|
||||
break;
|
||||
case DO_ACTION_DOWN: {
|
||||
Player* player = GET_PLAYER(gPlayState);
|
||||
if (player == NULL || !(player->stateFlags1 & PLAYER_STATE1_ON_HORSE))
|
||||
return;
|
||||
text = language == LANGUAGE_FRA ? "descendre" : language == LANGUAGE_GER ? "herab" : "down";
|
||||
} break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
SpeechSynthesizer::Instance->Speak(text, GetLanguageCode());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void RegisterTTSModHooks() {
|
||||
RegisterOnSetGameLanguageHook();
|
||||
RegisterOnDialogMessageHook();
|
||||
|
@ -1156,6 +1192,7 @@ void RegisterTTSModHooks() {
|
|||
RegisterOnInterfaceUpdateHook();
|
||||
RegisterOnKaleidoscopeUpdateHook();
|
||||
RegisterOnUpdateMainMenuSelection();
|
||||
RegisterOnSetDoAction();
|
||||
}
|
||||
|
||||
void RegisterTTS() {
|
||||
|
|
|
@ -2791,6 +2791,7 @@ void Interface_SetDoAction(PlayState* play, u16 action) {
|
|||
PauseContext* pauseCtx = &play->pauseCtx;
|
||||
|
||||
if (interfaceCtx->unk_1F0 != action) {
|
||||
GameInteractor_ExecuteOnSetDoAction(action);
|
||||
interfaceCtx->unk_1F0 = action;
|
||||
interfaceCtx->unk_1EC = 1;
|
||||
interfaceCtx->unk_1F4 = 0.0f;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue