OSDN Git Service

[Refactor] #1372 Zangband との整合性バージョンが廃止されたことに伴い、h_ver を単にversion へ書き換えた (angband...
authorHourier <66951241+Hourier@users.noreply.github.com>
Sun, 10 Dec 2023 02:15:57 +0000 (11:15 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 6 Apr 2024 12:16:23 +0000 (21:16 +0900)
src/load/angband-version-comparer.cpp
src/load/angband-version-comparer.h
src/load/floor-loader.cpp
src/load/info-loader.cpp
src/load/load.cpp
src/system/angband-system.h
src/system/angband-version.cpp
src/system/angband-version.h

index fddf64d..0ffc0bb 100644 (file)
@@ -3,50 +3,49 @@
 #include "system/angband-version.h"
 
 /*!
- * @brief 変愚蛮怒のバージョン比較処理 / This function determines if the version of the savefile currently being read is older than version
- * "major.minor.patch.extra".
+ * @brief 変愚蛮怒のバージョン比較処理
  * @param major メジャーバージョン値
  * @param minor マイナーバージョン値
  * @param patch パッチバージョン値
- * @param extra ã\82¨ã\82¯ã\82¹ã\83\88ã\83©ã\83\91ージョン値
+ * @param extra ã\82¨ã\82¯ã\82¹ã\83\88ã\83©ã\83\90ージョン値
  * @return 現在のバージョンより値が古いならtrue
  */
-bool h_older_than(byte major, byte minor, byte patch, byte extra)
+bool h_older_than(uint8_t major, uint8_t minor, uint8_t patch, uint8_t extra)
 {
     if (VARIANT_NAME != ROOT_VARIANT_NAME) {
         return false;
     }
 
     const auto &system = AngbandSystem::get_instance();
-    if (system.h_ver_major < major) {
+    if (system.version_major < major) {
         return true;
     }
 
-    if (system.h_ver_major > major) {
+    if (system.version_major > major) {
         return false;
     }
 
-    if (system.h_ver_minor < minor) {
+    if (system.version_minor < minor) {
         return true;
     }
 
-    if (system.h_ver_minor > minor) {
+    if (system.version_minor > minor) {
         return false;
     }
 
-    if (system.h_ver_patch < patch) {
+    if (system.version_patch < patch) {
         return true;
     }
 
-    if (system.h_ver_patch > patch) {
+    if (system.version_patch > patch) {
         return false;
     }
 
-    if (system.h_ver_extra < extra) {
+    if (system.version_extra < extra) {
         return true;
     }
 
-    if (system.h_ver_extra > extra) {
+    if (system.version_extra > extra) {
         return false;
     }
 
@@ -54,42 +53,41 @@ bool h_older_than(byte major, byte minor, byte patch, byte extra)
 }
 
 /*!
- * @brief [äº\92æ\8f\9bæ\80§ç\94¨/æ\96°è¦\8fä»\95æ§\98ç¦\81æ­¢]å¤\89æ\84\9aè\9b®æ\80\92ã\81®ã\83\90ã\83¼ã\82¸ã\83§ã\83³æ¯\94è¼\83å\87¦ç\90\86 / The above function, adapted for Hengband
+ * @brief [äº\92æ\8f\9bæ\80§ç\94¨/æ\96°è¦\8f使ç\94¨ç¦\81æ­¢]å¤\89æ\84\9aè\9b®æ\80\92ã\81®ã\83\90ã\83¼ã\82¸ã\83§ã\83³æ¯\94è¼\83å\87¦ç\90\86
  * @param major メジャーバージョン値
  * @param minor マイナーバージョン値
  * @param patch パッチバージョン値
  * @return 現在のバージョンより値が古いならtrue
- * @details
- * 旧バージョン比較の互換性のためにのみ保持。
+ * @details 旧バージョン比較の互換性のためにのみ保持する.
  */
-bool h_older_than(byte major, byte minor, byte patch)
+bool h_older_than(uint8_t major, uint8_t minor, uint8_t patch)
 {
     if (VARIANT_NAME != ROOT_VARIANT_NAME) {
         return false;
     }
 
     const auto &system = AngbandSystem::get_instance();
-    if (system.h_ver_major < major) {
+    if (system.version_major < major) {
         return true;
     }
 
-    if (system.h_ver_major > major) {
+    if (system.version_major > major) {
         return false;
     }
 
-    if (system.h_ver_minor < minor) {
+    if (system.version_minor < minor) {
         return true;
     }
 
-    if (system.h_ver_minor > minor) {
+    if (system.version_minor > minor) {
         return false;
     }
 
-    if (system.h_ver_patch < patch) {
+    if (system.version_patch < patch) {
         return true;
     }
 
-    if (system.h_ver_patch > patch) {
+    if (system.version_patch > patch) {
         return false;
     }
 
index c806901..b0b10f2 100644 (file)
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "system/angband.h"
+#include <stdint.h>
 
-bool h_older_than(byte major, byte minor, byte patch, byte extra);
-bool h_older_than(byte major, byte minor, byte patch);
+bool h_older_than(uint8_t major, uint8_t minor, uint8_t patch, uint8_t extra);
+bool h_older_than(uint8_t major, uint8_t minor, uint8_t patch);
index 1e41027..eddc385 100644 (file)
@@ -217,10 +217,10 @@ static bool load_floor_aux(PlayerType *player_ptr, saved_floor_type *sf_ptr)
     x_check = 0L;
 
     auto &system = AngbandSystem::get_instance();
-    system.h_ver_extra = H_VER_EXTRA;
-    system.h_ver_patch = H_VER_PATCH;
-    system.h_ver_minor = H_VER_MINOR;
-    system.h_ver_major = H_VER_MAJOR;
+    system.version_extra = H_VER_EXTRA;
+    system.version_patch = H_VER_PATCH;
+    system.version_minor = H_VER_MINOR;
+    system.version_major = H_VER_MAJOR;
     loading_savefile_version = SAVEFILE_VERSION;
 
     if (saved_floor_file_sign != rd_u32b()) {
@@ -279,10 +279,10 @@ bool load_floor(PlayerType *player_ptr, saved_floor_type *sf_ptr, BIT_FLAGS mode
         old_xor_byte = load_xor_byte;
         old_v_check = v_check;
         old_x_check = x_check;
-        old_h_ver_major = system.h_ver_major;
-        old_h_ver_minor = system.h_ver_minor;
-        old_h_ver_patch = system.h_ver_patch;
-        old_h_ver_extra = system.h_ver_extra;
+        old_h_ver_major = system.version_major;
+        old_h_ver_minor = system.version_minor;
+        old_h_ver_patch = system.version_patch;
+        old_h_ver_extra = system.version_extra;
         old_loading_savefile_version = loading_savefile_version;
     }
 
@@ -320,10 +320,10 @@ bool load_floor(PlayerType *player_ptr, saved_floor_type *sf_ptr, BIT_FLAGS mode
         load_xor_byte = old_xor_byte;
         v_check = old_v_check;
         x_check = old_x_check;
-        system.h_ver_major = old_h_ver_major;
-        system.h_ver_minor = old_h_ver_minor;
-        system.h_ver_patch = old_h_ver_patch;
-        system.h_ver_extra = old_h_ver_extra;
+        system.version_major = old_h_ver_major;
+        system.version_minor = old_h_ver_minor;
+        system.version_patch = old_h_ver_patch;
+        system.version_extra = old_h_ver_extra;
         loading_savefile_version = old_loading_savefile_version;
     }
 
index aa7a166..8351eb1 100644 (file)
@@ -24,10 +24,10 @@ void rd_version_info(void)
     if (tmp_major == variant_length) {
         strip_bytes(variant_length);
         load_xor_byte = 0;
-        system.h_ver_major = rd_byte();
-        system.h_ver_minor = rd_byte();
-        system.h_ver_patch = rd_byte();
-        system.h_ver_extra = rd_byte();
+        system.version_major = rd_byte();
+        system.version_minor = rd_byte();
+        system.version_patch = rd_byte();
+        system.version_extra = rd_byte();
         strip_bytes(1);
     } else if (is_old_ver) {
         strip_bytes(3);
@@ -41,10 +41,10 @@ void rd_version_info(void)
 
     if (is_old_ver) {
         /* Old savefile will be version 0.0.0.3 */
-        system.h_ver_extra = rd_byte();
-        system.h_ver_patch = rd_byte();
-        system.h_ver_minor = rd_byte();
-        system.h_ver_major = rd_byte();
+        system.version_extra = rd_byte();
+        system.version_patch = rd_byte();
+        system.version_minor = rd_byte();
+        system.version_major = rd_byte();
     }
 
     w_ptr->sf_system = rd_u32b();
@@ -57,13 +57,13 @@ void rd_version_info(void)
     /* h_ver_majorがfake_ver_majorと同じだったころへの対策 */
     if (loading_savefile_version_is_older_than(10)) {
         constexpr auto fake_ver_plus = 10;
-        if (tmp_major - system.h_ver_major < fake_ver_plus) {
-            system.h_ver_major -= fake_ver_plus;
+        if (tmp_major - system.version_major < fake_ver_plus) {
+            system.version_major -= fake_ver_plus;
         }
     }
 
     constexpr auto fmt = _("バージョン %d.%d.%d のセーブデータ(SAVE%u形式)をロード中...", "Loading a version %d.%d.%d savefile (SAVE%u format)...");
-    load_note(format(fmt, system.h_ver_major, system.h_ver_minor, system.h_ver_patch, loading_savefile_version));
+    load_note(format(fmt, system.version_major, system.version_minor, system.version_patch, loading_savefile_version));
 }
 
 /*!
index 103cbcc..1ff55f9 100644 (file)
@@ -444,7 +444,7 @@ bool load_savedata(PlayerType *player_ptr, bool *new_game)
     if (err) {
         auto &system = AngbandSystem::get_instance();
         constexpr auto fmt = _("エラー(%s)がバージョン %d.%d.%d.%d 用セーブファイル読み込み中に発生。", "Error (%s) reading %d.%d.%d.%d savefile.");
-        msg_format(fmt, what, system.h_ver_major, system.h_ver_minor, system.h_ver_patch, system.h_ver_extra);
+        msg_format(fmt, what, system.version_major, system.version_minor, system.version_patch, system.version_extra);
         msg_print(nullptr);
         return false;
     }
index 14a8595..26f688d 100644 (file)
@@ -8,17 +8,17 @@ public:
     AngbandSystem(AngbandSystem &&) = delete;
     AngbandSystem &operator=(const AngbandSystem &) = delete;
     AngbandSystem &operator=(AngbandSystem &&) = delete;
-
     static AngbandSystem &get_instance();
+
+    uint8_t version_major{}; //!< 変愚蛮怒バージョン(メジャー番号)
+    uint8_t version_minor{}; //!< 変愚蛮怒バージョン(マイナー番号)
+    uint8_t version_patch{}; //!< 変愚蛮怒バージョン(パッチ番号)
+    uint8_t version_extra{}; //!< 変愚蛮怒バージョン(エクストラ番号)
+
     void set_phase_out(bool new_status);
     bool is_phase_out() const;
     int get_max_range() const;
 
-    uint8_t h_ver_major{}; //!< 変愚蛮怒バージョン(メジャー番号) / Hengband version (major ver.)
-    uint8_t h_ver_minor{}; //!< 変愚蛮怒バージョン(マイナー番号) / Hengband version (minor ver.)
-    uint8_t h_ver_patch{}; //!< 変愚蛮怒バージョン(パッチ番号) / Hengband version (patch ver.)
-    uint8_t h_ver_extra{}; //!< 変愚蛮怒バージョン(エクストラ番号) / Hengband version (extra ver.)
-
 private:
     AngbandSystem() = default;
 
index 215bad6..11f11e6 100644 (file)
@@ -4,7 +4,7 @@
 
 std::string get_version()
 {
-    std::string_view expr;
+    std::string expr;
     switch (VERSION_STATUS) {
     case VersionStatusType::ALPHA:
         expr = "Alpha";
@@ -22,10 +22,10 @@ std::string get_version()
         THROW_EXCEPTION(std::logic_error, "Invalid version status was specified!");
     }
 
-    if (VERSION_STATUS != VersionStatusType::RELEASE) {
-        return format(_("変愚蛮怒 %d.%d.%d%s%d", "Hengband %d.%d.%d%s%d"), H_VER_MAJOR, H_VER_MINOR, H_VER_PATCH, expr.data(), H_VER_EXTRA);
-    } else {
-        concptr mode = IS_STABLE_VERSION ? _("安定版", "Stable") : _("開発版", "Developing");
+    if (VERSION_STATUS == VersionStatusType::RELEASE) {
+        constexpr auto mode = IS_STABLE_VERSION ? _("安定版", "Stable") : _("開発版", "Developing");
         return format(_("変愚蛮怒 %d.%d.%d.%d(%s)", "Hengband %d.%d.%d.%d(%s)"), H_VER_MAJOR, H_VER_MINOR, H_VER_PATCH, H_VER_EXTRA, mode);
     }
+
+    return format(_("変愚蛮怒 %d.%d.%d%s%d", "Hengband %d.%d.%d%s%d"), H_VER_MAJOR, H_VER_MINOR, H_VER_PATCH, expr.data(), H_VER_EXTRA);
 }
index a6ce1fa..def54f0 100644 (file)
@@ -17,8 +17,9 @@ constexpr std::string_view VARIANT_NAME("Hengband");
 constexpr std::string_view ROOT_VARIANT_NAME("Hengband");
 
 /*!
- * @brief セーブファイル上のバージョン定義 / "Savefile Version Number" for Hengband
- * @details v1.1.1以上にのみ適用
+ * @brief セーブファイル上のバージョン定義
+ * @details v1.1.1以上にのみ適用.
+ * angband.rc に影響があるため、constexpr ではなくdefine 定数のままにしておくこと.
  */
 #define H_VER_MAJOR 3 //!< ゲームのバージョン定義(メジャー番号)
 #define H_VER_MINOR 0 //!< ゲームのバージョン定義(マイナー番号)