diff --git a/CMakeLists.txt b/CMakeLists.txt index 21530c1..ca6784f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -203,15 +203,17 @@ set(PROJECT_RESOURCES_BINARY_DIR "$/resources") if(EXISTS "${PROJECT_RESOURCES_DIR}") file(GLOB_RECURSE PROJECT_RESOURCE_FILES CONFIGURE_DEPENDS "${PROJECT_RESOURCES_DIR}/*") - add_custom_target(copy_resources ALL - COMMAND ${CMAKE_COMMAND} - -DSRC_DIR="${PROJECT_RESOURCES_DIR}" - -DDST_DIR="${PROJECT_RESOURCES_BINARY_DIR}" - -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/copy_resources.cmake" - WORKING_DIRECTORY "$" - DEPENDS ${PROJECT_RESOURCE_FILES} - COMMENT "Copying resources directory") - add_dependencies(${PROJECT_NAME} copy_resources) + if(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + add_custom_target(copy_resources ALL + COMMAND ${CMAKE_COMMAND} + -DSRC_DIR="${PROJECT_RESOURCES_DIR}" + -DDST_DIR="${PROJECT_RESOURCES_BINARY_DIR}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/copy_resources.cmake" + WORKING_DIRECTORY "$" + DEPENDS ${PROJECT_RESOURCE_FILES} + COMMENT "Copying resources directory") + add_dependencies(${PROJECT_NAME} copy_resources) + endif() set(HAS_PROJECT_RESOURCES TRUE) else() set(HAS_PROJECT_RESOURCES FALSE) @@ -240,12 +242,18 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") if(HAS_PROJECT_RESOURCES) target_link_options(${PROJECT_NAME} PRIVATE "--preload-file" - "${PROJECT_RESOURCES_BINARY_DIR}@resources" + "${PROJECT_RESOURCES_DIR}@resources" ) endif() set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "index" SUFFIX ".html") + + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} + -DBIN_DIR="$" + -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/create_index_zip.cmake" + COMMENT "Creating snivy-web.zip from Emscripten output") else() find_package(OpenGL REQUIRED COMPONENTS OpenGL) target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL) diff --git a/README.md b/README.md index 30b9af2..697a947 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,13 @@ This Is A Video Game Where You Feed The Snivy. ## Build After cloning and enter the repository's directory, make sure to initialize the submodules: - ```git submodule update --init --recursive``` ### Windows Visual Studio is recommended for build. ### Linux + ``` mkdir build cd build @@ -23,4 +23,7 @@ cmake .. make ``` -If using VSCode, several tasks are available to quickly run and build. \ No newline at end of file +If using VSCode, several tasks are available to quickly run and build. + +### Emscripten +Run the VSCode "web" task. Make sure you have the Emscripten SDK accessible at the EMSDK path variable. \ No newline at end of file diff --git a/cmake/create_index_zip.cmake b/cmake/create_index_zip.cmake new file mode 100644 index 0000000..4683078 --- /dev/null +++ b/cmake/create_index_zip.cmake @@ -0,0 +1,28 @@ +if(NOT DEFINED BIN_DIR OR BIN_DIR STREQUAL "") + message(FATAL_ERROR "BIN_DIR is required") +endif() + +set(ARCHIVE_PATH "${BIN_DIR}/snivy-web.zip") +file(REMOVE "${ARCHIVE_PATH}") + +file(GLOB INDEX_OUTPUTS "${BIN_DIR}/index.*") +set(FILES_TO_ZIP "") +foreach(FILE_PATH IN LISTS INDEX_OUTPUTS) + if(NOT FILE_PATH STREQUAL ARCHIVE_PATH) + get_filename_component(FILE_NAME "${FILE_PATH}" NAME) + list(APPEND FILES_TO_ZIP "${FILE_NAME}") + endif() +endforeach() + +if(FILES_TO_ZIP) + execute_process( + COMMAND "${CMAKE_COMMAND}" -E tar cf "snivy-web.zip" --format=zip ${FILES_TO_ZIP} + WORKING_DIRECTORY "${BIN_DIR}" + RESULT_VARIABLE ZIP_RESULT + ) + if(NOT ZIP_RESULT EQUAL 0) + message(FATAL_ERROR "Failed creating ${ARCHIVE_PATH}") + endif() +else() + message(WARNING "No index.* files found in ${BIN_DIR}; skipping snivy-web.zip creation") +endif() diff --git a/screenshots/1.png b/screenshots/1.png index af98050..c639c88 100644 Binary files a/screenshots/1.png and b/screenshots/1.png differ diff --git a/screenshots/2.png b/screenshots/2.png index 7904554..b3a6104 100644 Binary files a/screenshots/2.png and b/screenshots/2.png differ diff --git a/screenshots/3.png b/screenshots/3.png index 5f96853..762c6a7 100644 Binary files a/screenshots/3.png and b/screenshots/3.png differ diff --git a/screenshots/4.png b/screenshots/4.png index 69c5769..3e83511 100644 Binary files a/screenshots/4.png and b/screenshots/4.png differ diff --git a/screenshots/5.png b/screenshots/5.png index 62296d6..56fd45a 100644 Binary files a/screenshots/5.png and b/screenshots/5.png differ