cmake_minimum_required(VERSION 3.16)
set(CMAKE_CXX_STANDARD 20)
project(Breakout VERSION 1.0.0)

if(WIN32)
  set(MATH_LIBRARY "" CACHE STRING "" FORCE)
endif()

add_executable(Breakout
  "main.cpp"

  "Editor/src/Button.cpp"
  "Editor/src/Blocks.cpp"
  "Editor/src/Actor.cpp"
  "Editor/src/ActorTooltip.cpp"
  "Editor/src/Level.cpp"
  
  "Engine/src/Scene.cpp"
  "Engine/ECS/src/Component.cpp"
  "Engine/ECS/src/CollisionComponent.cpp"
  "Engine/ECS/src/ImageComponent.cpp"
  "Engine/ECS/src/PhysicsComponent.cpp"
  "Engine/ECS/src/InputComponent.cpp"
  "Engine/ECS/src/Commands.cpp"

  # We'll add these later
  # "Breakout/src/BreakoutScene.cpp"
  # "Breakout/src/Ball.cpp"
)

target_compile_definitions(
  Breakout PUBLIC
  WITH_EDITOR
  CHECK_ERRORS

  # We'll use these later
  # DRAW_DEBUG_HELPERS
  # ENABLE_CHEATS
)

target_include_directories(
  Breakout PUBLIC
  ${PROJECT_SOURCE_DIR}
)

set(SDLTTF_VENDORED ON)
set(VENDOR_DIR "${PROJECT_SOURCE_DIR}/vendor")
add_subdirectory(${VENDOR_DIR}/SDL)
add_subdirectory(${VENDOR_DIR}/SDL_image)
add_subdirectory(${VENDOR_DIR}/SDL_ttf)

target_link_libraries(Breakout PRIVATE
  SDL3::SDL3
  SDL3_image::SDL3_image
  SDL3_ttf::SDL3_ttf
)

set(AssetDirectory "${PROJECT_SOURCE_DIR}/Assets")
add_custom_command(
  TARGET Breakout POST_BUILD
  COMMAND
  ${CMAKE_COMMAND} -E copy_if_different
    "$<TARGET_FILE:SDL3::SDL3>"
    "$<TARGET_FILE:SDL3_image::SDL3_image>"
    "$<TARGET_FILE:SDL3_ttf::SDL3_ttf>"
    "$<TARGET_FILE_DIR:Breakout>"

  COMMAND
  ${CMAKE_COMMAND} -E copy_directory_if_different
    "${AssetDirectory}"
    "$<TARGET_FILE_DIR:Breakout>/Assets"
  VERBATIM
)