diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 7970d2d..432dec5 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -1,4 +1,28 @@ -file(GLOB PRIVATE_SOURCES "*.cpp") +file(GLOB PRIVATE_SOURCES + "*.cpp" + "gui/*.cpp" +) + +if(WHOA_SYSTEM_WIN) + file(GLOB WIN_SOURCES + "gui/win/*.cpp" + ) + list(APPEND PRIVATE_SOURCES ${WIN_SOURCES}) +endif() + +if(WHOA_SYSTEM_MAC) + file(GLOB MAC_SOURCES + "gui/mac/*.cpp" + ) + list(APPEND PRIVATE_SOURCES ${MAC_SOURCES}) +endif() + +if(WHOA_SYSTEM_LINUX) + file(GLOB LINUX_SOURCES + "gui/linux/*.cpp" + ) + list(APPEND PRIVATE_SOURCES ${LINUX_SOURCES}) +endif() add_library(client STATIC ${PRIVATE_SOURCES} diff --git a/src/client/Console.cpp b/src/client/Console.cpp index f16deba..b9cd28d 100644 --- a/src/client/Console.cpp +++ b/src/client/Console.cpp @@ -1,4 +1,5 @@ #include "client/Console.hpp" +#include "client/Gui.hpp" #include "event/Input.hpp" #include "gx/Device.hpp" #include "util/CVar.hpp" @@ -204,4 +205,9 @@ void ConsoleDeviceInitialize(const char* title) { CGxDevice* device = GxDevCreate(api, OsWindowProc, format); // TODO + + auto gxWindow = GxDevWindow(); + OsGuiSetGxWindow(gxWindow); + + // TODO } diff --git a/src/client/Gui.hpp b/src/client/Gui.hpp new file mode 100644 index 0000000..0e43f58 --- /dev/null +++ b/src/client/Gui.hpp @@ -0,0 +1,6 @@ +#ifndef CLIENT_GUI_HPP +#define CLIENT_GUI_HPP + +#include "gui/OsGui.hpp" + +#endif diff --git a/src/client/gui/OsGui.hpp b/src/client/gui/OsGui.hpp new file mode 100644 index 0000000..c7d8da8 --- /dev/null +++ b/src/client/gui/OsGui.hpp @@ -0,0 +1,14 @@ +#ifndef CLIENT_GUI_OS_GUI_HPP +#define CLIENT_GUI_OS_GUI_HPP + +#include + +void* OsGuiGetWindow(int32_t type); + +bool OsGuiIsModifierKeyDown(int32_t key); + +int32_t OsGuiProcessMessage(void* message); + +void OsGuiSetGxWindow(void* window); + +#endif diff --git a/src/client/gui/linux/OsGui.cpp b/src/client/gui/linux/OsGui.cpp new file mode 100644 index 0000000..151cefa --- /dev/null +++ b/src/client/gui/linux/OsGui.cpp @@ -0,0 +1,18 @@ +#include "client/gui/OsGui.hpp" + +void* OsGuiGetWindow(int32_t type) { + return nullptr; +} + +bool OsGuiIsModifierKeyDown(int32_t key) { + // TODO + return false; +} + +int32_t OsGuiProcessMessage(void* message) { + return 0; +} + +void OsGuiSetGxWindow(void* window) { + // TODO +} diff --git a/src/client/gui/mac/OsGui.cpp b/src/client/gui/mac/OsGui.cpp new file mode 100644 index 0000000..151cefa --- /dev/null +++ b/src/client/gui/mac/OsGui.cpp @@ -0,0 +1,18 @@ +#include "client/gui/OsGui.hpp" + +void* OsGuiGetWindow(int32_t type) { + return nullptr; +} + +bool OsGuiIsModifierKeyDown(int32_t key) { + // TODO + return false; +} + +int32_t OsGuiProcessMessage(void* message) { + return 0; +} + +void OsGuiSetGxWindow(void* window) { + // TODO +} diff --git a/src/client/gui/win/OsGui.cpp b/src/client/gui/win/OsGui.cpp new file mode 100644 index 0000000..3d4967d --- /dev/null +++ b/src/client/gui/win/OsGui.cpp @@ -0,0 +1,31 @@ +#include "client/gui/OsGui.hpp" +#include + +static void* s_GxDevWindow; + +void* OsGuiGetWindow(int32_t type) { + switch (type) { + case 0: + return s_GxDevWindow; + case 1: + return GetActiveWindow(); + case 2: + return GetForegroundWindow(); + default: + return nullptr; + } +} + +bool OsGuiIsModifierKeyDown(int32_t key) { + // TODO + return false; +} + +int32_t OsGuiProcessMessage(void* message) { + // TODO + return 0; +} + +void OsGuiSetGxWindow(void* window) { + s_GxDevWindow = window; +} diff --git a/src/event/CMakeLists.txt b/src/event/CMakeLists.txt index 0d619de..0670307 100644 --- a/src/event/CMakeLists.txt +++ b/src/event/CMakeLists.txt @@ -33,6 +33,7 @@ target_include_directories(event target_link_libraries(event PRIVATE + client gx PUBLIC common diff --git a/src/event/Input.hpp b/src/event/Input.hpp index 381f2c3..b899d39 100644 --- a/src/event/Input.hpp +++ b/src/event/Input.hpp @@ -54,10 +54,6 @@ void IEvtInputSetMouseMode(EvtContext* context, MOUSEMODE mode, uint32_t holdBut const char* KeyCodeToString(KEY key); -bool OsGuiIsModifierKeyDown(int32_t key); - -int32_t OsGuiProcessMessage(void* message); - int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param2, int32_t* param3); void OsInputInitialize(); diff --git a/src/event/linux/Input.cpp b/src/event/linux/Input.cpp index 1d746a5..b6b8f7f 100644 --- a/src/event/linux/Input.cpp +++ b/src/event/linux/Input.cpp @@ -1,14 +1,5 @@ #include "event/Input.hpp" -bool OsGuiIsModifierKeyDown(int32_t key) { - // TODO - return false; -} - -int32_t OsGuiProcessMessage(void* message) { - return 0; -} - int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param2, int32_t* param3) { // TODO return 0; diff --git a/src/event/mac/Input.cpp b/src/event/mac/Input.cpp index 0fb3bde..b55e1f7 100644 --- a/src/event/mac/Input.cpp +++ b/src/event/mac/Input.cpp @@ -1,15 +1,6 @@ #include "event/Input.hpp" #include -bool OsGuiIsModifierKeyDown(int32_t key) { - // TODO - return false; -} - -int32_t OsGuiProcessMessage(void* message) { - return 0; -} - int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param2, int32_t* param3) { // TODO // Unknown logic diff --git a/src/event/win/Input.cpp b/src/event/win/Input.cpp index c7ccd5f..cc46fa5 100644 --- a/src/event/win/Input.cpp +++ b/src/event/win/Input.cpp @@ -1,4 +1,5 @@ #include "event/Input.hpp" +#include "client/Gui.hpp" #include #include @@ -231,16 +232,6 @@ int32_t HandleMouseUp(uint32_t message, uintptr_t wparam, bool* xbutton, HWND hw return 1; } -bool OsGuiIsModifierKeyDown(int32_t key) { - // TODO - return false; -} - -int32_t OsGuiProcessMessage(void* message) { - // TODO - return 0; -} - int32_t OsInputGet(OSINPUT* id, int32_t* param0, int32_t* param1, int32_t* param2, int32_t* param3) { // TODO window rect comparisons