#pragma once #include "../Common/Sizes.hpp" #include #include namespace MC::World { class BiomeType { public: enum Value : U8 { Plains, Forest, Alpine, RockyPeaks, Desert, Jungle, Beach, Shore, River, Ocean, }; static constexpr U8 Size = Ocean + 1; BiomeType() : m_biome(Plains) {} BiomeType(const Value biome) : m_biome(biome) {} operator Value() const { return m_biome; } static std::vector all() { return { Plains, Forest, Alpine, RockyPeaks, Desert, Jungle, Beach, Shore, River, Ocean }; } static std::vector all_ground() { return { Plains, Forest, Alpine, RockyPeaks, Desert, Jungle, Beach, Shore }; } std::string string() const { switch (m_biome) { case Plains: return "Plains"; case Forest: return "Forest"; case Alpine: return "Alpine"; case RockyPeaks:return "Rocky Peaks"; case Desert: return "Desert"; case Jungle: return "Jungle"; case Beach: return "Beach"; case Shore: return "Shore"; case River: return "River"; case Ocean: return "Ocean"; default: return "Unknown Biome"; } } private: Value m_biome; }; }