From 985454096eb053aa75960530d05365a75e97f772 Mon Sep 17 00:00:00 2001 From: Slimebreath6078 Date: Sun, 11 Dec 2022 15:53:33 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20=E3=83=A2=E3=83=B3=E3=82=B9?= =?utf8?q?=E3=82=BF=E3=83=BC=E3=81=AE=E6=98=8E=E3=81=8B=E3=82=8A=E3=83=BB?= =?utf8?q?=E9=97=87=E3=83=95=E3=83=A9=E3=82=B0=E3=82=92FlagGroup=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Hengband/Hengband/Hengband.vcxproj | 3 +++ Hengband/Hengband/Hengband.vcxproj.filters | 15 +++++++++------ src/Makefile.am | 2 ++ src/lore/lore-util.h | 2 ++ src/monster-race/race-brightness-flags.h | 13 +++++++++++++ src/monster-race/race-brightness-mask.cpp | 29 +++++++++++++++++++++++++++++ src/monster-race/race-brightness-mask.h | 8 ++++++++ src/system/dungeon-info.h | 2 ++ src/system/monster-race-info.h | 2 ++ 9 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 src/monster-race/race-brightness-flags.h create mode 100644 src/monster-race/race-brightness-mask.cpp create mode 100644 src/monster-race/race-brightness-mask.h diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index b40e0a5d0..2b07701d8 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -273,6 +273,7 @@ + @@ -970,6 +971,8 @@ + + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index 96038cc85..d247f4366 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -812,9 +812,6 @@ spell - - specific-object - specific-object @@ -2469,6 +2466,9 @@ system + + monster-race + @@ -3407,9 +3407,6 @@ realm - - specific-object - specific-object @@ -5358,6 +5355,12 @@ system + + monster-race + + + monster-race + diff --git a/src/Makefile.am b/src/Makefile.am index c2dacbedd..afbbd7500 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -510,6 +510,8 @@ hengband_SOURCES = \ monster-race/race-ability-flags.h \ monster-race/race-ability-mask.cpp monster-race/race-ability-mask.h \ monster-race/race-behavior-flags.h \ + monster-race/race-brightness-flags.h \ + monster-race/race-brightness-mask.h monster-race/race-brightness-mask.cpp \ monster-race/race-drop-flags.h \ monster-race/race-feature-flags.h \ monster-race/race-feature-mask.cpp monster-race/race-feature-mask.h \ diff --git a/src/lore/lore-util.h b/src/lore/lore-util.h index 2fa7a960b..40497dc36 100644 --- a/src/lore/lore-util.h +++ b/src/lore/lore-util.h @@ -4,6 +4,7 @@ #include "monster-race/monster-aura-types.h" #include "monster-race/race-ability-flags.h" #include "monster-race/race-behavior-flags.h" +#include "monster-race/race-brightness-flags.h" #include "monster-race/race-drop-flags.h" #include "monster-race/race-feature-flags.h" #include "monster-race/race-flags-resistance.h" @@ -45,6 +46,7 @@ struct lore_type { EnumClassFlagGroup resistance_flags; EnumClassFlagGroup drop_flags; EnumClassFlagGroup feature_flags; + EnumClassFlagGroup brightness_flags; BIT_FLAGS flags7; bool reinforce; diff --git a/src/monster-race/race-brightness-flags.h b/src/monster-race/race-brightness-flags.h new file mode 100644 index 000000000..8fdf2618d --- /dev/null +++ b/src/monster-race/race-brightness-flags.h @@ -0,0 +1,13 @@ +#pragma once + +enum class MonsterBrightnessType { + HAS_LITE_1 = 0, /* Monster carries light */ + SELF_LITE_1 = 1, /* Monster lights itself */ + HAS_DARK_1 = 2, /* Monster carries darkness */ + SELF_DARK_1 = 3, /* Monster darkens itself */ + HAS_LITE_2 = 4, /* Monster carries light */ + SELF_LITE_2 = 5, /* Monster lights itself */ + HAS_DARK_2 = 6, /* Monster carries darkness */ + SELF_DARK_2 = 7, /* Monster darkens itself */ + MAX, +}; diff --git a/src/monster-race/race-brightness-mask.cpp b/src/monster-race/race-brightness-mask.cpp new file mode 100644 index 000000000..1624c9858 --- /dev/null +++ b/src/monster-race/race-brightness-mask.cpp @@ -0,0 +1,29 @@ +#include "monster-race/race-brightness-mask.h" + +const EnumClassFlagGroup lite_mask = { + MonsterBrightnessType::HAS_LITE_1, + MonsterBrightnessType::SELF_LITE_1, + MonsterBrightnessType::HAS_LITE_2, + MonsterBrightnessType::SELF_LITE_2 +}; + +const EnumClassFlagGroup dark_mask = { + MonsterBrightnessType::HAS_DARK_1, + MonsterBrightnessType::SELF_DARK_1, + MonsterBrightnessType::HAS_DARK_2, + MonsterBrightnessType::SELF_DARK_2 +}; + +const EnumClassFlagGroup has_ld_mask = { + MonsterBrightnessType::HAS_LITE_1, + MonsterBrightnessType::HAS_LITE_2, + MonsterBrightnessType::HAS_DARK_1, + MonsterBrightnessType::HAS_DARK_2 +}; + +const EnumClassFlagGroup self_ld_mask = { + MonsterBrightnessType::SELF_LITE_1, + MonsterBrightnessType::SELF_LITE_2, + MonsterBrightnessType::SELF_DARK_1, + MonsterBrightnessType::SELF_DARK_2 +}; diff --git a/src/monster-race/race-brightness-mask.h b/src/monster-race/race-brightness-mask.h new file mode 100644 index 000000000..15dc34efa --- /dev/null +++ b/src/monster-race/race-brightness-mask.h @@ -0,0 +1,8 @@ +#pragma once +#include "monster-race/race-brightness-flags.h" +#include "util/flag-group.h" + +extern const EnumClassFlagGroup lite_mask; +extern const EnumClassFlagGroup dark_mask; +extern const EnumClassFlagGroup has_ld_mask; +extern const EnumClassFlagGroup self_ld_mask; diff --git a/src/system/dungeon-info.h b/src/system/dungeon-info.h index a7b41e82b..b31b24a6d 100644 --- a/src/system/dungeon-info.h +++ b/src/system/dungeon-info.h @@ -3,6 +3,7 @@ #include "dungeon/dungeon-flag-types.h" #include "monster-race/race-ability-flags.h" #include "monster-race/race-behavior-flags.h" +#include "monster-race/race-brightness-flags.h" #include "monster-race/race-drop-flags.h" #include "monster-race/race-feature-flags.h" #include "monster-race/race-flags-resistance.h" @@ -95,6 +96,7 @@ struct dungeon_type { EnumClassFlagGroup mon_feature_flags; EnumClassFlagGroup mon_population_flags; EnumClassFlagGroup mon_speak_flags; + EnumClassFlagGroup mon_brightness_flags; std::vector r_chars; /* Monster symbols allowed */ short final_object{}; /* The object you'll find at the bottom */ diff --git a/src/system/monster-race-info.h b/src/system/monster-race-info.h index d6b64b048..29fedf88a 100644 --- a/src/system/monster-race-info.h +++ b/src/system/monster-race-info.h @@ -5,6 +5,7 @@ #include "monster-race/monster-aura-types.h" #include "monster-race/race-ability-flags.h" #include "monster-race/race-behavior-flags.h" +#include "monster-race/race-brightness-flags.h" #include "monster-race/race-drop-flags.h" #include "monster-race/race-feature-flags.h" #include "monster-race/race-flags-resistance.h" @@ -88,6 +89,7 @@ public: EnumClassFlagGroup feature_flags; //!< 能力フラグ(地形関連) / Feature Flags EnumClassFlagGroup population_flags; //!< 能力フラグ(出現数関連) / Population Flags EnumClassFlagGroup speak_flags; //!< 能力フラグ(セリフ) / Speaking Flags + EnumClassFlagGroup brightness_flags; //!< 能力フラグ(明暗) / Speaking Lite or Dark MonsterBlow blow[MAX_NUM_BLOWS]{}; //!< 打撃能力定義 / Up to four blows per round //! 指定護衛リスト <モンスター種族ID,護衛数ダイス数,護衛数ダイス面> -- 2.11.0