# Copyright (c) 2021 Dominic Msters
# 
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT

# Set up the base CMake stuff.
cmake_minimum_required(VERSION 3.13)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# Set some global flags
add_compile_definitions(
  _CRT_SECURE_NO_WARNINGS=1
  ASSET_PREFIX="assets/"
)

# Do initial set up depending on the build target type.
if(TARGET_TYPE STREQUAL test)
  set(TARGET_NAME test)
elseif(TARGET_TYPE STREQUAL game)
  set(TARGET_NAME ${TARGET_GAME})
else()
  message(FATAL_ERROR "Missing or invalid definition of TARGET_TYPE")
endif()

# Set up the project
project(${TARGET_NAME} VERSION 1.0)
add_executable(${PROJECT_NAME})

# Variables
set(ROOT_DIR "${CMAKE_SOURCE_DIR}")
set(BUILD_DIR "${CMAKE_BINARY_DIR}")
set(TOOLS_DIR "${ROOT_DIR}/tools")
set(ASSETS_SOURCE_DIR "${ROOT_DIR}/assets")
set(ASSETS_BUILD_DIR "${BUILD_DIR}/assets")
set(TEMP_DIR "${BUILD_DIR}/temp")

# Add global sources.
add_subdirectory(lib)

# Setup Platform specific libraries
set(LIBS_PLATFORM "")
if(NOT WIN32)
  list(APPEND LIBS_PLATFORM m)
endif()

# Include tools
add_subdirectory(tools)

# Include the client or the test tools
if(TARGET_TYPE STREQUAL test)
  add_subdirectory(test)
elseif(TARGET_TYPE STREQUAL game)
  add_subdirectory(client)
endif()


# Set up shared assets
tool_copy(shader_textured
  ${ASSETS_SOURCE_DIR}/shared/shaders/textured.vert shaders/textured.vert
  ${ASSETS_SOURCE_DIR}/shared/shaders/textured.frag shaders/textured.frag
)
tool_copy(shader_singlerenderlist
  ${ASSETS_SOURCE_DIR}/shared/shaders/singlerenderlist.vert shaders/singlerenderlist.vert
  ${ASSETS_SOURCE_DIR}/shared/shaders/singlerenderlist.frag shaders/singlerenderlist.frag
)

tool_copy(font_opensans
  ${ASSETS_SOURCE_DIR}/shared/fonts/opensans/OpenSans-Regular.ttf fonts/opensans/OpenSans-Regular.ttf
  ${ASSETS_SOURCE_DIR}/shared/fonts/opensans/OpenSans-Bold.ttf fonts/opensans/OpenSans-Bold.ttf
)

tool_texture(texture_test
  ${ASSETS_SOURCE_DIR}/shared/textures/test_texture.png textures/test_texture
)

tool_copy(locale_en
  ${ASSETS_SOURCE_DIR}/locale/language/en-US.csv locale/language/en-US.csv
)

# Add actual game sources
add_subdirectory(src)