OSDN Git Service

Merge branch 'master' of https://github.com/hengband/hengband
[hengbandforosx/hengbandosx.git] / src / system / angband-version.h
1 #pragma once
2
3 #include <cstdint>
4 #include <string>
5
6 /*!
7  * @brief 現在のバリアント名
8  */
9 constexpr std::string_view VARIANT_NAME("Hengband");
10
11 /*!
12  * @brief 基底バリアント名
13  * @details
14  * 変愚蛮怒から更にバリアントを派生させても、ここは変更しないこと.
15  * 変更ではなく削除はOKだが、h_older_than() 及びそれを呼んでいる箇所全てを削除すること.
16  */
17 constexpr std::string_view ROOT_VARIANT_NAME("Hengband");
18
19 /*!
20  * @brief セーブファイル上のバージョン定義
21  * @details v1.1.1以上にのみ適用.
22  * angband.rc に影響があるため、constexpr ではなくdefine 定数のままにしておくこと.
23  */
24 #define H_VER_MAJOR 3 //!< ゲームのバージョン定義(メジャー番号)
25 #define H_VER_MINOR 0 //!< ゲームのバージョン定義(マイナー番号)
26 #define H_VER_PATCH 1 //!< ゲームのバージョン定義(パッチ番号)
27 #define H_VER_EXTRA 17 //!< ゲームのバージョン定義(エクストラ番号)
28
29 /*!
30  * @brief セーブファイルのバージョン(3.0.0から導入)
31  */
32 constexpr uint32_t SAVEFILE_VERSION = 23;
33
34 /*!
35  * @brief バージョンが開発版が安定版かを返す(廃止予定)
36  */
37 constexpr bool IS_STABLE_VERSION = (H_VER_MINOR % 2 == 0 && H_VER_EXTRA == 0);
38
39 enum class VersionStatusType {
40     ALPHA,
41     BETA,
42     RELEASE_CANDIDATE,
43     RELEASE,
44 };
45
46 /*!
47  * @brief バージョンの立ち位置
48  */
49 constexpr VersionStatusType VERSION_STATUS = VersionStatusType::BETA;
50
51 enum class VersionExpression {
52     WITHOUT_EXTRA,
53     WITH_EXTRA,
54     FULL,
55 };
56
57 class AngbandVersion {
58 public:
59     AngbandVersion() = default;
60     AngbandVersion(uint8_t major, uint8_t minor, uint8_t patch, uint8_t extra)
61         : major(major)
62         , minor(minor)
63         , patch(patch)
64         , extra(extra)
65     {
66     }
67
68     uint8_t major = 0; //!< 変愚蛮怒バージョン(メジャー番号)
69     uint8_t minor = 0; //!< 変愚蛮怒バージョン(マイナー番号)
70     uint8_t patch = 0; //!< 変愚蛮怒バージョン(パッチ番号)
71     uint8_t extra = 0; //!< 変愚蛮怒バージョン(エクストラ番号)
72
73     std::string build_expression(VersionExpression expression) const;
74 };