cmake_minimum_required(VERSION 3.16)
set(CMAKE_CXX_STANDARD 20)
SET(WITH_EDITOR OFF) 
project(Breakout VERSION 1.0.0)

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

set(SOURCE_FILES
  "main.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"

  "Breakout/src/BreakoutScene.cpp"
  "Breakout/src/Ball.cpp"
)

# Include the editor files only if WITH_EDITOR is ON
if(WITH_EDITOR) 
  list(APPEND SOURCE_FILES 
    "Editor/src/Button.cpp" 
    "Editor/src/Blocks.cpp" 
    "Editor/src/Actor.cpp" 
    "Editor/src/ActorTooltip.cpp" 
    "Editor/src/Level.cpp" 
  ) 
endif() 

add_executable(Breakout
  ${SOURCE_FILES}
)

target_compile_definitions(Breakout PUBLIC
  # CHECK_ERRORS
  # ENABLE_CHEATS
  # DRAW_DEBUG_HELPERS
)

if(WITH_EDITOR) 
  target_compile_definitions(Breakout PUBLIC 
    WITH_EDITOR 
  ) 
endif() 

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
)