#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;
}
}
/*!
- * @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;
}
#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);
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()) {
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;
}
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;
}
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);
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();
/* 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));
}
/*!
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;
}
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;
std::string get_version()
{
- std::string_view expr;
+ std::string expr;
switch (VERSION_STATUS) {
case VersionStatusType::ALPHA:
expr = "Alpha";
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);
}
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 //!< ゲームのバージョン定義(マイナー番号)