From 2b9593bee847ec94a93392f37ebe48906c04fb94 Mon Sep 17 00:00:00 2001 From: trotFunky Date: Thu, 6 Jun 2019 17:07:24 +0200 Subject: [PATCH 1/3] 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 From 67435debe64431759cf59fbba956e3dcb93bd47e Mon Sep 17 00:00:00 2001 From: trotFunky Date: Thu, 6 Jun 2019 21:30:39 +0200 Subject: [PATCH 2/3] Class structure, updated UML Missing : actual code, decorators --- CMakeLists.txt | 2 +- README.md | 4 ++-- UML_Class_Diagram.png | Bin 45934 -> 46872 bytes src/CMakeLists.txt | 4 ++-- src/Entity.h | 48 +++++++++++++++++++++++++++++++++++++++++- src/Game.cpp | 6 ++++++ src/Game.h | 38 +++++++++++++++++++++++++++++++++ src/Level.h | 19 ++++++++++++++--- tests/CMakeLists.txt | 2 +- 9 files changed, 113 insertions(+), 10 deletions(-) create mode 100644 src/Game.cpp create mode 100644 src/Game.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e61928..ad8b0b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.14) -project(src) +project(project_maat) set(CMAKE_CXX_STANDARD 17) set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) diff --git a/README.md b/README.md index 7d4ca64..576b9e4 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ This game is aimed to be a puzzle game in which the player sets different laws f ## TODO - [ ] Level - - [ ] Structure + - [x] Structure - [ ] Parsing from XML - [ ] A* - [ ] Entities - - [ ] Strucutre + - [x] Structure - [ ] Parsing from XML - [ ] Moving - [ ] Decorators (Rules) diff --git a/UML_Class_Diagram.png b/UML_Class_Diagram.png index c9f4d913ff2ea745bf2ee8e5fa816bf420c41632..bb6dacb4dcf41f53125e229edebc530e633e202b 100644 GIT binary patch literal 46872 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 l>(^g1ANfFYKdbZ$pPJFQQUjt{{j58wtfHr literal 45934 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 F{a=O=NzwoS diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index df9624a..671a0a5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.14) -project(src) +project(project_maat) 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) +add_library(engine Level.cpp Level.h Entity.cpp Entity.h Game.cpp Game.h) target_link_libraries(engine sfml-window diff --git a/src/Entity.h b/src/Entity.h index d89911c..b79c1b3 100644 --- a/src/Entity.h +++ b/src/Entity.h @@ -5,9 +5,55 @@ #ifndef SRC_ENTITY_H #define SRC_ENTITY_H +#include -class Entity { +enum class EntityType +{ + Citizen, + Player, + House, + Car, +}; + +enum class State +{ + Moving, + Fleeing, + Waiting, + Idle, +}; + +enum class Orientation +{ + Nort, + East, + South, + West, +}; + + +class Entity +{ +public: + Entity(); + + void render(sf::RenderWindow& renderWindow) const; + void move(); + void update(); + + /// Position of the target of the current action on the map + sf::Vector2i target; +private: + // As it contains position, size and orientation, we do not need anything more + sf::RectangleShape shape; + + State currentState; + /// Used with rules : last to update has priority + State nextState; + + /// Used with rules : last to update has priority + sf::Vector2i nextTarget; }; diff --git a/src/Game.cpp b/src/Game.cpp new file mode 100644 index 0000000..8428f60 --- /dev/null +++ b/src/Game.cpp @@ -0,0 +1,6 @@ +// +// Created by trotfunky on 06/06/19. +// + +#include "Game.h" + diff --git a/src/Game.h b/src/Game.h new file mode 100644 index 0000000..7dbc0f6 --- /dev/null +++ b/src/Game.h @@ -0,0 +1,38 @@ +// +// Created by trotfunky on 06/06/19. +// + +#ifndef SRC_GAME_H +#define SRC_GAME_H + +#include +#include + +#include "Level.h" + + +// Used for convenience +using TextureStore = std::vector>; + +class Game { +public: + Game(const std::vector& levels, const std::vector& textures); + + /// Loads the level of corresponding ID from Game::levelFiles + void loadLevel(int levelId); + + Level currentLevel; + +private: + /// Store the paths to level files + const std::vector levelFiles; + /// Store the paths to texture files + const std::vector textureFiles; + /// Stores pointers to textures for future use + TextureStore textures; + + void loadTextures(); +}; + + +#endif //SRC_GAME_H diff --git a/src/Level.h b/src/Level.h index a3f959b..a2a03be 100644 --- a/src/Level.h +++ b/src/Level.h @@ -5,13 +5,26 @@ #ifndef SRC_LEVEL_H #define SRC_LEVEL_H +#include +#include + +#include "Entity.h" +#include "Game.h" + class Level { - Level(); +public: + Level(const TextureStore& textureStore); + + void render(sf::RenderWindow& renderWindow) const; + void runStep() const; private: - int width; - int height; + const sf::Vector2i size; + + std::vector entities; + + const TextureStore& textures; }; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0d53663..0924c9a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.14) -project(src) +project(project_maat) set(CMAKE_CXX_STANDARD 17) set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) From 46d26b6e61fb210b5d64a2704c43a4bbb620eed1 Mon Sep 17 00:00:00 2001 From: trotFunky Date: Fri, 7 Jun 2019 02:59:27 +0200 Subject: [PATCH 3/3] Started object construction and parsing Simplified some structures Missing : Entity construction --- UML_Class_Diagram.png | Bin 46872 -> 43973 bytes resources/test_level.xml | 6 ++++++ src/CMakeLists.txt | 2 +- src/Entity.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/Entity.h | 11 ++++++++++- src/Game.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/Game.h | 8 +++++++- src/Level.cpp | 25 +++++++++++++++++++++++++ src/Level.h | 7 +++++-- src/Utils.h | 18 ++++++++++++++++++ 10 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 resources/test_level.xml create mode 100644 src/Utils.h diff --git a/UML_Class_Diagram.png b/UML_Class_Diagram.png index bb6dacb4dcf41f53125e229edebc530e633e202b..5f40a3df443970fd67cc5d6fca5182c16dfb305f 100644 GIT binary patch literal 43973 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 l>(^g1ANfFYKdbZ$pPJFQQUjt{{j58wtfHr diff --git a/resources/test_level.xml b/resources/test_level.xml new file mode 100644 index 0000000..7b4af30 --- /dev/null +++ b/resources/test_level.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 671a0a5..df21f86 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,7 +4,7 @@ project(project_maat) 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 Game.cpp Game.h) +add_library(engine Level.cpp Level.h Entity.cpp Entity.h Game.cpp Game.h Utils.h Utils.h) target_link_libraries(engine sfml-window diff --git a/src/Entity.cpp b/src/Entity.cpp index 2f48d00..fd4cfca 100644 --- a/src/Entity.cpp +++ b/src/Entity.cpp @@ -3,3 +3,39 @@ // #include "Entity.h" + +const std::map Entity::entityTypeLookup = { + {"Citizen",EntityType::Citizen}, + {"Player",EntityType::Player}, + {"House",EntityType::House}, + {"Car",EntityType::Car}}; + +Entity::Entity(int x, int y, EntityType type, int width, int height) +{ + +} + +Entity::Entity(const pugi::xml_node& entityNode) +{ + +} + +void Entity::render(sf::RenderWindow& renderWindow) const +{ + +} + +void Entity::move() +{ + +} + +void Entity::update() +{ + +} + +const sf::RectangleShape& Entity::getShape() const +{ + return(shape); +} diff --git a/src/Entity.h b/src/Entity.h index b79c1b3..be52d46 100644 --- a/src/Entity.h +++ b/src/Entity.h @@ -6,6 +6,9 @@ #define SRC_ENTITY_H #include +#include + +#include "Utils.h" enum class EntityType @@ -36,15 +39,21 @@ enum class Orientation class Entity { public: - Entity(); + /// x,y, width and height are in grid coordinates + Entity(int x, int y, EntityType type, int width = 1, int height = 1); + Entity(const pugi::xml_node& entityNode); void render(sf::RenderWindow& renderWindow) const; void move(); void update(); + const sf::RectangleShape& getShape() const; + /// Position of the target of the current action on the map sf::Vector2i target; private: + static const std::map entityTypeLookup; + // As it contains position, size and orientation, we do not need anything more sf::RectangleShape shape; diff --git a/src/Game.cpp b/src/Game.cpp index 8428f60..6983d39 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -1,6 +1,44 @@ +#include + // // Created by trotfunky on 06/06/19. // #include "Game.h" + +Game::Game(const std::vector& levels, const std::vector& textures) +{ + + + loadTextures(); +} + +void Game::loadLevel(int levelId) +{ + pugi::xml_document document; + pugi::xml_parse_result result = document.load_file(levelFiles.at(levelId).c_str()); + + if(!result) + { + std::cerr << "Error while loading level :\n" << "\t" << result.description() << std::endl; + exit(-1); + } + + currentLevel = std::make_unique(document,textures); +} + +void Game::loadTextures() +{ + textures.reserve(textureFiles.size()); + for(const std::string& filePath : textureFiles) + { + textures.emplace_back(std::make_unique()); + textures.back()->loadFromFile(filePath); + } +} + +void Game::runGame() +{ + +} diff --git a/src/Game.h b/src/Game.h index 7dbc0f6..da9f7b2 100644 --- a/src/Game.h +++ b/src/Game.h @@ -7,8 +7,10 @@ #include #include +#include #include "Level.h" +#include "Entity.h" // Used for convenience @@ -19,9 +21,13 @@ public: Game(const std::vector& levels, const std::vector& textures); /// Loads the level of corresponding ID from Game::levelFiles + /// Closes the program if there is a fatal error (Missing file, bad file...) void loadLevel(int levelId); - Level currentLevel; + std::unique_ptr currentLevel; + + // This should not be called before a level has been loaded + void runGame(); private: /// Store the paths to level files diff --git a/src/Level.cpp b/src/Level.cpp index a6a22d8..1c0903b 100644 --- a/src/Level.cpp +++ b/src/Level.cpp @@ -3,3 +3,28 @@ // #include "Level.h" + + +Level::Level(const pugi::xml_document& xmlDoc, const TextureStore& textureStore) + : textures(textureStore), + size(xmlDoc.child("Level").attribute("width").as_int(),xmlDoc.child("Level").attribute("width").as_int()) +{ + pugi::xml_node levelNode = xmlDoc.child("Level"); + for(const pugi::xml_node& child : levelNode.children()) + { + if(!strncmp(child.name(),"Entity",6)) + { + entities.emplace_back(child); + } + } +} + +void Level::render(sf::RenderWindow& renderWindow) const +{ + +} + +void Level::runStep() const +{ + +} diff --git a/src/Level.h b/src/Level.h index a2a03be..63379f9 100644 --- a/src/Level.h +++ b/src/Level.h @@ -6,15 +6,18 @@ #define SRC_LEVEL_H #include +#include #include +#include +#include "Utils.h" #include "Entity.h" -#include "Game.h" +using TextureStore = std::vector>; class Level { public: - Level(const TextureStore& textureStore); + Level(const pugi::xml_document& xmlDoc, const TextureStore& textureStore); void render(sf::RenderWindow& renderWindow) const; void runStep() const; diff --git a/src/Utils.h b/src/Utils.h new file mode 100644 index 0000000..8fa40a5 --- /dev/null +++ b/src/Utils.h @@ -0,0 +1,18 @@ +// +// Created by trotfunky on 07/06/19. +// + +#ifndef PROJECT_MAAT_UTILS_H +#define PROJECT_MAAT_UTILS_H + +#include + + +namespace pro_maat +{ + +static constexpr uint8_t pixelsPerUnit = 20; + +} + +#endif //PROJECT_MAAT_UTILS_H