OSDN Git Service

[Refactor] #3650 地形特性を直接に取得している箇所をTerrainList に置換した
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 28 Oct 2023 12:40:36 +0000 (21:40 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Thu, 9 Nov 2023 10:55:45 +0000 (19:55 +0900)
src/floor/cave.cpp
src/grid/grid.cpp
src/main/info-initializer.cpp
src/system/terrain-type-definition.cpp
src/system/terrain-type-definition.h

index f529efc..cfbd262 100644 (file)
@@ -106,7 +106,7 @@ bool cave_los_bold(FloorType *floor_ptr, int y, int x)
  */
 bool feat_supports_los(short f_idx)
 {
-    return terrains_info[f_idx].flags.has(TerrainCharacteristics::LOS);
+    return TerrainList::get_instance()[f_idx].flags.has(TerrainCharacteristics::LOS);
 }
 
 /*
index 7ce27c2..629ee5c 100644 (file)
@@ -1135,7 +1135,7 @@ int count_dt(PlayerType *player_ptr, POSITION *y, POSITION *x, bool (*test)(Play
  */
 bool feat_uses_special(FEAT_IDX f_idx)
 {
-    return terrains_info[(f_idx)].flags.has(TerrainCharacteristics::SPECIAL);
+    return TerrainList::get_instance()[(f_idx)].flags.has(TerrainCharacteristics::SPECIAL);
 }
 
 /*
index e4e1b05..23c4a08 100644 (file)
@@ -205,7 +205,8 @@ errr init_terrains_info()
     init_header(&terrains_header);
     auto *parser = parse_terrains_info;
     auto *retoucher = retouch_terrains_info;
-    return init_info("TerrainDefinitions.txt", terrains_header, terrains_info, parser, retoucher);
+    auto &terrains = TerrainList::get_instance();
+    return init_info("TerrainDefinitions.txt", terrains_header, terrains.get_raw_vector(), parser, retoucher);
 }
 
 /*!
index 7079d62..51e1dfb 100644 (file)
@@ -6,8 +6,6 @@
 
 #include "system/terrain-type-definition.h"
 
-std::vector<TerrainType> terrains_info;
-
 bool TerrainType::is_permanent_wall() const
 {
     return this->flags.has_all_of({ TerrainCharacteristics::WALL, TerrainCharacteristics::PERMANENT });
@@ -20,47 +18,52 @@ TerrainList &TerrainList::get_instance()
     return instance;
 }
 
+std::vector<TerrainType> &TerrainList::get_raw_vector()
+{
+    return this->terrains;
+}
+
 TerrainType &TerrainList::operator[](short terrain_id)
 {
-    return terrains_info.at(terrain_id);
+    return this->terrains.at(terrain_id);
 }
 
 const TerrainType &TerrainList::operator[](short terrain_id) const
 {
-    return terrains_info.at(terrain_id);
+    return this->terrains.at(terrain_id);
 }
 
 std::vector<TerrainType>::iterator TerrainList::begin()
 {
-    return terrains_info.begin();
+    return this->terrains.begin();
 }
 
 const std::vector<TerrainType>::const_iterator TerrainList::begin() const
 {
-    return terrains_info.begin();
+    return this->terrains.begin();
 }
 
 std::vector<TerrainType>::iterator TerrainList::end()
 {
-    return terrains_info.end();
+    return this->terrains.end();
 }
 
 const std::vector<TerrainType>::const_iterator TerrainList::end() const
 {
-    return terrains_info.end();
+    return this->terrains.end();
 }
 
 size_t TerrainList::size() const
 {
-    return terrains_info.size();
+    return this->terrains.size();
 }
 
 bool TerrainList::empty() const
 {
-    return terrains_info.empty();
+    return this->terrains.empty();
 }
 
 void TerrainList::resize(size_t new_size)
 {
-    terrains_info.resize(new_size);
+    this->terrains.resize(new_size);
 }
index f7c6a0c..4619c8e 100644 (file)
@@ -47,8 +47,6 @@ public:
     bool is_permanent_wall() const;
 };
 
-extern std::vector<TerrainType> terrains_info;
-
 class TerrainList {
 public:
     TerrainList(const TerrainList &) = delete;
@@ -59,6 +57,7 @@ public:
     const TerrainType &operator[](short terrain_id) const;
 
     static TerrainList &get_instance();
+    std::vector<TerrainType> &get_raw_vector();
     std::vector<TerrainType>::iterator begin();
     const std::vector<TerrainType>::const_iterator begin() const;
     std::vector<TerrainType>::iterator end();
@@ -71,4 +70,5 @@ private:
     TerrainList() = default;
 
     static TerrainList instance;
+    std::vector<TerrainType> terrains{};
 };