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