mirror of
https://github.com/k4zmu2a/SpaceCadetPinball.git
synced 2024-12-18 10:37:53 +01:00
parent
18c80a0ff8
commit
e2f3ae66f8
4 changed files with 34 additions and 12 deletions
|
@ -151,6 +151,7 @@ optionsStruct options::Options
|
||||||
{"Debug Overlay AABB", true},
|
{"Debug Overlay AABB", true},
|
||||||
{"FontFileName", ""},
|
{"FontFileName", ""},
|
||||||
{"Language", translations::GetCurrentLanguage()->ShortName},
|
{"Language", translations::GetCurrentLanguage()->ShortName},
|
||||||
|
{"Hide Cursor", false},
|
||||||
};
|
};
|
||||||
|
|
||||||
void options::InitPrimary()
|
void options::InitPrimary()
|
||||||
|
|
|
@ -288,4 +288,5 @@ struct optionsStruct
|
||||||
BoolOption DebugOverlayAabb;
|
BoolOption DebugOverlayAabb;
|
||||||
StringOption FontFileName;
|
StringOption FontFileName;
|
||||||
StringOption Language;
|
StringOption Language;
|
||||||
|
BoolOption HideCursor;
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,6 +49,7 @@ winmain::DurationMs winmain::TargetFrameTime;
|
||||||
optionsStruct& winmain::Options = options::Options;
|
optionsStruct& winmain::Options = options::Options;
|
||||||
winmain::DurationMs winmain::SpinThreshold = DurationMs(0.005);
|
winmain::DurationMs winmain::SpinThreshold = DurationMs(0.005);
|
||||||
WelfordState winmain::SleepState{};
|
WelfordState winmain::SleepState{};
|
||||||
|
int winmain::CursorIdleCounter = 0;
|
||||||
|
|
||||||
int winmain::WinMain(LPCSTR lpCmdLine)
|
int winmain::WinMain(LPCSTR lpCmdLine)
|
||||||
{
|
{
|
||||||
|
@ -353,6 +354,8 @@ void winmain::MainLoop()
|
||||||
|
|
||||||
if (UpdateToFrameCounter >= UpdateToFrameRatio)
|
if (UpdateToFrameCounter >= UpdateToFrameRatio)
|
||||||
{
|
{
|
||||||
|
if (Options.HideCursor && CursorIdleCounter <= 0)
|
||||||
|
ImGui::SetMouseCursor(ImGuiMouseCursor_None);
|
||||||
ImGui_ImplSDL2_NewFrame();
|
ImGui_ImplSDL2_NewFrame();
|
||||||
ImGui_Render_NewFrame();
|
ImGui_Render_NewFrame();
|
||||||
ImGui::NewFrame();
|
ImGui::NewFrame();
|
||||||
|
@ -420,6 +423,8 @@ void winmain::MainLoop()
|
||||||
frameDuration = std::min<DurationMs>(DurationMs(frameEnd - frameStart), 2 * TargetFrameTime);
|
frameDuration = std::min<DurationMs>(DurationMs(frameEnd - frameStart), 2 * TargetFrameTime);
|
||||||
frameStart = frameEnd;
|
frameStart = frameEnd;
|
||||||
UpdateToFrameCounter++;
|
UpdateToFrameCounter++;
|
||||||
|
|
||||||
|
CursorIdleCounter = std::max(CursorIdleCounter - static_cast<int>(frameDuration.count()), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -581,10 +586,6 @@ void winmain::RenderUi()
|
||||||
|
|
||||||
if (ImGui::BeginMenu("Graphics"))
|
if (ImGui::BeginMenu("Graphics"))
|
||||||
{
|
{
|
||||||
if (ImGui::MenuItem("Change Font"))
|
|
||||||
{
|
|
||||||
font_selection::ShowDialog();
|
|
||||||
}
|
|
||||||
if (ImGui::MenuItem(pb::get_rc_string(Msg::Menu1_WindowUniformScale), nullptr, Options.UniformScaling))
|
if (ImGui::MenuItem(pb::get_rc_string(Msg::Menu1_WindowUniformScale), nullptr, Options.UniformScaling))
|
||||||
{
|
{
|
||||||
options::toggle(Menu1::WindowUniformScale);
|
options::toggle(Menu1::WindowUniformScale);
|
||||||
|
@ -640,6 +641,16 @@ void winmain::RenderUi()
|
||||||
{
|
{
|
||||||
UpdateFrameRate();
|
UpdateFrameRate();
|
||||||
}
|
}
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
if (ImGui::MenuItem("Hide Cursor", nullptr, Options.HideCursor))
|
||||||
|
{
|
||||||
|
Options.HideCursor ^= true;
|
||||||
|
}
|
||||||
|
if (ImGui::MenuItem("Change Font..."))
|
||||||
|
{
|
||||||
|
font_selection::ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
@ -832,6 +843,21 @@ int winmain::event_handler(const SDL_Event* event)
|
||||||
if (!options::WaitingForInput() || !inputDown)
|
if (!options::WaitingForInput() || !inputDown)
|
||||||
ImGui_ImplSDL2_ProcessEvent(event);
|
ImGui_ImplSDL2_ProcessEvent(event);
|
||||||
|
|
||||||
|
bool mouseEvent;
|
||||||
|
switch (event->type)
|
||||||
|
{
|
||||||
|
case SDL_MOUSEMOTION:
|
||||||
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
case SDL_MOUSEWHEEL:
|
||||||
|
CursorIdleCounter = 1000;
|
||||||
|
mouseEvent = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mouseEvent = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (ImIO->WantCaptureMouse && !options::WaitingForInput())
|
if (ImIO->WantCaptureMouse && !options::WaitingForInput())
|
||||||
{
|
{
|
||||||
if (mouse_down)
|
if (mouse_down)
|
||||||
|
@ -839,15 +865,8 @@ int winmain::event_handler(const SDL_Event* event)
|
||||||
mouse_down = 0;
|
mouse_down = 0;
|
||||||
SDL_SetWindowGrab(MainWindow, SDL_FALSE);
|
SDL_SetWindowGrab(MainWindow, SDL_FALSE);
|
||||||
}
|
}
|
||||||
switch (event->type)
|
if (mouseEvent)
|
||||||
{
|
|
||||||
case SDL_MOUSEMOTION:
|
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
|
||||||
case SDL_MOUSEBUTTONUP:
|
|
||||||
case SDL_MOUSEWHEEL:
|
|
||||||
return 1;
|
return 1;
|
||||||
default: ;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (ImIO->WantCaptureKeyboard && !options::WaitingForInput())
|
if (ImIO->WantCaptureKeyboard && !options::WaitingForInput())
|
||||||
{
|
{
|
||||||
|
|
|
@ -106,6 +106,7 @@ private:
|
||||||
static unsigned PrevSdlErrorCount;
|
static unsigned PrevSdlErrorCount;
|
||||||
static unsigned gfrOffset;
|
static unsigned gfrOffset;
|
||||||
static float gfrWindow;
|
static float gfrWindow;
|
||||||
|
static int CursorIdleCounter;
|
||||||
|
|
||||||
static void RenderUi();
|
static void RenderUi();
|
||||||
static void RenderFrameTimeDialog();
|
static void RenderFrameTimeDialog();
|
||||||
|
|
Loading…
Reference in a new issue