<ClCompile Include="..\..\src\target\target-getter.cpp" />\r
<ClCompile Include="..\..\src\target\target-preparation.cpp" />\r
<ClCompile Include="..\..\src\target\target-setter.cpp" />\r
+ <ClCompile Include="..\..\src\timed-effect\player-confusion.cpp" />\r
<ClCompile Include="..\..\src\timed-effect\player-cut.cpp" />\r
<ClCompile Include="..\..\src\timed-effect\player-stun.cpp" />\r
<ClCompile Include="..\..\src\timed-effect\timed-effects.cpp" />\r
<ClInclude Include="..\..\src\target\target-setter.h" />\r
<ClInclude Include="..\..\src\target\target-types.h" />\r
<ClInclude Include="..\..\src\term\screen-processor.h" />\r
+ <ClInclude Include="..\..\src\timed-effect\player-confusion.h" />\r
<ClInclude Include="..\..\src\timed-effect\player-cut.h" />\r
<ClInclude Include="..\..\src\timed-effect\player-stun.h" />\r
<ClInclude Include="..\..\src\timed-effect\timed-effects.h" />\r
<ClCompile Include="..\..\src\monster-race\race-resistance-mask.cpp">\r
<Filter>monster-race</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\src\timed-effect\player-confusion.cpp">\r
+ <Filter>timed-effect</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="..\..\src\combat\shoot.h">\r
<ClInclude Include="..\..\src\monster-race\race-resistance-mask.h">\r
<Filter>monster-race</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\src\timed-effect\player-confusion.h">\r
+ <Filter>timed-effect</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
<ItemGroup>\r
<None Include="..\..\src\wall.bmp" />\r
term/z-term.cpp term/z-term.h term/z-util.cpp term/z-util.h \
term/z-virt.cpp term/z-virt.h \
\
+ timed-effect/player-confusion.cpp timed-effect/player-confusion.h \
timed-effect/player-cut.cpp timed-effect/player-cut.h \
timed-effect/player-stun.cpp timed-effect/player-stun.h \
timed-effect/timed-effects.cpp timed-effect/timed-effects.h \
--- /dev/null
+#include "timed-effect/player-confusion.h"
+
+short PlayerConfusion::current() const
+{
+ return this->confusion;
+}
+
+bool PlayerConfusion::is_confused() const
+{
+ return this->confusion > 0;
+}
+
+void PlayerConfusion::set(short value)
+{
+ this->confusion = value;
+}
+
+void PlayerConfusion::reset()
+{
+ this->set(0);
+}
--- /dev/null
+#pragma once
+
+class PlayerConfusion {
+public:
+ PlayerConfusion() = default;
+
+ short current() const;
+ bool is_confused() const;
+ void set(short value);
+ void reset();
+
+private:
+ short confusion = 0;
+};
#include "timed-effect/timed-effects.h"
+#include "timed-effect/player-confusion.h"
#include "timed-effect/player-cut.h"
#include "timed-effect/player-stun.h"
TimedEffects::TimedEffects()
: player_cut(std::make_shared<PlayerCut>())
, player_stun(std::make_shared<PlayerStun>())
+ , player_confusion(std::make_shared<PlayerConfusion>())
{
}
{
return this->player_stun;
}
+
+std::shared_ptr<PlayerConfusion> TimedEffects::confusion() const
+{
+ return this->player_confusion;
+}
#include <memory>
+class PlayerConfusion;
class PlayerCut;
class PlayerStun;
class TimedEffects {
std::shared_ptr<PlayerCut> cut() const;
std::shared_ptr<PlayerStun> stun() const;
+ std::shared_ptr<PlayerConfusion> confusion() const;
private:
std::shared_ptr<PlayerCut> player_cut;
std::shared_ptr<PlayerStun> player_stun;
+ std::shared_ptr<PlayerConfusion> player_confusion;
};