diff options
author | Hop311 <hop3114@gmail.com> | 2023-03-30 23:50:50 +0200 |
---|---|---|
committer | Spartan322 <Megacake1234@gmail.com> | 2023-04-14 17:16:02 +0200 |
commit | c0d76b78d3762e6eec3ed1c62618be84c5b7559b (patch) | |
tree | acfcbeedd5a47136acdf883e791a297200b7d1b8 /extension/src/openvic2/Map.hpp | |
parent | 1f04a7827ae377372cb491ff0257a47d0d4c2967 (diff) |
Add terrain map
With Directional movement using WASD
With Directional movement using arrow keys
With Click-Drag movement using middle mouse button
With Province identifiers
With Province shape loading
With Province rendering
With Province selection
With Province overview panel
With Color lookup texture
Diffstat (limited to 'extension/src/openvic2/Map.hpp')
-rw-r--r-- | extension/src/openvic2/Map.hpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/extension/src/openvic2/Map.hpp b/extension/src/openvic2/Map.hpp new file mode 100644 index 0000000..365d78b --- /dev/null +++ b/extension/src/openvic2/Map.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include <string> +#include <cstdint> +#include <vector> + +namespace OpenVic2 { + + struct Province { + using colour_t = uint32_t; + using index_t = uint16_t; + friend struct Map; + static const colour_t NULL_COLOUR = 0, MAX_COLOUR = 0xFFFFFF; + static const index_t NULL_INDEX = 0, MAX_INDEX = 0xFFFF; + private: + index_t index; + std::string identifier; + colour_t colour; + + Province(index_t index, std::string const& identifier, colour_t colour); + public: + static std::string colour_to_hex_string(colour_t colour); + + index_t get_index() const; + std::string const& get_identifier() const; + colour_t get_colour() const; + std::string to_string() const; + }; + + struct Map { + private: + std::vector<Province> provinces; + bool provinces_locked = false; + + public: + bool add_province(std::string const& identifier, Province::colour_t colour, std::string& error_message); + void lock_provinces(); + size_t get_province_count() const; + + Province* get_province_by_index(Province::index_t index); + Province* get_province_by_identifier(std::string const& identifier); + Province* get_province_by_colour(Province::colour_t colour); + }; + +} |