OSDN Git Service

[Refactor] #4145 FloorChangeModesStore クラスに必要なメソッドを実装した
authorHourier <66951241+Hourier@users.noreply.github.com>
Fri, 31 May 2024 23:41:39 +0000 (08:41 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 2 Jun 2024 01:27:21 +0000 (10:27 +0900)
src/floor/floor-mode-changer.cpp
src/floor/floor-mode-changer.h

index f0eedff..a0dd790 100644 (file)
@@ -17,3 +17,13 @@ FloorChangeModesStore &FloorChangeModesStore::get_instace()
 {
     return instance;
 }
+
+EnumClassFlagGroup<FloorChangeMode> *FloorChangeModesStore::operator->()
+{
+    return &this->flag_change_modes;
+}
+
+const EnumClassFlagGroup<FloorChangeMode> *FloorChangeModesStore::operator->() const
+{
+    return &this->flag_change_modes;
+}
index 00b912b..b7af5bc 100644 (file)
@@ -22,6 +22,18 @@ enum cfm_type {
 class PlayerType;
 void prepare_change_floor_mode(PlayerType *player_ptr, BIT_FLAGS mode);
 
+enum class FloorChangeMode : short {
+    UP, //!< 上のフロアへ行く (階層は浅くなる).
+    DOWN, //!< 下のフロアへ行く (階層は深くなる).
+    SHAFT, //!< 坑道である (2階層分移動する).
+    RANDOM_PLACE, //!< 移動先フロアにランダム配置される.
+    RANDOM_CONNECT, //!< 移動先フロアの階段にランダム接続される.
+    SAVE_FLOORS, //!< 保存済フロアに移動する.
+    NO_RETURN, //!< 帰還などで移動元に戻らない.
+    FIRST_FLOOR, //!< 荒野からダンジョンの一番浅い階層に移動する.
+    MAX,
+};
+
 class FloorChangeModesStore {
 public:
     ~FloorChangeModesStore() = default;
@@ -31,7 +43,12 @@ public:
     FloorChangeModesStore &operator=(FloorChangeModesStore &&) = delete;
     static FloorChangeModesStore &get_instace();
 
+    EnumClassFlagGroup<FloorChangeMode> *operator->();
+    const EnumClassFlagGroup<FloorChangeMode> *operator->() const;
+
 private:
     static FloorChangeModesStore instance;
     FloorChangeModesStore() = default;
+
+    EnumClassFlagGroup<FloorChangeMode> flag_change_modes;
 };