OSDN Git Service

[Refactor] #3649 TerrainList クラスを作った
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 14 Oct 2023 11:27:12 +0000 (20:27 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 15 Oct 2023 11:52:38 +0000 (20:52 +0900)
src/system/terrain-type-definition.cpp
src/system/terrain-type-definition.h

index e51dd84..e37d654 100644 (file)
@@ -7,3 +7,40 @@
 #include "system/terrain-type-definition.h"
 
 std::vector<TerrainType> 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<TerrainType>::iterator TerrainList::begin()
+{
+    return terrains_info.begin();
+}
+
+const std::vector<TerrainType>::const_iterator TerrainList::begin() const
+{
+    return terrains_info.begin();
+}
+
+std::vector<TerrainType>::iterator TerrainList::end()
+{
+    return terrains_info.end();
+}
+
+const std::vector<TerrainType>::const_iterator TerrainList::end() const
+{
+    return terrains_info.end();
+}
index 7c2ab14..b27122a 100644 (file)
@@ -46,3 +46,24 @@ public:
 };
 
 extern std::vector<TerrainType> 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<TerrainType>::iterator begin();
+    const std::vector<TerrainType>::const_iterator begin() const;
+    std::vector<TerrainType>::iterator end();
+    const std::vector<TerrainType>::const_iterator end() const;
+
+private:
+    TerrainList() = default;
+
+    static TerrainList instance;
+};