From 46d26b6e61fb210b5d64a2704c43a4bbb620eed1 Mon Sep 17 00:00:00 2001 From: trotFunky Date: Fri, 7 Jun 2019 02:59:27 +0200 Subject: [PATCH] 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