From 0c4f96d620089823800e6aca80191e79ed2d8513 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 24 Aug 2024 07:57:29 +0300 Subject: [PATCH] add SurroundMap class header --- src/world/generator/SurroundMap.hpp | 38 ++++++++++++++++++++++++++++ test/world/generator/SurroundMap.cpp | 7 +++++ 2 files changed, 45 insertions(+) create mode 100644 src/world/generator/SurroundMap.hpp create mode 100644 test/world/generator/SurroundMap.cpp diff --git a/src/world/generator/SurroundMap.hpp b/src/world/generator/SurroundMap.hpp new file mode 100644 index 00000000..45713870 --- /dev/null +++ b/src/world/generator/SurroundMap.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include + +#define GLM_ENABLE_EXPERIMENTAL +#include + +class SurroundMap { + struct Entry { + /// @brief Level is increased when all surrounding (8) entries having + // greather or equal confirmed level + int level = 0; + /// @brief number of surrounding entries having greather or equal + /// confirmed level + int surrounding = 0; + /// @brief level confirmed status (entry is ready to expand) + bool confirmed = true; + /// @brief mark used on sweep event (extra isles garbage collection) + bool marked = false; + }; + std::unordered_map entries; +public: + /// @brief Reset all isles marks + void resetMarks(); + + /// @brief Mark all connected entries + /// @param point origin point + void markIsle(const glm::ivec2& point); + + /// @brief Erase all non-marked isles + /// @return erased entries positions + std::vector sweep(); + + /// @brief Expand all confirmed entries with specified level + /// @param level target entries level + /// @return All upgraded entries positions + std::vector expand(int level); +}; diff --git a/test/world/generator/SurroundMap.cpp b/test/world/generator/SurroundMap.cpp new file mode 100644 index 00000000..ede9217f --- /dev/null +++ b/test/world/generator/SurroundMap.cpp @@ -0,0 +1,7 @@ +#include + +#include "world/generator/SurroundMap.hpp" + +TEST(SurroundMap, InitTest) { + SurroundMap map; +}