cmake_minimum_required(VERSION 3.6)

project(MY_APP CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


# Определение путей
set(SOURCE_RES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../resources")
set(TARGET_RES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../src/main/assets/resources")

# Получаем список всех файлов в исходной директории для отслеживания зависимостей
file(GLOB_RECURSE RES_FILES RELATIVE "${SOURCE_RES_DIR}" "${SOURCE_RES_DIR}/*")

set(COPY_COMMANDS "")

foreach(RES_FILE ${RES_FILES})
    set(SRC "${SOURCE_RES_DIR}/${RES_FILE}")
    set(DST "${TARGET_RES_DIR}/${RES_FILE}")

    # Команда копирования конкретного файла, если он изменился
    add_custom_command(
            OUTPUT "${DST}"
            COMMAND ${CMAKE_COMMAND} -E make_directory "${TARGET_RES_DIR}"
            COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC}" "${DST}"
            DEPENDS "${SRC}"
            COMMENT "Syncing resource: ${RES_FILE}"
    )
    list(APPEND RES_OUTPUTS "${DST}")
endforeach()

# Создаем кастомную цель, которая будет запускать процесс копирования
add_custom_target(sync_resources ALL DEPENDS ${RES_OUTPUTS})

set(LUA_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/lua-5.4.8")
file(GLOB LUA_SOURCES "${LUA_SRC_DIR}/*.c")
list(REMOVE_ITEM LUA_SOURCES
        "${LUA_SRC_DIR}/lua.c"
        "${LUA_SRC_DIR}/luac.c"
        "${LUA_SRC_DIR}/onelua.c"
)
add_library(lua_static STATIC ${LUA_SOURCES})
target_include_directories(lua_static PUBLIC "${LUA_SRC_DIR}")



add_library(main SHARED
        SDL_android_main.c
        ../../../../src/main.cpp
        ../../../../src/Game.cpp
        ../../../../src/Game.h
        ../../../../src/Character.cpp
        ../../../../src/Character.h
        ../../../../src/CharacterState.cpp
        ../../../../src/CharacterState.h
        ../../../../src/Environment.cpp
        ../../../../src/Environment.h
        ../../../../src/Localization.cpp
        ../../../../src/Localization.h
        ../../../../src/render/Renderer.cpp
        ../../../../src/render/Renderer.h
        ../../../../src/render/ShaderManager.cpp
        ../../../../src/render/ShaderManager.h
        ../../../../src/render/TextureManager.cpp
        ../../../../src/render/TextureManager.h
        ../../../../src/TextModel.cpp
        ../../../../src/TextModel.h
        ../../../../src/AudioPlayerAsync.cpp
        ../../../../src/AudioPlayerAsync.h
        ../../../../src/BoneAnimatedModelNew.cpp
        ../../../../src/BoneAnimatedModelNew.h
        ../../../../src/render/OpenGlExtensions.cpp
        ../../../../src/render/OpenGlExtensions.h
        ../../../../src/utils/Utils.cpp
        ../../../../src/utils/Utils.h
        ../../../../src/SparkEmitter.cpp
        ../../../../src/SparkEmitter.h
        ../../../../src/TeleportZone.h
        ../../../../src/TeleportZone.cpp
        ../../../../src/utils/TaskManager.cpp
        ../../../../src/utils/TaskManager.h
        ../../../../src/render/FrameBuffer.cpp
        ../../../../src/render/FrameBuffer.h
        ../../../../src/render/ShadowMap.cpp
        ../../../../src/render/ShadowMap.h
        ../../../../src/UiManager.cpp
        ../../../../src/UiManager.h
        ../../../../src/render/TextRenderer.h
        ../../../../src/render/TextRenderer.cpp
        ../../../../src/MenuManager.h
        ../../../../src/MenuManager.cpp
        ../../../../src/Location.h
        ../../../../src/Location.cpp
        ../../../../src/LocationState.h
        ../../../../src/LocationState.cpp
        ../../../../src/LocationEditor.h
        ../../../../src/LocationEditor.cpp
        ../../../../src/NpcCar.h
        ../../../../src/NpcCar.cpp
        ../../../../src/GameConstants.h
        ../../../../src/GameConstants.cpp
        ../../../../src/GameState.h
        ../../../../src/GameState.cpp
        ../../../../src/ScriptEngine.h
        ../../../../src/ScriptEngine.cpp
        ../../../../src/navigation/PathFinder.h
        ../../../../src/navigation/PathFinder.cpp
        ../../../../src/items/GameObjectLoader.h
        ../../../../src/items/GameObjectLoader.cpp
        ../../../../src/items/Item.h
        ../../../../src/items/Item.cpp
        ../../../../src/items/ItemRegistry.h
        ../../../../src/items/ItemRegistry.cpp
        ../../../../src/items/InteractiveObject.h
        ../../../../src/items/InteractiveObject.cpp
        ../../../../src/items/InteractiveObjectState.h
        ../../../../src/dialogue/DialogueTypes.h
        ../../../../src/dialogue/DialogueDatabase.h
        ../../../../src/dialogue/DialogueDatabase.cpp
        ../../../../src/dialogue/DialogueRuntime.h
        ../../../../src/dialogue/DialogueRuntime.cpp
        ../../../../src/dialogue/DialogueOverlay.h
        ../../../../src/dialogue/DialogueOverlay.cpp
        ../../../../src/dialogue/DialogueSystem.h
        ../../../../src/dialogue/DialogueSystem.cpp
        ../../../../src/dialogue/TranslationDatabase.h
        ../../../../src/dialogue/TranslationDatabase.cpp
        ../../../../src/quest/QuestTypes.h
        ../../../../src/quest/QuestJournal.h
        ../../../../src/quest/QuestJournal.cpp
        ../../../../src/cutscene/CutsceneTypes.h
        ../../../../src/cutscene/CutsceneDatabase.h
        ../../../../src/cutscene/CutsceneDatabase.cpp
        ../../../../src/cutscene/CutsceneRuntime.h
        ../../../../src/cutscene/CutsceneRuntime.cpp
        ../../../../src/cutscene/CutsceneOverlay.h
        ../../../../src/cutscene/CutsceneOverlay.cpp
        ../../../../src/render/UiQuad.h
)




find_library(OPENGLES3_LIB GLESv3)

target_link_libraries(main
        ${OPENGLES3_LIB}
        png_static
        z
        SDL2
        SDL2_ttf
        SDL2_mixer
        log
        android
        OpenSLES
        dl
        zip
        lua_static
        #freetype
)

# Подключаем заголовки
target_include_directories(main PRIVATE
        #${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/SDL_ttf-release-2.24.0/external/freetype/include

        #${CMAKE_CURRENT_SOURCE_DIR}/../zlib
        #${CMAKE_CURRENT_SOURCE_DIR}/../libpng
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/eigen-5.0.0
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/boost_1_90_0
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/sol2-3.3.0/include
        #${CMAKE_CURRENT_SOURCE_DIR}/../libzip
)

add_dependencies(main sync_resources)
