From 31f24e02eb6c1ec8b13910e46cd2c0326f47d76d Mon Sep 17 00:00:00 2001 From: Hyper <34012267+hyperbx@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:20:35 +0000 Subject: [PATCH] Rename WindowListener to SDLEventListener, reduce virtual functions --- .../patches/ui/frontend_listener.h | 36 +++++++++++-------- UnleashedRecomp/ui/sdl_listener.h | 21 +++++++++++ UnleashedRecomp/ui/window.cpp | 15 ++------ UnleashedRecomp/ui/window.h | 4 +-- UnleashedRecomp/ui/window_listener.h | 25 ------------- 5 files changed, 46 insertions(+), 55 deletions(-) create mode 100644 UnleashedRecomp/ui/sdl_listener.h delete mode 100644 UnleashedRecomp/ui/window_listener.h diff --git a/UnleashedRecomp/patches/ui/frontend_listener.h b/UnleashedRecomp/patches/ui/frontend_listener.h index 3d61698a..da89c737 100644 --- a/UnleashedRecomp/patches/ui/frontend_listener.h +++ b/UnleashedRecomp/patches/ui/frontend_listener.h @@ -1,31 +1,37 @@ #pragma once #include "kernel/memory.h" -#include "ui/window_listener.h" +#include "ui/sdl_listener.h" -class FrontendListener : public WindowListener +class FrontendListener : public SDLEventListener { -private: bool m_isF8KeyDown = false; public: - void OnKeyDown(SDL_Keycode key) override + void OnSDLEvent(SDL_Event* event) override { - if (key == SDLK_F8 && !m_isF8KeyDown) + switch (event->type) { - // アプリケーション設定 / 開発用 / デバッグ / HUD / 全 HUD 描画 - const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26); + case SDL_KEYDOWN: + { + if (event->key.keysym.sym != SDLK_F8 || m_isF8KeyDown) + break; - *ms_IsRenderHud = !*ms_IsRenderHud; // Toggle the entire HUD + // アプリケーション設定 / 開発用 / デバッグ / HUD / 全 HUD 描画 + const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26); - printf("[*] HUD %s\n", *ms_IsRenderHud ? "On" : "Off"); + *ms_IsRenderHud = !*ms_IsRenderHud; - m_isF8KeyDown = true; + printf("[*] HUD %s\n", *ms_IsRenderHud ? "On" : "Off"); + + m_isF8KeyDown = true; + + break; + } + + case SDL_KEYUP: + m_isF8KeyDown = event->key.keysym.sym != SDLK_F8; + break; } } - - void OnKeyUp(SDL_Keycode key) override - { - m_isF8KeyDown = key != SDLK_F8; - } }; diff --git a/UnleashedRecomp/ui/sdl_listener.h b/UnleashedRecomp/ui/sdl_listener.h new file mode 100644 index 00000000..785b774b --- /dev/null +++ b/UnleashedRecomp/ui/sdl_listener.h @@ -0,0 +1,21 @@ +#pragma once + +#include "ui/window.h" + +class ISDLEventListener +{ +public: + virtual ~ISDLEventListener() = default; + virtual void OnSDLEvent(SDL_Event* event) = 0; +}; + +class SDLEventListener : public ISDLEventListener +{ +public: + SDLEventListener() + { + Window::s_eventListeners.emplace_back(this); + } + + void OnSDLEvent(SDL_Event* event) override {} +}; diff --git a/UnleashedRecomp/ui/window.cpp b/UnleashedRecomp/ui/window.cpp index 7c3dabc5..94ddf750 100644 --- a/UnleashedRecomp/ui/window.cpp +++ b/UnleashedRecomp/ui/window.cpp @@ -1,5 +1,5 @@ #include "window.h" -#include "window_listener.h" +#include "sdl_listener.h" #include #include #include @@ -108,20 +108,9 @@ int Window_OnSDLEvent(void*, SDL_Event* event) } } - for (auto listener : Window::s_listeners) - { + for (auto listener : Window::s_eventListeners) listener->OnSDLEvent(event); - if (event->type == SDL_KEYDOWN) - { - listener->OnKeyDown(event->key.keysym.sym); - } - else if (event->type == SDL_KEYUP) - { - listener->OnKeyUp(event->key.keysym.sym); - } - } - return 0; } diff --git a/UnleashedRecomp/ui/window.h b/UnleashedRecomp/ui/window.h index 169f23c2..c4f715d4 100644 --- a/UnleashedRecomp/ui/window.h +++ b/UnleashedRecomp/ui/window.h @@ -7,7 +7,7 @@ #define DEFAULT_WIDTH 1280 #define DEFAULT_HEIGHT 720 -class WindowListener; +class SDLEventListener; class Window { @@ -22,7 +22,7 @@ public: inline static bool s_isFocused; - inline static std::vector s_listeners; + inline static std::vector s_eventListeners; static SDL_Surface* GetIconSurface(void* pIconBmp = nullptr, size_t iconSize = 0) { diff --git a/UnleashedRecomp/ui/window_listener.h b/UnleashedRecomp/ui/window_listener.h deleted file mode 100644 index c7aecc02..00000000 --- a/UnleashedRecomp/ui/window_listener.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "ui/window.h" - -class IWindowListener -{ -public: - virtual ~IWindowListener() = default; - virtual void OnSDLEvent(SDL_Event* event) = 0; - virtual void OnKeyDown(SDL_Keycode key) = 0; - virtual void OnKeyUp(SDL_Keycode key) = 0; -}; - -class WindowListener : public IWindowListener -{ -public: - WindowListener() - { - Window::s_listeners.emplace_back(this); - } - - void OnSDLEvent(SDL_Event* event) override {} - void OnKeyDown(SDL_Keycode key) override {} - void OnKeyUp(SDL_Keycode key) override {} -};