From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 14 Oct 2023 11:27:12 +0000 (+0900) Subject: [Refactor] #3649 TerrainList クラスを作った X-Git-Tag: 3.0.0.90-Alpha^2~3^2~4 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ada3abfedab878f62194684654785ab29a0c9d4b;p=hengbandforosx%2Fhengbandosx.git [Refactor] #3649 TerrainList クラスを作った --- diff --git a/src/system/terrain-type-definition.cpp b/src/system/terrain-type-definition.cpp index e51dd843e..e37d65432 100644 --- a/src/system/terrain-type-definition.cpp +++ b/src/system/terrain-type-definition.cpp @@ -7,3 +7,40 @@ #include "system/terrain-type-definition.h" std::vector terrains_info; + +TerrainList TerrainList::instance{}; + +TerrainList &TerrainList::get_instance() +{ + return instance; +} + +TerrainType &TerrainList::operator[](short terrain_id) +{ + return terrains_info.at(terrain_id); +} + +const TerrainType &TerrainList::operator[](short terrain_id) const +{ + return terrains_info.at(terrain_id); +} + +std::vector::iterator TerrainList::begin() +{ + return terrains_info.begin(); +} + +const std::vector::const_iterator TerrainList::begin() const +{ + return terrains_info.begin(); +} + +std::vector::iterator TerrainList::end() +{ + return terrains_info.end(); +} + +const std::vector::const_iterator TerrainList::end() const +{ + return terrains_info.end(); +} diff --git a/src/system/terrain-type-definition.h b/src/system/terrain-type-definition.h index 7c2ab1414..b27122a87 100644 --- a/src/system/terrain-type-definition.h +++ b/src/system/terrain-type-definition.h @@ -46,3 +46,24 @@ public: }; extern std::vector terrains_info; + +class TerrainList { +public: + TerrainList(const TerrainList &) = delete; + TerrainList(TerrainList &&) = delete; + TerrainList operator=(const TerrainList &) = delete; + TerrainList operator=(TerrainList &&) = delete; + TerrainType &operator[](short terrain_id); + const TerrainType &operator[](short terrain_id) const; + + static TerrainList &get_instance(); + std::vector::iterator begin(); + const std::vector::const_iterator begin() const; + std::vector::iterator end(); + const std::vector::const_iterator end() const; + +private: + TerrainList() = default; + + static TerrainList instance; +};