OSDN Git Service

[Refactor] #2523 player-poison.cpp/h ファイルを定義した (まだPlayerTypeからは呼び出されない)
authorHourier <66951241+Hourier@users.noreply.github.com>
Tue, 16 Aug 2022 09:14:39 +0000 (18:14 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Wed, 24 Aug 2022 05:50:44 +0000 (14:50 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/timed-effect/player-poison.cpp [new file with mode: 0644]
src/timed-effect/player-poison.h [new file with mode: 0644]

index 1f4f046..636629d 100644 (file)
     <ClCompile Include="..\..\src\timed-effect\player-fear.cpp" />\r
     <ClCompile Include="..\..\src\timed-effect\player-hallucination.cpp" />\r
     <ClCompile Include="..\..\src\timed-effect\player-paralysis.cpp" />\r
+    <ClCompile Include="..\..\src\timed-effect\player-poison.cpp" />\r
     <ClCompile Include="..\..\src\timed-effect\player-stun.cpp" />\r
     <ClCompile Include="..\..\src\timed-effect\timed-effects.cpp" />\r
     <ClCompile Include="..\..\src\util\rng-xoshiro.cpp" />\r
     <ClInclude Include="..\..\src\timed-effect\player-fear.h" />\r
     <ClInclude Include="..\..\src\timed-effect\player-hallucination.h" />\r
     <ClInclude Include="..\..\src\timed-effect\player-paralysis.h" />\r
+    <ClInclude Include="..\..\src\timed-effect\player-poison.h" />\r
     <ClInclude Include="..\..\src\timed-effect\player-stun.h" />\r
     <ClInclude Include="..\..\src\timed-effect\timed-effects.h" />\r
     <ClInclude Include="..\..\src\util\bit-flags-calculator.h" />\r
index 03c1e6e..2b61844 100644 (file)
     <ClCompile Include="..\..\src\timed-effect\player-deceleration.cpp">\r
       <Filter>timed-effect</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\..\src\timed-effect\player-poison.cpp">\r
+      <Filter>timed-effect</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\src\combat\shoot.h">\r
     <ClInclude Include="..\..\src\timed-effect\player-deceleration.h">\r
       <Filter>timed-effect</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\..\src\timed-effect\player-poison.h">\r
+      <Filter>timed-effect</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <None Include="..\..\src\wall.bmp" />\r
index 8b04ca4..1225b71 100644 (file)
@@ -948,6 +948,7 @@ hengband_SOURCES = \
        timed-effect/player-fear.cpp timed-effect/player-fear.h \
        timed-effect/player-hallucination.cpp timed-effect/player-hallucination.h \
        timed-effect/player-paralysis.cpp timed-effect/player-paralysis.h \
+       timed-effect/player-poison.cpp timed-effect/player-poison.h \
        timed-effect/player-stun.cpp timed-effect/player-stun.h \
        timed-effect/timed-effects.cpp timed-effect/timed-effects.h \
        \
diff --git a/src/timed-effect/player-poison.cpp b/src/timed-effect/player-poison.cpp
new file mode 100644 (file)
index 0000000..f883e6a
--- /dev/null
@@ -0,0 +1,32 @@
+/*!
+ * @brief プレイヤーの一時減速ステータス変更と判定
+ * @date 2022/08/16
+ * @author Hourier
+ */
+
+#include "timed-effect/player-poison.h"
+#include <stdexcept>
+
+short PlayerPoison::current() const
+{
+    return this->poison;
+}
+
+bool PlayerPoison::is_poisoned() const
+{
+    return this->poison > 0;
+}
+
+void PlayerPoison::set(short value)
+{
+    if (value < 0) {
+        throw std::invalid_argument("Negative value can't be set in the player's poison parameter!");
+    }
+
+    this->poison = value;
+}
+
+void PlayerPoison::reset()
+{
+    this->poison = 0;
+}
diff --git a/src/timed-effect/player-poison.h b/src/timed-effect/player-poison.h
new file mode 100644 (file)
index 0000000..6941bd6
--- /dev/null
@@ -0,0 +1,14 @@
+#pragma once
+
+class PlayerPoison {
+public:
+    PlayerPoison() = default;
+
+    short current() const;
+    bool is_poisoned() const;
+    void set(short value);
+    void reset();
+
+private:
+    short poison = 0;
+};