<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
<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
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 \
\
--- /dev/null
+/*!
+ * @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;
+}
--- /dev/null
+#pragma once
+
+class PlayerPoison {
+public:
+ PlayerPoison() = default;
+
+ short current() const;
+ bool is_poisoned() const;
+ void set(short value);
+ void reset();
+
+private:
+ short poison = 0;
+};