mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-03 00:53:47 -04:00
Merge pull request #700 from TwilitRealm/ira/rmlui-fps
Add FPS counter to RmlUi
This commit is contained in:
@@ -33,6 +33,13 @@ constexpr std::array kCardFileTypes = {
|
||||
"GCI Folder",
|
||||
};
|
||||
|
||||
constexpr std::array kFpsOverlayCornerNames = {
|
||||
"Top Left",
|
||||
"Top Right",
|
||||
"Bottom Left",
|
||||
"Bottom Right",
|
||||
};
|
||||
|
||||
bool try_parse_backend(std::string_view backend, AuroraBackend& outBackend) {
|
||||
if (backend == "auto") {
|
||||
outBackend = BACKEND_AUTO;
|
||||
@@ -430,7 +437,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {
|
||||
});
|
||||
}
|
||||
|
||||
add_tab("Graphics", [this](Rml::Element* content) {
|
||||
add_tab("Video", [this](Rml::Element* content) {
|
||||
auto& leftPane = add_child<Pane>(content, Pane::Type::Controlled);
|
||||
auto& rightPane = add_child<Pane>(content, Pane::Type::Uncontrolled);
|
||||
|
||||
@@ -472,6 +479,54 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {
|
||||
.key = "Pause on Focus Lost",
|
||||
.isDisabled = [] { return IsMobile; },
|
||||
});
|
||||
leftPane.register_control(leftPane.add_select_button({
|
||||
.key = "Show FPS Counter",
|
||||
.getValue =
|
||||
[] {
|
||||
if (!getSettings().video.enableFpsOverlay.getValue()) {
|
||||
return Rml::String{"Off"};
|
||||
}
|
||||
const int idx = getSettings().video.fpsOverlayCorner.getValue();
|
||||
return Rml::String{kFpsOverlayCornerNames[idx]};
|
||||
},
|
||||
.isModified =
|
||||
[] {
|
||||
const auto& enable = getSettings().video.enableFpsOverlay;
|
||||
const auto& corner = getSettings().video.fpsOverlayCorner;
|
||||
return enable.getValue() != enable.getDefaultValue() ||
|
||||
(enable.getValue() && corner.getValue() != corner.getDefaultValue());
|
||||
},
|
||||
}),
|
||||
rightPane, [](Pane& pane) {
|
||||
pane.add_button({
|
||||
.text = "Off",
|
||||
.isSelected =
|
||||
[] { return !getSettings().video.enableFpsOverlay.getValue(); },
|
||||
})
|
||||
.on_pressed([] {
|
||||
mDoAud_seStartMenu(kSoundItemChange);
|
||||
getSettings().video.enableFpsOverlay.setValue(false);
|
||||
config::Save();
|
||||
});
|
||||
for (int i = 0; i < static_cast<int>(kFpsOverlayCornerNames.size()); ++i) {
|
||||
pane.add_button({
|
||||
.text = kFpsOverlayCornerNames[i],
|
||||
.isSelected =
|
||||
[i] {
|
||||
return getSettings().video.enableFpsOverlay.getValue() &&
|
||||
getSettings().video.fpsOverlayCorner.getValue() == i;
|
||||
},
|
||||
})
|
||||
.on_pressed([i] {
|
||||
mDoAud_seStartMenu(kSoundItemChange);
|
||||
getSettings().video.enableFpsOverlay.setValue(true);
|
||||
getSettings().video.fpsOverlayCorner.setValue(i);
|
||||
config::Save();
|
||||
});
|
||||
}
|
||||
pane.add_rml(
|
||||
"<br/>Display the current framerate in a corner of the screen while playing.");
|
||||
});
|
||||
|
||||
leftPane.add_section("Resolution");
|
||||
graphics_tuner_control(*this, leftPane, rightPane,
|
||||
|
||||
Reference in New Issue
Block a user