OSDN Git Service

[Refactor] #1372 AngbandWorld::sf_extra をAngbandSystem::savefile_key へ移した
authorHourier <66951241+Hourier@users.noreply.github.com>
Sun, 10 Dec 2023 02:23:42 +0000 (11:23 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 6 Apr 2024 12:16:24 +0000 (21:16 +0900)
src/load/info-loader.cpp
src/load/load.cpp
src/system/angband-system.h
src/world/world.h

index 8351eb1..832a221 100644 (file)
@@ -35,7 +35,7 @@ void rd_version_info(void)
         throw("Invalid version is detected!");
     }
 
-    load_xor_byte = w_ptr->sf_extra;
+    load_xor_byte = system.savefile_key;
     v_check = 0L;
     x_check = 0L;
 
index 1ff55f9..e09b6e9 100644 (file)
@@ -393,6 +393,7 @@ bool load_savedata(PlayerType *player_ptr, bool *new_game)
         // v0.0.X~v3.0.0 Alpha51までは、セーブデータの第1バイトがFAKE_MAJOR_VERというZangbandと互換性を取ったバージョン番号フィールドだった.
         // v3.0.0 Alpha52以降は、バリアント名の長さフィールドとして再定義した.
         // 10~13はその名残。変愚蛮怒から更にバリアントを切ったらこの評価は不要.
+        auto &system = AngbandSystem::get_instance();
         auto tmp_major = tmp_ver[0];
         auto is_old_ver = (10 <= tmp_major) && (tmp_major <= 13);
         if (tmp_major == variant_length) {
@@ -400,10 +401,10 @@ bool load_savedata(PlayerType *player_ptr, bool *new_game)
                 throw(_("セーブデータのバリアントは変愚蛮怒以外です", "The variant of save data is other than Hengband!"));
             }
 
-            w_ptr->sf_extra = tmp_ver[version_length - 1];
+            system.savefile_key = tmp_ver[version_length - 1];
             (void)fd_close(fd);
         } else if (is_old_ver) {
-            w_ptr->sf_extra = tmp_ver[3];
+            system.savefile_key = tmp_ver[3];
             (void)fd_close(fd);
         } else {
             (void)fd_close(fd);
index 26f688d..10e6e79 100644 (file)
@@ -15,6 +15,8 @@ public:
     uint8_t version_patch{}; //!< 変愚蛮怒バージョン(パッチ番号)
     uint8_t version_extra{}; //!< 変愚蛮怒バージョン(エクストラ番号)
 
+    uint8_t savefile_key{}; //!< セーブファイルエンコードキー(XOR)
+
     void set_phase_out(bool new_status);
     bool is_phase_out() const;
     int get_max_range() const;
index 81ac03a..eae2364 100644 (file)
@@ -43,8 +43,6 @@ public:
 
     bool is_loading_now{}; /*!< ロード処理中フラグ...ロード直後にcalc_bonus()時の徳変化、及びsanity_blast()による異常を抑止する */
 
-    byte sf_extra{}; //!< セーブファイルエンコードキー(XOR)
-
     uint32_t sf_system{}; //!< OS情報 / OS information
     uint32_t sf_when{}; //!< 作成日時 / Created Date
     uint16_t sf_lives{}; //!< このセーブファイルで何人プレイしたか / Number of past "lives" with this file