cmake_minimum_required(VERSION 3.31) project(Dicewars_Siedler) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(OpenGL REQUIRED) add_subdirectory(lib/glfw) add_library(glad STATIC lib/glad/src/glad.c ) target_include_directories(glad PUBLIC lib/glad/include ) find_package(Freetype REQUIRED) include_directories(${FREETYPE_INCLUDE_DIRS}) add_executable(Dicewars_Siedler src/main.cpp src/engine/core/Window.cpp src/engine/core/Window.h src/engine/platform/glfw/GLFWWindow.cpp src/engine/platform/glfw/GLFWWindow.h src/engine/core/Application.cpp src/engine/core/Application.h src/game/DicewarsApp.cpp src/game/DicewarsApp.h src/engine/renderer/model/RawModel.cpp src/engine/renderer/model/RawModel.h src/engine/renderer/loader/Loader.cpp src/engine/renderer/loader/Loader.h src/engine/renderer/Renderer.cpp src/engine/renderer/Renderer.h src/engine/layer/Layer.cpp src/engine/layer/Layer.h src/game/GameLayer.cpp src/game/GameLayer.h src/engine/renderer/shaders/ShaderProgram.cpp src/engine/renderer/shaders/ShaderProgram.h src/engine/renderer/shaders/StaticShader.cpp src/engine/renderer/shaders/StaticShader.h src/engine/renderer/loader/Texture2D.h src/engine/renderer/loader/TextureLoader.cpp src/engine/renderer/loader/TextureLoader.h src/engine/renderer/textures/ModelTexture.cpp src/engine/renderer/textures/ModelTexture.h src/engine/renderer/model/TexturedModel.cpp src/engine/renderer/model/TexturedModel.h src/engine/toolbox/MathUtils.h src/engine/layer/entities/Entity.cpp src/engine/layer/entities/Entity.h src/engine/layer/entities/Camera.cpp src/engine/layer/entities/Camera.h src/engine/platform/glfw/InputManager.cpp src/engine/platform/glfw/InputManager.h src/engine/renderer/loader/OBJLoader.cpp src/engine/renderer/loader/OBJLoader.h src/engine/layer/entities/Light.cpp src/engine/layer/entities/Light.h src/engine/platform/glfw/MousePicker.cpp src/engine/platform/glfw/MousePicker.h src/game/hexWorld/Map.cpp src/game/hexWorld/Map.h src/game/hexWorld/MapGenerator.cpp src/game/hexWorld/MapGenerator.h src/game/hexWorld/HexModelFactory.cpp src/game/hexWorld/HexModelFactory.h src/engine/renderer/MasterRenderer.cpp src/engine/renderer/MasterRenderer.h src/engine/renderer/TerrainRenderer.cpp src/engine/renderer/TerrainRenderer.h src/engine/renderer/shaders/TerrainShader.cpp src/engine/renderer/shaders/TerrainShader.h src/engine/renderer/loader/AssetManager.cpp src/engine/renderer/loader/AssetManager.h src/game/hexWorld/tileGenerator/HexTileGeneratorStrategy.cpp src/game/hexWorld/tileGenerator/HexTileGeneratorStrategy.h src/game/hexWorld/tileGenerator/ForestTileGenerator.cpp src/game/hexWorld/tileGenerator/ForestTileGenerator.h src/engine/toolbox/Random.cpp src/engine/toolbox/Random.h src/engine/core/ECS/Component.cpp src/engine/core/ECS/Component.h src/engine/core/ECS/TransformComponent.cpp src/engine/core/ECS/TransformComponent.h src/engine/core/ECS/ModelComponent.cpp src/engine/core/ECS/ModelComponent.h src/engine/core/ECS/EntityManager.cpp src/engine/core/ECS/EntityManager.h src/engine/core/ECS/RenderSystem.cpp src/engine/core/ECS/RenderSystem.h src/engine/core/ECS/TileRenderComponent.cpp src/engine/core/ECS/TileRenderComponent.h src/game/hexWorld/ecs/components/TileGameplayComponent.cpp src/game/hexWorld/ecs/components/TileGameplayComponent.h src/game/hexWorld/ecs/components/MapEntityComponent.h src/engine/renderer/components/TerrainRenderingData.h src/game/hexWorld/RessourceType.h src/game/hexWorld/ecs/systems/TileHighlightSystem.cpp src/game/hexWorld/ecs/systems/TileHighlightSystem.h src/game/hexWorld/ecs/components/BuildingComponent.cpp src/game/hexWorld/ecs/components/BuildingComponent.h src/game/hexWorld/ecs/systems/BuildingPlacementSystem.cpp src/game/hexWorld/ecs/systems/BuildingPlacementSystem.h src/game/GameMode.cpp src/game/GameMode.h src/game/player/PlayerInventory.cpp src/game/player/PlayerInventory.h src/game/player/Player.cpp src/game/player/Player.h src/game/hexWorld/ecs/components/OwnerComponent.cpp src/game/hexWorld/ecs/components/OwnerComponent.h src/engine/renderer/model/GUITexture.cpp src/engine/renderer/model/GUITexture.h src/engine/renderer/GUIRenderer.cpp src/engine/renderer/GUIRenderer.h src/game/UILayer.cpp src/game/UILayer.h src/engine/renderer/shaders/GUIShader.cpp src/engine/renderer/shaders/GUIShader.h src/engine/core/gui/uiComponent/UiComponent.cpp src/engine/core/gui/uiComponent/UiComponent.h src/engine/core/gui/uiComponent/Dimensions.h src/engine/core/gui/uiComponent/layout/UiPositioner.cpp src/engine/core/gui/uiComponent/layout/UiPositioner.h src/engine/core/gui/uiMain/UiContainer.cpp src/engine/core/gui/uiMain/UiContainer.h src/engine/core/gui/uiComponent/UiImage.cpp src/engine/core/gui/uiComponent/UiImage.h src/engine/core/gui/uiComponent/UiText.cpp src/engine/core/gui/uiComponent/UiText.h src/engine/core/gui/text/Font.cpp src/engine/core/gui/text/Font.h src/engine/renderer/components/UiRenderBundle.cpp src/engine/renderer/components/UiRenderBundle.h src/engine/renderer/shaders/TextShader.cpp src/engine/renderer/shaders/TextShader.h src/engine/renderer/TextRenderer.cpp src/engine/renderer/TextRenderer.h src/engine/renderer/model/TextQuadModel.cpp src/engine/renderer/model/TextQuadModel.h src/engine/core/gui/uiComponent/layout/LayoutStyle.h src/engine/core/gui/uiComponent/UiButton.cpp src/engine/core/gui/uiComponent/UiButton.h src/engine/renderer/model/GUIText.cpp src/engine/renderer/model/GUIText.h src/game/ui/components/UiRessourceWidget.cpp src/game/ui/components/UiRessourceWidget.h src/game/ui/components/factorys/RessourceWidgetFactory.cpp src/game/ui/components/factorys/RessourceWidgetFactory.h src/game/ui/components/UiInventoryContainer.cpp src/game/ui/components/UiInventoryContainer.h src/game/hexWorld/building/BuildingDefinition.h src/game/hexWorld/building/TemporaryBuildingDefinitionFactory.h src/game/hexWorld/building/BuildingRules.cpp src/game/hexWorld/building/BuildingRules.h src/game/hexWorld/building/BuildingFactory.cpp src/game/hexWorld/building/BuildingFactory.h src/game/hexWorld/building/BuildingConfig.cpp src/game/hexWorld/building/BuildingConfig.h src/engine/toolbox/util.h src/engine/core/events/EventBus.cpp src/engine/core/events/EventBus.h src/game/hexWorld/events/TurnChangedEvent.cpp src/game/hexWorld/events/TurnChangedEvent.h src/game/hexWorld/events/ResourceCollectEvent.cpp src/game/hexWorld/events/ResourceCollectEvent.h src/game/hexWorld/gameplay/TurnSystem.cpp src/game/hexWorld/gameplay/TurnSystem.h src/game/hexWorld/gameplay/TurnState.h src/engine/renderer/model/SubModel.h src/engine/renderer/model/ModelStageConfiguration.cpp src/engine/renderer/model/ModelStageConfiguration.h src/engine/renderer/model/ModelStageCondition.h src/engine/renderer/model/ModelStages.cpp src/engine/renderer/model/ModelStages.h src/engine/toolbox/IndexedMap.cpp src/engine/toolbox/IndexedMap.h src/engine/core/ECS/ModelStateComponent.cpp src/engine/core/ECS/ModelStateComponent.h src/game/hexWorld/ecs/components/ProducingComponent.cpp src/game/hexWorld/ecs/components/ProducingComponent.h src/game/hexWorld/ecs/systems/ProducingSystem.cpp src/game/hexWorld/ecs/systems/ProducingSystem.h src/engine/core/ECS/WorldSpriteComponent.cpp src/engine/core/ECS/WorldSpriteComponent.h src/engine/renderer/WorldSpriteRenderer.cpp src/engine/renderer/WorldSpriteRenderer.h src/engine/renderer/components/WorldSpriteRenderingData.h src/engine/renderer/shaders/WorldSpriteShader.cpp src/engine/renderer/shaders/WorldSpriteShader.h src/engine/core/animations/AnimationCurve.h src/engine/core/animations/AnimationTrack.h src/engine/core/animations/AnimationComponent.cpp src/engine/core/animations/AnimationComponent.h src/engine/core/animations/AnimationSystem.cpp src/engine/core/animations/AnimationSystem.h src/engine/core/EngineTime.cpp src/engine/core/EngineTime.h src/game/hexWorld/ecs/systems/CollectResourceSystem.cpp src/game/hexWorld/ecs/systems/CollectResourceSystem.h src/engine/renderer/model/FramebufferObject.cpp src/engine/renderer/model/FramebufferObject.h src/engine/renderer/MinimapRenderer.cpp src/engine/renderer/MinimapRenderer.h src/engine/renderer/components/MinimapRenderData.h src/engine/renderer/shaders/MinimapShader.cpp src/engine/renderer/shaders/MinimapShader.h src/engine/renderer/model/RenderTargets.cpp src/engine/renderer/model/RenderTargets.h src/engine/renderer/model/GuiTextureBuilder.cpp src/engine/renderer/model/GuiTextureBuilder.h src/game/ui/components/buildingMenu/UiBuildingMenuContainer.cpp src/game/ui/components/buildingMenu/UiBuildingMenuContainer.h src/engine/core/inputsOutputs/stateControl/states/IState.cpp src/engine/core/inputsOutputs/stateControl/states/IState.h src/engine/core/inputsOutputs/stateControl/InputUser.cpp src/engine/core/inputsOutputs/stateControl/InputUser.h src/engine/core/inputsOutputs/inputs/Keyboard.cpp src/engine/core/inputsOutputs/inputs/Keyboard.h src/engine/core/inputsOutputs/inputs/Mouse.cpp src/engine/core/inputsOutputs/inputs/Mouse.h src/engine/core/inputsOutputs/inputs/MouseButton.h src/engine/core/inputsOutputs/stateControl/RegisteredUsers.cpp src/engine/core/inputsOutputs/stateControl/RegisteredUsers.h src/engine/core/inputsOutputs/stateControl/StateManager.cpp src/engine/core/inputsOutputs/stateControl/StateManager.h src/engine/core/inputsOutputs/stateControl/states/State.cpp src/engine/core/inputsOutputs/stateControl/states/State.h src/engine/core/inputsOutputs/stateControl/states/EmptyState.cpp src/engine/core/inputsOutputs/stateControl/states/EmptyState.h src/engine/core/inputsOutputs/stateControl/inputUser/GameInputUser.cpp src/engine/core/inputsOutputs/stateControl/inputUser/GameInputUser.h src/engine/core/inputsOutputs/stateControl/StateRegistry.cpp src/engine/core/inputsOutputs/stateControl/StateRegistry.h src/engine/core/gui/uiComponent/ClickableUiComponent.cpp src/engine/core/gui/uiComponent/ClickableUiComponent.h src/engine/core/inputsOutputs/stateControl/inputUser/UiInputUser.cpp src/engine/core/inputsOutputs/stateControl/inputUser/UiInputUser.h src/engine/core/gui/uiComponent/EventData.cpp src/engine/core/gui/uiComponent/EventData.h src/game/ui/components/buildingMenu/UiBuildingMenuButton.cpp src/game/ui/components/buildingMenu/UiBuildingMenuButton.h src/game/ui/components/buildingMenu/UiBuildingMenuCostContainer.cpp src/game/ui/components/buildingMenu/UiBuildingMenuCostContainer.h src/game/hexWorld/events/BuildingTypeSelectEvent.cpp src/game/hexWorld/events/BuildingTypeSelectEvent.h src/game/hexWorld/ecs/components/UpgradeComponent.cpp src/game/hexWorld/ecs/components/UpgradeComponent.h src/game/hexWorld/ecs/systems/UpgradeSystem.cpp src/game/hexWorld/ecs/systems/UpgradeSystem.h src/game/hexWorld/ecs/systems/SelectionSystem.cpp src/game/hexWorld/ecs/systems/SelectionSystem.h src/engine/core/ECS/RenderStateComponent.cpp src/engine/core/ECS/RenderStateComponent.h src/game/hexWorld/ecs/systems/BuildPreviewSystem.cpp src/game/hexWorld/ecs/systems/BuildPreviewSystem.h src/game/hexWorld/ecs/components/BuildingPreviewComponent.cpp src/game/hexWorld/ecs/components/BuildingPreviewComponent.h src/game/GameWorldSystems.cpp src/game/GameWorldSystems.h src/engine/core/gui/uiComponent/layout/LayoutEngine.h ) target_compile_options(Dicewars_Siedler PRIVATE -Wall -Wextra -Wpedantic -Werror=return-type ) target_include_directories(Dicewars_Siedler PRIVATE lib/glfw/include lib/glm lib/stb_image lib/tinyobjloader lib/nlohmann ) target_link_libraries(Dicewars_Siedler PRIVATE glfw glad OpenGL::GL ${FREETYPE_LIBRARIES} )