Merge branch 'main' into function-pointers

This commit is contained in:
Hyper 2024-11-10 18:55:26 +00:00
commit b0a8166c34
7 changed files with 72 additions and 2 deletions

View file

@ -59,6 +59,7 @@ set(SWA_HID_CXX_SOURCES
)
set(SWA_PATCHES_CXX_SOURCES
"patches/ui/frontend_listener.cpp"
"patches/fps_patches.cpp"
"patches/misc_patches.cpp"
"patches/object_patches.cpp"

View file

@ -5,7 +5,7 @@
class Config
{
public:
inline static std::vector<std::shared_ptr<ConfigDefBase>> Definitions{};
inline static std::vector<ConfigDefBase*> Definitions{};
CONFIG_DEFINE_ENUM("System", ELanguage, Language, ELanguage::English);
CONFIG_DEFINE("System", bool, Hints, true);

View file

@ -0,0 +1,3 @@
#include "frontend_listener.h"
FrontendListener m_frontendListener;

View file

@ -0,0 +1,37 @@
#pragma once
#include "kernel/memory.h"
#include "ui/sdl_listener.h"
class FrontendListener : public SDLEventListener
{
bool m_isF8KeyDown = false;
public:
void OnSDLEvent(SDL_Event* event) override
{
switch (event->type)
{
case SDL_KEYDOWN:
{
if (event->key.keysym.sym != SDLK_F8 || m_isF8KeyDown)
break;
// アプリケーション設定 / 開発用 / デバッグ / HUD / 全 HUD 描画
const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26);
*ms_IsRenderHud = !*ms_IsRenderHud;
printf("[*] HUD %s\n", *ms_IsRenderHud ? "On" : "Off");
m_isF8KeyDown = true;
break;
}
case SDL_KEYUP:
m_isF8KeyDown = event->key.keysym.sym != SDLK_F8;
break;
}
}
};

View file

@ -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 {}
};

View file

@ -1,4 +1,5 @@
#include "window.h"
#include "sdl_listener.h"
#include <config.h>
#include <kernel/function.h>
#include <SDL_syswm.h>
@ -107,6 +108,9 @@ int Window_OnSDLEvent(void*, SDL_Event* event)
}
}
for (auto listener : Window::s_eventListeners)
listener->OnSDLEvent(event);
return 0;
}

View file

@ -7,7 +7,9 @@
#define DEFAULT_WIDTH 1280
#define DEFAULT_HEIGHT 720
struct Window
class SDLEventListener;
class Window
{
public:
inline static SDL_Window* s_pWindow;
@ -20,6 +22,8 @@ public:
inline static bool s_isFocused;
inline static std::vector<SDLEventListener*> s_eventListeners;
static SDL_Surface* GetIconSurface(void* pIconBmp = nullptr, size_t iconSize = 0)
{
auto rw = SDL_RWFromMem(pIconBmp ? pIconBmp : (void*)g_icon, pIconBmp ? iconSize : g_icon_size);