Kinda crappy initial controller support

This commit is contained in:
Luke Street
2026-04-26 21:01:32 -06:00
parent a886f8a2df
commit 23a91a37be
5 changed files with 120 additions and 19 deletions
+31 -2
View File
@@ -56,6 +56,21 @@ ImGuiWindow* FindDragScrollWindow(ImGuiWindow* window) {
}
return nullptr;
}
void FocusLastMenuBarItem() {
ImGuiContext& g = *ImGui::GetCurrentContext();
ImGuiWindow* window = ImGui::GetCurrentWindow();
const ImGuiID itemId = g.LastItemData.ID;
if (window == nullptr || itemId == 0) {
return;
}
ImGui::FocusWindow(window);
ImGui::SetNavID(itemId, ImGuiNavLayer_Menu, g.CurrentFocusScopeId,
ImGui::WindowRectAbsToRel(window, g.LastItemData.NavRect));
ImGui::SetNavCursorVisibleAfterMove();
g.NavHighlightItemUnderNav = true;
}
} // namespace
namespace dusk {
@@ -329,7 +344,17 @@ namespace dusk {
}
m_isHidden = !getSettings().backend.duskMenuOpen;
bool showMenu = !dusk::IsGameLaunched || !CheckMenuViewToggle(ImGuiKey_F1, m_isHidden);
if (dusk::IsGameLaunched) {
if (ImGui::IsKeyPressed(ImGuiKey_F1)) {
m_isHidden = !m_isHidden;
}
if (ImGui::IsKeyPressed(ImGuiKey_GamepadBack)) {
m_isHidden = !m_isHidden;
m_focusMenuBar = !m_isHidden;
}
}
bool showMenu = !dusk::IsGameLaunched || !m_isHidden;
if (dusk::IsGameLaunched) {
const bool menuOpen = !m_isHidden;
if (getSettings().backend.duskMenuOpen != menuOpen) {
@@ -343,6 +368,10 @@ namespace dusk {
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.0f, 0.0f, 0.0f, 0.0f));
if (showMenu && ImGui::BeginMainMenuBar()) {
m_menuGame.draw();
if (m_focusMenuBar) {
FocusLastMenuBarItem();
m_focusMenuBar = false;
}
m_menuTools.draw();
const auto fpsLabel =
@@ -367,7 +396,7 @@ namespace dusk {
if (dusk::IsGameLaunched && !m_isLaunchInitialized) {
m_toasts.emplace_back(ImGui::GetIO().MouseSource == ImGuiMouseSource_TouchScreen ?
"Tap to toggle menu"s :
"Press F1 to toggle menu"s,
"Press F1 or Minus/Back to toggle menu"s,
2.5f);
m_isLaunchInitialized = true;
if (getSettings().game.liveSplitEnabled) {