diff --git a/.github/workflows/doxygen.yaml b/.github/workflows/doxygen.yaml
new file mode 100644
index 0000000..43692db
--- /dev/null
+++ b/.github/workflows/doxygen.yaml
@@ -0,0 +1,24 @@
+on:
+ push:
+ branches: [ main ]
+
+permissions:
+ contents: write
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: 'true' # might need recursive, tbd
+ - name: Doxygen Action
+ uses: mattnotmitt/doxygen-action@v1.1.0
+ with:
+ doxyfile-path: 'docs/Doxyfile'
+ - name: Deploy
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./docs/html
diff --git a/.gitignore b/.gitignore
index 31d3def..f50581f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,7 +24,6 @@ build/
*.app
# Generated by Visual Studio
-.vscode/
.vs/
*.suo
*.user
@@ -56,7 +55,22 @@ build/
# Sublime Text
*.sublime-workspace
-*.sublime-project
+
+# Created by https://www.gitignore.io/api/visualstudiocode
+# Edit at https://www.gitignore.io/?templates=visualstudiocode
+
+### VisualStudioCode ###
+.vscode/* # Maybe .vscode/**/* instead - see comments
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+### VisualStudioCode Patch ###
+# Ignore all local history of files
+**/.history
+
+# End of https://www.gitignore.io/api/visualstudiocode
# macOS
.DS_Store
@@ -75,3 +89,7 @@ Desktop.ini
compile_commands.json
*.puml
+
+docs/latex/
+docs/html/
+docs/diagrams/
diff --git a/.gitmodules b/.gitmodules
index 3ae9513..57f7b27 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -14,6 +14,12 @@
path = extern/SDL_ttf
url = https://github.com/libsdl-org/SDL_ttf.git
branch = release-2.22.x
+[submodule "extern/tmxlite"]
+ path = extern/tmxlite
+ url = https://github.com/fallahn/tmxlite.git
+[submodule "docs/doxygen-awesome-css"]
+ path = docs/doxygen-awesome-css
+ url = https://github.com/jothepro/doxygen-awesome-css.git
[submodule "extern/magic_enum"]
path = extern/magic_enum
url = https://github.com/Neargye/magic_enum.git
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..4de5278
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,17 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "debug",
+ "type": "cppdbg",
+ "miDebuggerPath": "c:\\mingw64\\bin\\gdb.exe",
+ "request": "launch",
+ "program": "${workspaceFolder}/build/SDL_Minigame.exe",
+ "cwd": "${workspaceFolder}",
+ "preLaunchTask": "build-debug"
+ }
+ ]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..10708b6
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "cmake.configureOnOpen": true,
+ "editor.tabSize": 4,
+ "editor.insertSpaces": true,
+}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..6647c0b
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,67 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "shell",
+ "label": "build-engine-debug",
+ "command": "cd build; cmake -DCMAKE_BUILD_TYPE=Debug; cmake --build .",
+ "problemMatcher": [],
+ "group": "build"
+ },
+ {
+ "type": "shell",
+ "label": "build-engine",
+ "command": "cd build; cmake -DCMAKE_BUILD_TYPE=Release; cmake --build .",
+ "problemMatcher": [],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ },
+ {
+ "type": "docker-build",
+ "label": "build-doxygen",
+ "dockerBuild": {
+ "context": "${workspaceRoot}/docs/docker",
+ "tag": "vego_doxygen-docker",
+ },
+ "problemMatcher": [],
+ },
+ {
+ "type": "docker-run",
+ "label": "gen-doxygen",
+ "dockerRun": {
+ "image": "vego_doxygen-docker",
+ "remove": true,
+ "volumes": [
+ {
+ "localPath": "${workspaceFolder}",
+ "containerPath": "/source"
+ },
+ {
+ "localPath": "${workspaceFolder}/docs",
+ "containerPath": "/output"
+ },
+ {
+ "localPath": "${workspaceFolder}/docs/Doxyfile",
+ "containerPath": "/Doxyfile"
+ },
+ ]
+ },
+ "problemMatcher": [],
+ },
+ {
+ "type": "process",
+ "label": "open-doxygen",
+ "command": "explorer",
+ "windows": {
+ "command": "explorer.exe"
+ },
+ "args": ["${workspaceFolder}\\docs\\html\\index.html"],
+ "problemMatcher": [],
+ "dependsOn": "gen-doxygen",
+ }
+ ]
+}
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 24a3f77..4f6988c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15)
project(engine)
-set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(ENGINE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
@@ -17,10 +17,13 @@ set(SDL2TTF_VENDORED ON)
set(SDL2_SOURCE_DIR “${ENGINE_SOURCE_DIR}/extern/SDL”)
+set(TMXLITE_STATIC_LIB TRUE)
+
add_subdirectory(extern/SDL EXCLUDE_FROM_ALL)
add_subdirectory(extern/SDL_image EXCLUDE_FROM_ALL)
add_subdirectory(extern/SDL_mixer EXCLUDE_FROM_ALL)
add_subdirectory(extern/SDL_ttf EXCLUDE_FROM_ALL)
+add_subdirectory(extern/tmxlite/tmxlite EXCLUDE_FROM_ALL)
add_subdirectory(extern/magic_enum EXCLUDE_FROM_ALL)
file(GLOB_RECURSE SOURCES ${ENGINE_SOURCE_DIR}/src/*.cpp)
@@ -35,10 +38,12 @@ target_link_libraries(${PROJECT_NAME} PUBLIC # should be private when all SDL fu
SDL2_mixer::SDL2_mixer-static
SDL2_ttf::SDL2_ttf-static
magic_enum::magic_enum
+ tmxlite
)
if(CMAKE_BUILD_TYPE MATCHES "Debug")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") # -fsanitize=address -fno-omit-frame-pointer")
+ #target_link_libraries(${PROJECT_NAME} PRIVATE "-fsanitize=address")
endif()
# link/copy compile commands to root dir
diff --git a/README.md b/README.md
index bc145bd..ced168c 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,35 @@
-##### Compiling:
+# VEGO-Engine
+
+A **VE**ry **GO**od engine, to develop small, lightweight minigames without calling all those SDL functions yourself. This project orginates as a university project at UAS Technikum Wien.
+
+## Getting started
+
+### Compiling
+
+To compile this projects the following prerequisites need to be met:
+
+- A C++ compiler, for example GCC
+ - On Windows you can use GCC via [MinGW](https://www.mingw-w64.org/)
+- CMake
+
+The project can be cloned and compiled with the following commands:
```sh
-git submodule update --init --recursive # only needed once
+git clone --recurse-submodules -j8 https://github.com/VEGO-Engine/Engine.git
cmake -S . -B build
cmake --build build
```
-For Windows systems using MinGW the flag `-G "MinGW Makefiles"` has to be specified
-The executable can be found as `build/SDL_Minigame` after building
+Depending on the system, you might need to specify which generator to use, for example on a Windows system using MinGW:
+
+```sh
+git clone --recurse-submodules -j8 https://github.com/VEGO-Engine/Engine.git
+cmake -S . -B build -G "MinGW Makefiles"
+cmake --build build
+```
+
+Compiling the whole project might take a while, but the Engine by itself will not build to an executable. To do that you can compile the [project template](https://github.com/VEGO-Engine/Project_Template). If the template compiles without any errors, you can use the project template to start working on your own game.
+
+### Usage
+
+As mentioned above, we provide a [project template](https://github.com/VEGO-Engine/Project_Template). To use the template, simply clone it and start working. You can change the name for your project freely, see the documentation on the template for further information. To push to your own remote, create a new repository on the platform of your choice, and edit origin in the local git repository.
diff --git a/assets/Map.aseprite b/assets/Map.aseprite
deleted file mode 100644
index 7cb0feb..0000000
Binary files a/assets/Map.aseprite and /dev/null differ
diff --git a/assets/MapNew-Sheet.aseprite b/assets/MapNew-Sheet.aseprite
deleted file mode 100644
index 7f27b16..0000000
Binary files a/assets/MapNew-Sheet.aseprite and /dev/null differ
diff --git a/assets/MapNew.aseprite b/assets/MapNew.aseprite
deleted file mode 100644
index fb12db2..0000000
Binary files a/assets/MapNew.aseprite and /dev/null differ
diff --git a/assets/MapNew.json b/assets/MapNew.json
deleted file mode 100644
index f7526fc..0000000
--- a/assets/MapNew.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{ "frames": [
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 32, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 64, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 96, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 128, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 160, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 192, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 224, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 256, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- },
- {
- "filename": "MapNew.aseprite",
- "frame": { "x": 288, "y": 0, "w": 32, "h": 32 },
- "rotated": false,
- "trimmed": false,
- "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
- "sourceSize": { "w": 32, "h": 32 },
- "duration": 100
- }
- ],
- "meta": {
- "app": "https://www.aseprite.org/",
- "version": "1.3.2-x64",
- "format": "RGBA8888",
- "size": { "w": 320, "h": 32 },
- "scale": "1",
- "frameTags": [
- ],
- "layers": [
- ],
- "slices": [
- ]
- }
-}
diff --git a/assets/MapNewBackup.aseprite b/assets/MapNewBackup.aseprite
deleted file mode 100644
index fb12db2..0000000
Binary files a/assets/MapNewBackup.aseprite and /dev/null differ
diff --git a/assets/MapTest.aseprite b/assets/MapTest.aseprite
deleted file mode 100644
index c047008..0000000
Binary files a/assets/MapTest.aseprite and /dev/null differ
diff --git a/assets/Player1Victory.png b/assets/Player1Victory.png
deleted file mode 100644
index f50a386..0000000
Binary files a/assets/Player1Victory.png and /dev/null differ
diff --git a/assets/Player2Victory.png b/assets/Player2Victory.png
deleted file mode 100644
index 7a20be3..0000000
Binary files a/assets/Player2Victory.png and /dev/null differ
diff --git a/assets/SDL_map_test.txt b/assets/SDL_map_test.txt
deleted file mode 100644
index 809f2e3..0000000
--- a/assets/SDL_map_test.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,2,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,2,2,2,3
-3,3,3,2,3,3,3,3,2,3,7,1,1,1,9,3,3,3,3,3,3,3,2,2,3
-3,3,2,2,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,2,2,2,3,3,3,3,3,7,1,1,1,9,3,3,2,3,3,3,3,3,3,3
-3,3,2,2,2,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,3,2,2,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,3,3,2,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,2,3,3,3,3
-3,3,3,2,2,3,3,3,3,3,7,1,1,1,9,3,3,3,3,2,2,3,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,2,2,2,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,2,2,3,3,3,3
-3,3,3,3,3,3,3,2,3,3,7,1,1,1,9,3,2,3,3,2,3,3,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,2,3,3,3,3,3,3,3,3
-2,2,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,2,2,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
-3,3,3,3,3,3,3,3,3,3,7,1,1,1,9,3,3,3,3,3,3,3,3,3,3
diff --git a/assets/VictoryBackup.aseprite b/assets/VictoryBackup.aseprite
deleted file mode 100644
index b53cd97..0000000
Binary files a/assets/VictoryBackup.aseprite and /dev/null differ
diff --git a/assets/atk_speed_powerup.png b/assets/atk_speed_powerup.png
deleted file mode 100644
index 9bcce69..0000000
Binary files a/assets/atk_speed_powerup.png and /dev/null differ
diff --git a/assets/cat.png b/assets/cat.png
deleted file mode 100644
index 4b52f0f..0000000
Binary files a/assets/cat.png and /dev/null differ
diff --git a/assets/characterSelection.png b/assets/characterSelection.png
deleted file mode 100644
index 68e958a..0000000
Binary files a/assets/characterSelection.png and /dev/null differ
diff --git a/assets/chicken_gentleman_spritesheet.png b/assets/chicken_gentleman_spritesheet.png
deleted file mode 100644
index 848c426..0000000
Binary files a/assets/chicken_gentleman_spritesheet.png and /dev/null differ
diff --git a/assets/chicken_knight_spritesheet.png b/assets/chicken_knight_spritesheet.png
deleted file mode 100644
index 2304ae6..0000000
Binary files a/assets/chicken_knight_spritesheet.png and /dev/null differ
diff --git a/assets/chicken_mlady_spritesheet.png b/assets/chicken_mlady_spritesheet.png
deleted file mode 100644
index c075990..0000000
Binary files a/assets/chicken_mlady_spritesheet.png and /dev/null differ
diff --git a/assets/chicken_neutral.png b/assets/chicken_neutral.png
deleted file mode 100644
index 8a68462..0000000
Binary files a/assets/chicken_neutral.png and /dev/null differ
diff --git a/assets/chicken_neutral_knight.png b/assets/chicken_neutral_knight.png
deleted file mode 100644
index 1cf69c9..0000000
Binary files a/assets/chicken_neutral_knight.png and /dev/null differ
diff --git a/assets/chicken_neutral_mlady.png b/assets/chicken_neutral_mlady.png
deleted file mode 100644
index 3973d7d..0000000
Binary files a/assets/chicken_neutral_mlady.png and /dev/null differ
diff --git a/assets/chicken_neutral_wizard.png b/assets/chicken_neutral_wizard.png
deleted file mode 100644
index aba3980..0000000
Binary files a/assets/chicken_neutral_wizard.png and /dev/null differ
diff --git a/assets/chicken_spritesheet.png b/assets/chicken_spritesheet.png
deleted file mode 100644
index ba003eb..0000000
Binary files a/assets/chicken_spritesheet.png and /dev/null differ
diff --git a/assets/chicken_wizard_spritesheet.png b/assets/chicken_wizard_spritesheet.png
deleted file mode 100644
index 8694c93..0000000
Binary files a/assets/chicken_wizard_spritesheet.png and /dev/null differ
diff --git a/assets/chicken_wizzard_spritesheet.png b/assets/chicken_wizzard_spritesheet.png
deleted file mode 100644
index 27e8796..0000000
Binary files a/assets/chicken_wizzard_spritesheet.png and /dev/null differ
diff --git a/assets/cow.png b/assets/cow.png
deleted file mode 100644
index 956895f..0000000
Binary files a/assets/cow.png and /dev/null differ
diff --git a/assets/dirt.png b/assets/dirt.png
deleted file mode 100644
index b60025b..0000000
Binary files a/assets/dirt.png and /dev/null differ
diff --git a/assets/egg.png b/assets/egg.png
deleted file mode 100644
index f0a12bf..0000000
Binary files a/assets/egg.png and /dev/null differ
diff --git a/assets/grass.png b/assets/grass.png
deleted file mode 100644
index b096692..0000000
Binary files a/assets/grass.png and /dev/null differ
diff --git a/assets/grass_water_left.png b/assets/grass_water_left.png
deleted file mode 100644
index 6a22a75..0000000
Binary files a/assets/grass_water_left.png and /dev/null differ
diff --git a/assets/grass_water_right.png b/assets/grass_water_right.png
deleted file mode 100644
index fa75ce7..0000000
Binary files a/assets/grass_water_right.png and /dev/null differ
diff --git a/assets/heart.png b/assets/heart.png
deleted file mode 100644
index 867809b..0000000
Binary files a/assets/heart.png and /dev/null differ
diff --git a/assets/heart_powerup.png b/assets/heart_powerup.png
deleted file mode 100644
index 0a2a92d..0000000
Binary files a/assets/heart_powerup.png and /dev/null differ
diff --git a/assets/iconImage.bmp b/assets/iconImage.bmp
deleted file mode 100644
index 6eddbef..0000000
Binary files a/assets/iconImage.bmp and /dev/null differ
diff --git a/assets/movement_speed_powerup.png b/assets/movement_speed_powerup.png
deleted file mode 100644
index e0876ec..0000000
Binary files a/assets/movement_speed_powerup.png and /dev/null differ
diff --git a/assets/sound/background_music.mp3 b/assets/sound/background_music.mp3
deleted file mode 100644
index f79cd6c..0000000
Binary files a/assets/sound/background_music.mp3 and /dev/null differ
diff --git a/assets/sound/steps.wav b/assets/sound/steps.wav
deleted file mode 100644
index a060c29..0000000
Binary files a/assets/sound/steps.wav and /dev/null differ
diff --git a/assets/sound/throw_egg.wav b/assets/sound/throw_egg.wav
deleted file mode 100644
index 67dc0e7..0000000
Binary files a/assets/sound/throw_egg.wav and /dev/null differ
diff --git a/assets/startscreen.png b/assets/startscreen.png
deleted file mode 100644
index a1fe40d..0000000
Binary files a/assets/startscreen.png and /dev/null differ
diff --git a/assets/stone.png b/assets/stone.png
deleted file mode 100644
index 4798d7b..0000000
Binary files a/assets/stone.png and /dev/null differ
diff --git a/assets/title_screen.png b/assets/title_screen.png
deleted file mode 100644
index e8bb2f3..0000000
Binary files a/assets/title_screen.png and /dev/null differ
diff --git a/assets/title_screen_backup.aseprite b/assets/title_screen_backup.aseprite
deleted file mode 100644
index 21d6030..0000000
Binary files a/assets/title_screen_backup.aseprite and /dev/null differ
diff --git a/assets/water.png b/assets/water.png
deleted file mode 100644
index 88dfbeb..0000000
Binary files a/assets/water.png and /dev/null differ
diff --git a/assets/water1.ase b/assets/water1.ase
deleted file mode 100644
index 86e75e3..0000000
Binary files a/assets/water1.ase and /dev/null differ
diff --git a/assets/water1.png b/assets/water1.png
deleted file mode 100644
index 7ef949c..0000000
Binary files a/assets/water1.png and /dev/null differ
diff --git a/Doxyfile b/docs/Doxyfile
similarity index 98%
rename from Doxyfile
rename to docs/Doxyfile
index f3a09ee..a1de95c 100644
--- a/Doxyfile
+++ b/docs/Doxyfile
@@ -42,13 +42,13 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.
-PROJECT_NAME = "My Project"
+PROJECT_NAME = "VEGO-Engine"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER =
+PROJECT_NUMBER = 0.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -67,14 +67,14 @@ PROJECT_LOGO =
# when the HTML document is shown. Doxygen will copy the logo to the output
# directory.
-PROJECT_ICON =
+PROJECT_ICON = assets/chicken_neutral_knight.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY =
+OUTPUT_DIRECTORY = docs
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
@@ -396,7 +396,7 @@ AUTOLINK_SUPPORT = YES
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
-BUILTIN_STL_SUPPORT = NO
+BUILTIN_STL_SUPPORT = YES
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
@@ -842,7 +842,7 @@ CITE_BIB_FILES =
# messages are off.
# The default value is: NO.
-QUIET = NO
+QUIET = YES
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
@@ -949,7 +949,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
-INPUT =
+INPUT = ./include ./src
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -989,63 +989,15 @@ INPUT_FILE_ENCODING =
# be provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cxxm \
- *.cpp \
- *.cppm \
- *.ccm \
- *.c++ \
- *.c++m \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.idl \
- *.ddl \
- *.odl \
+FILE_PATTERNS = *.cpp \
*.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.ixx \
- *.l \
- *.cs \
- *.d \
- *.php \
- *.php4 \
- *.php5 \
- *.phtml \
- *.inc \
- *.m \
- *.markdown \
- *.md \
- *.mm \
- *.dox \
- *.py \
- *.pyw \
- *.f90 \
- *.f95 \
- *.f03 \
- *.f08 \
- *.f18 \
- *.f \
- *.for \
- *.vhd \
- *.vhdl \
- *.ucf \
- *.qsf \
- *.ice
+ *.hpp
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.
-RECURSIVE = NO
+RECURSIVE = YES
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
@@ -1084,14 +1036,17 @@ EXCLUDE_SYMBOLS =
# that contain example code fragments that are included (see the \include
# command).
-EXAMPLE_PATH =
+EXAMPLE_PATH = ./include \
+ ./src
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
-EXAMPLE_PATTERNS = *
+EXAMPLE_PATTERNS = *.cpp \
+ *.h \
+ *.hpp
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
@@ -1325,7 +1280,7 @@ HTML_FILE_EXTENSION = .html
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_HEADER =
+HTML_HEADER = docs/header.html
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard
@@ -1365,7 +1320,10 @@ HTML_STYLESHEET =
# documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_STYLESHEET =
+HTML_EXTRA_STYLESHEET = docs/doxygen-awesome-css/doxygen-awesome.css \
+ docs/doxygen-awesome-css/doxygen-awesome-sidebar-only.css \
+ docs/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css \
+ docs/custom.css
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
@@ -1375,7 +1333,10 @@ HTML_EXTRA_STYLESHEET =
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_FILES =
+HTML_EXTRA_FILES = docs/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js \
+ docs/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js \
+ docs/doxygen-awesome-css/doxygen-awesome-paragraph-link.js \
+ docs/doxygen-awesome-css/doxygen-awesome-interactive-toc.js
# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
# should be rendered with a dark or light theme.
@@ -1388,7 +1349,7 @@ HTML_EXTRA_FILES =
# The default value is: AUTO_LIGHT.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_COLORSTYLE = AUTO_LIGHT
+HTML_COLORSTYLE = LIGHT
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to
@@ -1716,7 +1677,7 @@ DISABLE_INDEX = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-GENERATE_TREEVIEW = NO
+GENERATE_TREEVIEW = YES
# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
@@ -2502,7 +2463,7 @@ HIDE_UNDOC_RELATIONS = YES
# set to NO
# The default value is: NO.
-HAVE_DOT = NO
+HAVE_DOT = YES
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
@@ -2639,7 +2600,7 @@ DOT_WRAP_THRESHOLD = 17
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-TEMPLATE_RELATIONS = NO
+TEMPLATE_RELATIONS = YES
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
@@ -2727,7 +2688,7 @@ DIR_GRAPH_MAX_DEPTH = 1
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_IMAGE_FORMAT = png
+DOT_IMAGE_FORMAT = SVG
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
@@ -2739,13 +2700,13 @@ DOT_IMAGE_FORMAT = png
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-INTERACTIVE_SVG = NO
+INTERACTIVE_SVG = YES
# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_PATH =
+DOT_PATH = /usr/bin/dot
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
diff --git a/docs/Doxyfile.bak b/docs/Doxyfile.bak
new file mode 100644
index 0000000..cf23eae
--- /dev/null
+++ b/docs/Doxyfile.bak
@@ -0,0 +1,63 @@
+# Doxyfile
+
+# Project information
+PROJECT_NAME = "SDL Minigame"
+PROJECT_NUMBER = "1.0"
+PROJECT_ICON = assets/chicken_neutral_knight.png
+OUTPUT_DIRECTORY = docs
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+EXTRACT_ALL = NO
+EXTRACT_LOCAL_CLASSES = YES
+
+CLASS_DIAGRAMS = YES
+
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = YES
+DOT_PATH = /usr/bin/dot
+
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+UML_LOOK = YES
+UML_LIMIT_NUM_FIELDS = 50
+TEMPLATE_RELATIONS = YES
+DOT_TRANSPARENT = YES
+
+# Source files
+INPUT = ./include ./src
+FILE_PATTERNS = *.cpp *.h *.hpp
+EXAMPLE_PATH = ./include ./src
+EXAMPLE_PATTERNS = *.cpp *.h *.hpp
+
+# Output formats
+GENERATE_XML = YES
+GENERATE_HTML = YES
+DOT_IMAGE_FORMAT = SVG
+COLLABORATION_GRAPH = YES
+GENERATE_LATEX = NO
+
+# Extra settings
+USE_MATHJAX = YES
+CALL_GRAPH = YES
+CALLER_GRAPH = YES
+EXTRACT_PRIVATE = YES
+EXTRACT_STATIC = YES
+EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_METHODS = YES
+EXTRACT_ANON_NSPACES = YES
+SHOW_FILES = YES
+SHOW_INCLUDE_FILES = YES
+SHOW_USED_FILES = YES
+RECURSIVE = YES
+
+# Class diagram options
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DISABLE_INDEX = YES
+GENERATE_TREEVIEW = YES
+HTML_COLLABORATION = YES
+
+# idk everything else
+TAB_SIZE = 4
\ No newline at end of file
diff --git a/docs/custom.css b/docs/custom.css
new file mode 100644
index 0000000..720b3bd
--- /dev/null
+++ b/docs/custom.css
@@ -0,0 +1,54 @@
+html {
+ /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */
+ --primary-color: #bd93f9;
+ --primary-dark-color: #9270e4;
+ --primary-light-color: #9270e4;
+
+ /* page base colors */
+ --page-background-color: #ffffff;
+ --page-foreground-color: #2f4153;
+ --page-secondary-foreground-color: #6f7e8e;
+
+ /* color for all separators on the website: hr, borders, ... */
+ --separator-color: #bd93f965;
+
+ /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */
+ --border-radius-large: 22px;
+ --border-radius-small: 9px;
+ --border-radius-medium: 14px;
+
+ /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */
+ --spacing-small: 8px;
+ --spacing-medium: 14px;
+ --spacing-large: 19px;
+
+ --top-height: 125px;
+
+ ...
+}
+
+html.dark-mode {
+ color-scheme: dark;
+
+ --primary-color: #bd93f9;
+ --primary-dark-color: #9270e4;
+ --primary-light-color: #9270e4;
+ --primary-lighter-color: #191e21;
+ --primary-lightest-color: #191a1c;
+
+ --page-background-color: #21222c;
+ --page-foreground-color: #d2dbde;
+ --page-secondary-foreground-color: #859399;
+ --separator-color: #3a3246;
+ --side-nav-background: #282a36;
+ --side-nav-foreground: #f8f8f2;
+ --toc-background: #282A36;
+ --searchbar-background: var(--page-background-color);
+
+ ...
+}
+
+.paramname em {
+ font-weight: 600;
+ color: var(--primary-dark-color);
+}
\ No newline at end of file
diff --git a/docs/diagrams/.clang-uml b/docs/diagrams/.clang-uml
deleted file mode 100644
index f987536..0000000
--- a/docs/diagrams/.clang-uml
+++ /dev/null
@@ -1,62 +0,0 @@
-compilation_database_dir: ../..
-output_directory: .
-diagrams:
-
- includes:
- type: include
- relative_to: ../..
- glob:
- - src/*.cpp
- - include/*.h
- generate_system_headers: true
- include:
- paths:
- - src
- - include
- plantuml:
- before:
- - 'skinparam linetype ortho'
-
- includes_no_external:
- type: include
- relative_to: ../..
- glob:
- - src/*.cpp
- - include/*.h
- include:
- paths:
- - src
- - include
- plantuml:
- before:
- - 'skinparam linetype ortho'
-
- classes:
- type: class
- relative_to: ../..
- glob:
- - src/*.cpp
- - include/*.h
- include:
- paths:
- - src
- - include
- plantuml:
- before:
- - 'skinparam linetype ortho'
-
- load_map_example_sequence:
- type: sequence
- relative_to: ../..
- glob:
- - src/*.cpp
- - include/*.h
- include:
- paths:
- - src
- - include
- start_from:
- - function: "Map::loadMap(const char *,int,int)"
- plantuml:
- before:
- - 'skinparam linetype ortho'
\ No newline at end of file
diff --git a/docs/diagrams/classes.svg b/docs/diagrams/classes.svg
deleted file mode 100644
index df3320a..0000000
--- a/docs/diagrams/classes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/diagrams/howto.md b/docs/diagrams/howto.md
deleted file mode 100644
index 01260b8..0000000
--- a/docs/diagrams/howto.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Need [clang-uml](https://clang-uml.github.io/index.html)
-
-```sh
-clang-uml
-clang-uml --add-compile-flag -I/usr/lib/clang/16/include # might need additional flags, example for my machine
-clang-uml --print-from -n load_map_example_sequence # to get availabel commands for sequence diagram
-```
-
-then use plant uml to generate an actual `.svg` vector graphic
-```sh
-plantuml -tsvg *.puml
-```
\ No newline at end of file
diff --git a/docs/diagrams/includes.svg b/docs/diagrams/includes.svg
deleted file mode 100644
index 288e1de..0000000
--- a/docs/diagrams/includes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/diagrams/includes_no_external.svg b/docs/diagrams/includes_no_external.svg
deleted file mode 100644
index 6bb4891..0000000
--- a/docs/diagrams/includes_no_external.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/diagrams/load_map_example_sequence.svg b/docs/diagrams/load_map_example_sequence.svg
deleted file mode 100644
index 797ac13..0000000
--- a/docs/diagrams/load_map_example_sequence.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/diagrams/sequence.svg b/docs/diagrams/sequence.svg
deleted file mode 100644
index d0b5207..0000000
--- a/docs/diagrams/sequence.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/docker/Dockerfile b/docs/docker/Dockerfile
new file mode 100644
index 0000000..69b7c81
--- /dev/null
+++ b/docs/docker/Dockerfile
@@ -0,0 +1,13 @@
+FROM alpine:latest
+
+RUN apk --update --no-cache add doxygen graphviz git
+
+COPY entrypoint.sh /entrypoint.sh
+
+RUN chmod +x /entrypoint.sh
+
+WORKDIR /source
+
+ENTRYPOINT ["/entrypoint.sh"]
+
+CMD ["doxygen", "/Doxyfile_copy"]
\ No newline at end of file
diff --git a/docs/docker/entrypoint.sh b/docs/docker/entrypoint.sh
new file mode 100644
index 0000000..748948e
--- /dev/null
+++ b/docs/docker/entrypoint.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+cp /Doxyfile /Doxyfile_copy
+echo "OUTPUT_DIRECTORY = /output" >> /Doxyfile_copy
+
+exec "$@"
\ No newline at end of file
diff --git a/docs/doxygen-awesome-css b/docs/doxygen-awesome-css
new file mode 160000
index 0000000..df88fe4
--- /dev/null
+++ b/docs/doxygen-awesome-css
@@ -0,0 +1 @@
+Subproject commit df88fe4fdd97714fadfd3ef17de0b4401f804052
diff --git a/docs/header.html b/docs/header.html
new file mode 100644
index 0000000..c342193
--- /dev/null
+++ b/docs/header.html
@@ -0,0 +1,110 @@
+
+
+
+
+