From 2b9593bee847ec94a93392f37ebe48906c04fb94 Mon Sep 17 00:00:00 2001 From: trotFunky Date: Thu, 6 Jun 2019 17:07:24 +0200 Subject: [PATCH] Project structure and UML first draft --- CMakeLists.txt | 28 ++++++++++++++++++++++++++++ README.md | 4 ++++ UML_Class_Diagram.png | Bin 0 -> 45934 bytes src/CMakeLists.txt | 12 ++++++++++++ src/Entity.cpp | 5 +++++ src/Entity.h | 14 ++++++++++++++ src/Level.cpp | 5 +++++ src/Level.h | 18 ++++++++++++++++++ tests/CMakeLists.txt | 12 ++++++++++++ tests/gTests.cpp | 11 +++++++++++ 10 files changed, 109 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 UML_Class_Diagram.png create mode 100644 src/CMakeLists.txt create mode 100644 src/Entity.cpp create mode 100644 src/Entity.h create mode 100644 src/Level.cpp create mode 100644 src/Level.h create mode 100644 tests/CMakeLists.txt create mode 100644 tests/gTests.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..8e61928 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.14) +project(src) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) + +add_subdirectory(src) +add_subdirectory(tests) + +# Detect and add SFML +find_package(SFML COMPONENTS system window graphics network audio REQUIRED) +if(NOT SFML_FOUND) + message(FATAL_ERROR "SFML could not be found") +endif() + +# Detect and add GTest +find_package(GTest REQUIRED) +if(GTest_FOUND) + enable_testing() +else() + message(FATAL_ERROR "GTest could not be found") +endif() + +# Find PugiXML +find_path(PugiXML_INCLUDE_DIR pugixml.hpp) +if(NOT IS_DIRECTORY ${PugiXML_INCLUDE_DIR}) + message(FATAL_ERROR "PugiXML could not be found") +endif() \ No newline at end of file diff --git a/README.md b/README.md index 4a5b38f..7d4ca64 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,10 @@ Project Maat is the codename of my C++ course "mini-project" based on the quote This game is aimed to be a puzzle game in which the player sets different laws for the world and the people within it as to control what happens after hitting "play" and achieve the level's goal. I was inspired both by [The Incredible Machine](https://en.wikipedia.org/wiki/The_Incredible_Machine_(video_game)) and its successors and by a much more recent game : [Baba is you](https://en.wikipedia.org/wiki/Baba_Is_You). +## Structure + +![UML Diagram](UML_Class_Diagram.png) + ## TODO - [ ] Level diff --git a/UML_Class_Diagram.png b/UML_Class_Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f4d913ff2ea745bf2ee8e5fa816bf420c41632 GIT binary patch literal 45934 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 F{a=O=NzwoS literal 0 HcmV?d00001 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..df9624a --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.14) +project(src) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) + +add_library(engine Level.cpp Level.h Entity.cpp Entity.h) + +target_link_libraries(engine + sfml-window + sfml-graphics + sfml-system) \ No newline at end of file diff --git a/src/Entity.cpp b/src/Entity.cpp new file mode 100644 index 0000000..2f48d00 --- /dev/null +++ b/src/Entity.cpp @@ -0,0 +1,5 @@ +// +// Created by trotfunky on 06/06/19. +// + +#include "Entity.h" diff --git a/src/Entity.h b/src/Entity.h new file mode 100644 index 0000000..d89911c --- /dev/null +++ b/src/Entity.h @@ -0,0 +1,14 @@ +// +// Created by trotfunky on 06/06/19. +// + +#ifndef SRC_ENTITY_H +#define SRC_ENTITY_H + + +class Entity { + +}; + + +#endif //SRC_ENTITY_H diff --git a/src/Level.cpp b/src/Level.cpp new file mode 100644 index 0000000..a6a22d8 --- /dev/null +++ b/src/Level.cpp @@ -0,0 +1,5 @@ +// +// Created by trotfunky on 06/06/19. +// + +#include "Level.h" diff --git a/src/Level.h b/src/Level.h new file mode 100644 index 0000000..a3f959b --- /dev/null +++ b/src/Level.h @@ -0,0 +1,18 @@ +// +// Created by trotfunky on 06/06/19. +// + +#ifndef SRC_LEVEL_H +#define SRC_LEVEL_H + + +class Level { + Level(); + +private: + int width; + int height; +}; + + +#endif //SRC_LEVEL_H diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..0d53663 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.14) +project(src) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) + +add_executable(gTests gTests.cpp gTests.cpp) + +target_link_libraries(gTests + engine + gtest + pthread) \ No newline at end of file diff --git a/tests/gTests.cpp b/tests/gTests.cpp new file mode 100644 index 0000000..0eccc74 --- /dev/null +++ b/tests/gTests.cpp @@ -0,0 +1,11 @@ +// +// Created by Teo-CD on 06/06/19. +// + +#include + +int main(int argc, char** argv) +{ + ::testing::InitGoogleTest(&argc,argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file