This commit is contained in:
nclok1405 2025-08-19 02:25:23 +08:00 committed by GitHub
commit 2a8f6c5aa9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 96 additions and 2 deletions

View file

@ -549,7 +549,7 @@ void AudioEditor::DrawElement() {
UIWidgets::CVarSliderInt("Overlay Duration: %d seconds", CVAR_AUDIO("SeqNameOverlayDuration"), UIWidgets::CVarSliderInt("Overlay Duration: %d seconds", CVAR_AUDIO("SeqNameOverlayDuration"),
UIWidgets::IntSliderOptions() UIWidgets::IntSliderOptions()
.Min(1) .Min(1)
.Max(10) .Max(20)
.DefaultValue(5) .DefaultValue(5)
.Size(ImVec2(300.0f, 0.0f)) .Size(ImVec2(300.0f, 0.0f))
.Color(THEME_COLOR)); .Color(THEME_COLOR));

View file

@ -345,9 +345,17 @@ void OTRGlobals::Initialize() {
context->InitWindow(sohFast3dWindow); context->InitWindow(sohFast3dWindow);
auto overlay = context->GetInstance()->GetWindow()->GetGui()->GetGameOverlay(); auto overlay = context->GetInstance()->GetWindow()->GetGui()->GetGameOverlay();
// Currently, differently sized fonts require preloading
// (loading a font at any point after here crashes the game with "INVALID ACCESS TO STORAGE")
overlay->LoadFont("Press Start 2P", 12.0f, "fonts/PressStart2P-Regular.ttf"); overlay->LoadFont("Press Start 2P", 12.0f, "fonts/PressStart2P-Regular.ttf");
overlay->LoadFont("Press Start 2P Normal", 24.0f, "fonts/PressStart2P-Regular.ttf");
overlay->LoadFont("Press Start 2P Large", 32.0f, "fonts/PressStart2P-Regular.ttf");
overlay->LoadFont("Press Start 2P X-Large", 40.0f, "fonts/PressStart2P-Regular.ttf");
overlay->LoadFont("Fipps", 32.0f, "fonts/Fipps-Regular.otf"); overlay->LoadFont("Fipps", 32.0f, "fonts/Fipps-Regular.otf");
overlay->SetCurrentFont(CVarGetString(CVAR_GAME_OVERLAY_FONT, "Press Start 2P")); overlay->LoadFont("Fipps Normal", 40.0f, "fonts/Fipps-Regular.otf");
overlay->LoadFont("Fipps Large", 48.0f, "fonts/Fipps-Regular.otf");
overlay->LoadFont("Fipps X-Large", 52.0f, "fonts/Fipps-Regular.otf");
LoadOverlayTextFont();
context->InitAudio({ .SampleRate = 32000, .SampleLength = 1024, .DesiredBuffered = 1680 }); context->InitAudio({ .SampleRate = 32000, .SampleLength = 1024, .DesiredBuffered = 1680 });
@ -513,6 +521,48 @@ void OTRGlobals::ScaleImGui() {
previousImGuiScale = scale; previousImGuiScale = scale;
} }
void OTRGlobals::LoadOverlayTextFont() {
auto overlay = context->GetInstance()->GetWindow()->GetGui()->GetGameOverlay();
switch (CVarGetInteger(CVAR_SETTING("OverlayTextFont"), 0)) {
case 0:
default:
switch (CVarGetInteger(CVAR_SETTING("OverlayTextScale"), 0)) {
case 0:
default:
overlay->SetCurrentFont("Press Start 2P");
break;
case 1:
overlay->SetCurrentFont("Press Start 2P Normal");
break;
case 2:
overlay->SetCurrentFont("Press Start 2P Large");
break;
case 3:
overlay->SetCurrentFont("Press Start 2P X-Large");
break;
}
break;
case 1:
switch (CVarGetInteger(CVAR_SETTING("OverlayTextScale"), 0)) {
case 0:
default:
overlay->SetCurrentFont("Fipps");
break;
case 1:
overlay->SetCurrentFont("Fipps Normal");
break;
case 2:
overlay->SetCurrentFont("Fipps Large");
break;
case 3:
overlay->SetCurrentFont("Fipps X-Large");
break;
}
break;
}
}
ImFont* OTRGlobals::CreateDefaultFontWithSize(float size) { ImFont* OTRGlobals::CreateDefaultFontWithSize(float size) {
auto mImGuiIo = &ImGui::GetIO(); auto mImGuiIo = &ImGui::GetIO();
ImFontConfig fontCfg = ImFontConfig(); ImFontConfig fontCfg = ImFontConfig();

View file

@ -72,6 +72,8 @@ class OTRGlobals {
void ScaleImGui(); void ScaleImGui();
void Initialize(); void Initialize();
void LoadOverlayTextFont();
bool HasMasterQuest(); bool HasMasterQuest();
bool HasOriginal(); bool HasOriginal();
uint32_t GetInterpolationFPS(); uint32_t GetInterpolationFPS();

View file

@ -59,6 +59,18 @@ static const std::unordered_map<int32_t, const char*> bootSequenceLabels = {
{ BOOTSEQUENCE_FILESELECT, "File Select" }, { BOOTSEQUENCE_FILESELECT, "File Select" },
}; };
static std::unordered_map<int32_t, const char*> overlayTextScaleOptions = {
{ 0, "Small" },
{ 1, "Normal" },
{ 2, "Large" },
{ 3, "X-Large" },
};
static std::unordered_map<int32_t, const char*> overlayTextFontOptions = {
{ 0, "Press Start 2P" },
{ 1, "Fipps" },
};
const char* GetGameVersionString(uint32_t index) { const char* GetGameVersionString(uint32_t index) {
uint32_t gameVersion = ResourceMgr_GetGameVersion(index); uint32_t gameVersion = ResourceMgr_GetGameVersion(index);
switch (gameVersion) { switch (gameVersion) {
@ -106,6 +118,8 @@ extern "C" MessageTableEntry* sGerMessageEntryTablePtr;
extern "C" MessageTableEntry* sFraMessageEntryTablePtr; extern "C" MessageTableEntry* sFraMessageEntryTablePtr;
extern "C" MessageTableEntry* sJpnMessageEntryTablePtr; extern "C" MessageTableEntry* sJpnMessageEntryTablePtr;
extern "C" void Overlay_DisplayText_Seconds(int seconds, const char* text);
static const std::array<MessageTableEntry**, LANGUAGE_MAX> messageTables = { static const std::array<MessageTableEntry**, LANGUAGE_MAX> messageTables = {
&sNesMessageEntryTablePtr, &sGerMessageEntryTablePtr, &sFraMessageEntryTablePtr, &sJpnMessageEntryTablePtr &sNesMessageEntryTablePtr, &sGerMessageEntryTablePtr, &sFraMessageEntryTablePtr, &sJpnMessageEntryTablePtr
}; };
@ -456,6 +470,7 @@ void SohMenu::AddMenuSettings() {
path.sidebarName = "Notifications"; path.sidebarName = "Notifications";
path.column = SECTION_COLUMN_1; path.column = SECTION_COLUMN_1;
AddSidebarEntry("Settings", path.sidebarName, 3); AddSidebarEntry("Settings", path.sidebarName, 3);
AddWidget(path, "Notifications Settings", WIDGET_SEPARATOR_TEXT);
AddWidget(path, "Position", WIDGET_CVAR_COMBOBOX) AddWidget(path, "Position", WIDGET_CVAR_COMBOBOX)
.CVar(CVAR_SETTING("Notifications.Position")) .CVar(CVAR_SETTING("Notifications.Position"))
.RaceDisable(false) .RaceDisable(false)
@ -501,6 +516,33 @@ void SohMenu::AddMenuSettings() {
}); });
}) })
.Options(ButtonOptions().Tooltip("Displays a test notification.")); .Options(ButtonOptions().Tooltip("Displays a test notification."));
AddWidget(path, "Overlay Text Settings", WIDGET_SEPARATOR_TEXT);
AddWidget(path, "Overlay Text Size:", WIDGET_CVAR_COMBOBOX)
.CVar(CVAR_SETTING("OverlayTextScale"))
.RaceDisable(false)
.Options(ComboboxOptions()
.ComboMap(overlayTextScaleOptions)
.Tooltip("Changes the font size of Overlay Text.")
.DefaultIndex(0)
.ComponentAlignment(ComponentAlignments::Right)
.LabelPosition(LabelPositions::Far))
.Callback([](WidgetInfo& info) { OTRGlobals::Instance->LoadOverlayTextFont(); });
AddWidget(path, "Overlay Text Font:", WIDGET_CVAR_COMBOBOX)
.CVar(CVAR_SETTING("OverlayTextFont"))
.RaceDisable(false)
.Options(
ComboboxOptions()
.ComboMap(overlayTextFontOptions)
.Tooltip("Changes the font type of Overlay Text.\nNote: Fipps is generally smaller than Press Start 2P")
.DefaultIndex(0)
.ComponentAlignment(ComponentAlignments::Right)
.LabelPosition(LabelPositions::Far))
.Callback([](WidgetInfo& info) { OTRGlobals::Instance->LoadOverlayTextFont(); });
AddWidget(path, "Test Overlay Text", WIDGET_BUTTON)
.RaceDisable(false)
.Callback([](WidgetInfo& info) { Overlay_DisplayText_Seconds(5, "Overlay Text Test"); })
.Options(ButtonOptions().Tooltip("Displays a test Overlay Text."));
} }
} // namespace SohGui } // namespace SohGui