# Advanced Wars ## clang-tidy - Um `clang-tidy` für eine einzelne Datei (z.B. `main.cpp`) auszuführen: `clang-tidy src/game/main.cpp -header-filter="src/game/main\.cpp" -p build/` - Um `clang-tidy` für das ganze Projekt auszuführen und die Warnings in die Datei `clang-tidy-warnings.txt` zu schreiben: `find src/game -name '*.cpp' -o -name '*.hpp' | xargs clang-tidy -header-filter="src/game/.*" -p build/ 1> clang-tidy-warnings.txt` ## Build-Anleitung ### Linux/MacOS 1. Repository klonen: ```bash git clone https://github.com/username/project.git cd project ``` 2. Build-Verzeichnis erstellen: ```bash mkdir build && cd build ``` 3. CMake konfigurieren und Build ausführen: ```bash cmake .. cmake --build . ``` ### Windows 1. Repository klonen: ```powershell git clone https://github.com/username/project.git cd project ``` 2. Build-Verzeichnis erstellen: ```powershell mkdir build cd build ``` 3. CMake konfigurieren und Build ausführen: ```powershell cmake .. cmake --build . --config Release ``` ### Visual Studio 1. Repository klonen 2. Visual Studio öffnen 3. "Ordner öffnen" wählen und zum Projektverzeichnis navigieren 4. Visual Studio erkennt automatisch das CMake-Projekt 5. Build über "Build All" ausführen #### Falls Syntax errors 1. Erstelle .vscode/c_cpp_properties.json Datei 2. Füge die folgende JSON so oder so ähnlich ein: ```json { "configurations": [ { "name": "Fedora", "includePath": ["/usr/include", "/usr/include/SDL2"], "defines": [], "intelliSenseMode": "linux-gcc-x64", "compilerPath": "/usr/bin/gcc", "cStandard": "c17", "cppStandard": "c++17" } ], "version": 4 } ``` ## Build-Optionen CMake kann mit verschiedenen Optionen konfiguriert werden: ```bash cmake .. -DCMAKE_BUILD_TYPE=Release # Release-Build cmake .. -DCMAKE_BUILD_TYPE=Debug # Debug-Build ``` ## Prerequisites for Leveleditor - QT 6: `sudo apt install qt6-base-dev` ## Authors Max Körschen: - Units.cpp/hpp (Combat and movement) - Helpmenu.cpp/hpp - UnitInfoMenu.cpp/hpp - RecruitingMenu.cpp/hpp and Recruiting interactions with level-class - Building.cpp/hpp (interactions and logic) - level.cpp/hpp (eventhandling for units and buildings, movement, attack etc) - debugging in CombatEngine.cpp/hpp, Bullets.cpp/hpp Lorenz Diel: - Units.cpp/hpp - UnitInfoMenu.cpp/hpp - level.cpp/hpp - Config.cpp/hpp - Weapon.cpp/hpp - CombatEngine.cpp/hpp David Maul: - Engine.cpp/hpp - Scene.hpp - Spritesheet.cpp/hpp - Tile.cpp/hpp - Window.cpp/hpp - Effect.cpp/hpp - Level.cpp/hpp - main.cpp Frederik Keens: - main.cpp - Player.cpp/hpp - Level.cpp/hpp - Building.cpp/hpp - Unit.cpp/hpp - Tile.cpp/hpp - Spritesheet.cpp/hpp - Scene.hpp - Engine.cpp/hpp David Hermann: - Projektmanagement (GitLab Issues, Milestones, etc.) - Projektstruktur (Ordnerhierarchien) - Refactoring der Architektur für bessere Modularität, Memory Management und Box2d Integration - Spezifische Arbeit: - CMakeLists.txt - CombatEngine.cpp/hpp (refactoring, box2d integration) - GameManager.cpp/hpp - Unit.cpp/hpp (refactoring, box2d integration) - Bullet.cpp/hpp - Level.cpp/hpp (refactoring, box2d integration) - PhysicsBody.cpp/hpp (box2d integration) - PhysicsEngine.cpp/hpp (box2d integration) - Menu.cpp/hpp (Main Menu UI) - ContextMenu.cpp/hpp (Context Menu) - Dimensions.hpp