diff --git a/CMakeLists.txt b/CMakeLists.txt index 0399393..06f4116 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.4) +include(cmake/resource.cmake) + project(engine) project(player) project(server) @@ -24,21 +26,26 @@ add_library(engine STATIC src/include/engine/network/Guid.hpp ) +create_resources(rsc/client ${CMAKE_BINARY_DIR}/client_rsc.h) qt_add_executable(player src/client/player/main.cpp + + ${CMAKE_BINARY_DIR}/client_rsc.c ) +create_resources(rsc/server ${CMAKE_BINARY_DIR}/server_rsc.h) add_executable(server src/client/server/main.cpp ) +create_resources(rsc/studio ${CMAKE_BINARY_DIR}/studio_rsc.h) qt_add_executable(studio src/client/studio/StudioWindow.cpp src/include/client/studio/StudioWindow.hpp src/client/studio/main.cpp ) -target_include_directories(engine PUBLIC src/include) +target_include_directories(engine PUBLIC src/include ${CMAKE_BINARY_DIR}) target_link_libraries(engine PUBLIC ${BOOST_LIBRARIES}) set(QT6_LIBRARIES_INCL Qt6::Core Qt6::Gui Qt6::Widgets Qt6::OpenGLWidgets) diff --git a/cmake/resource.cmake b/cmake/resource.cmake new file mode 100644 index 0000000..f23c3b9 --- /dev/null +++ b/cmake/resource.cmake @@ -0,0 +1,11 @@ +function(create_resources dir output) + file(WRITE ${output} "") + file(GLOB bins ${dir}/*) + foreach(bin ${bins}) + string(REGEX MATCH "([^/]+)$" filename ${bin}) + string(REGEX REPLACE "\\.| |-" "_" filename ${filename}) + file(READ ${bin} filedata HEX) + string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata}) + file(APPEND ${output} "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned long long ${filename}_size = sizeof(${filename});\n") + endforeach() +endfunction() \ No newline at end of file diff --git a/rsc/README b/rsc/README new file mode 100644 index 0000000..8483602 --- /dev/null +++ b/rsc/README @@ -0,0 +1,3 @@ +# /rsc + +These are files that will be embedded in their respective projects. \ No newline at end of file diff --git a/src/client/player/icon.png b/rsc/client/icon.png similarity index 100% rename from src/client/player/icon.png rename to rsc/client/icon.png diff --git a/src/client/server/icon.png b/rsc/server/icon.png similarity index 100% rename from src/client/server/icon.png rename to rsc/server/icon.png diff --git a/src/client/studio/icon.png b/rsc/studio/icon.png similarity index 100% rename from src/client/studio/icon.png rename to rsc/studio/icon.png diff --git a/src/client/studio/StudioWindow.cpp b/src/client/studio/StudioWindow.cpp index 57cb122..a65537d 100644 --- a/src/client/studio/StudioWindow.cpp +++ b/src/client/studio/StudioWindow.cpp @@ -1,9 +1,14 @@ #include +#include "studio_rsc.h" StudioWindow::StudioWindow() { setWindowTitle(QString("RBXNU Studio")); - setWindowIcon(QIcon(":/content/images/icon.png")); + + QPixmap icon_pixmap = QPixmap(); + icon_pixmap.loadFromData(icon_png, icon_png_size); + + setWindowIcon(QIcon(icon_pixmap)); } void StudioWindow::closeEvent(QCloseEvent* event)