OSDN Git Service

[Refactor] #2520 PlayerAccelerationクラスを定義した (まだPlayerType::fast への読み書きはそのまま)
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 21 May 2022 08:40:31 +0000 (17:40 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 21 May 2022 08:40:31 +0000 (17:40 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/timed-effect/player-acceleration.cpp [new file with mode: 0644]
src/timed-effect/player-acceleration.h [new file with mode: 0644]
src/timed-effect/timed-effects.cpp
src/timed-effect/timed-effects.h

index f6c7f85..6c30cd4 100644 (file)
     <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-acceleration.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-fear.cpp" />\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-acceleration.h" />\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
index 38c2a60..d11151b 100644 (file)
     <ClCompile Include="..\..\src\monster-race\race-feature-mask.cpp">\r
       <Filter>monster-race</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\..\src\timed-effect\player-acceleration.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-feature-mask.h">\r
       <Filter>monster-race</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\..\src\timed-effect\player-acceleration.h">\r
+      <Filter>timed-effect</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <None Include="..\..\src\wall.bmp" />\r
index 74143cd..f9053d3 100644 (file)
@@ -939,6 +939,7 @@ hengband_SOURCES = \
        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-acceleration.cpp timed-effect/player-acceleration.h \
        timed-effect/player-confusion.cpp timed-effect/player-confusion.h \
        timed-effect/player-cut.cpp timed-effect/player-cut.h \
        timed-effect/player-fear.cpp timed-effect/player-fear.h \
diff --git a/src/timed-effect/player-acceleration.cpp b/src/timed-effect/player-acceleration.cpp
new file mode 100644 (file)
index 0000000..14e6f6d
--- /dev/null
@@ -0,0 +1,26 @@
+#include "timed-effect/player-acceleration.h"
+
+short PlayerAcceleration::current() const
+{
+    return this->acceleration;
+}
+
+bool PlayerAcceleration::is_fast() const
+{
+    return this->acceleration > 0;
+}
+
+void PlayerAcceleration::set(short value)
+{
+    this->acceleration = value;
+}
+
+void PlayerAcceleration::add(short value)
+{
+    this->acceleration += value;
+}
+
+void PlayerAcceleration::reset()
+{
+    this->set(0);
+}
diff --git a/src/timed-effect/player-acceleration.h b/src/timed-effect/player-acceleration.h
new file mode 100644 (file)
index 0000000..8a1b4a3
--- /dev/null
@@ -0,0 +1,15 @@
+#pragma once
+
+class PlayerAcceleration {
+public:
+    PlayerAcceleration() = default;
+
+    short current() const;
+    bool is_fast() const;
+    void set(short value);
+    void add(short value); /*!< 減産も負値を引数に入れれば可能 */
+    void reset();
+
+private:
+    short acceleration = 0;
+};
index 21d5b16..50fee2a 100644 (file)
@@ -1,4 +1,5 @@
 #include "timed-effect/timed-effects.h"
+#include "timed-effect/player-acceleration.h"
 #include "timed-effect/player-confusion.h"
 #include "timed-effect/player-cut.h"
 #include "timed-effect/player-fear.h"
@@ -13,6 +14,7 @@ TimedEffects::TimedEffects()
     , player_hallucination(std::make_shared<PlayerHallucination>())
     , player_paralysis(std::make_shared<PlayerParalysis>())
     , player_stun(std::make_shared<PlayerStun>())
+    , player_acceleration(std::make_shared<PlayerAcceleration>())
 {
 }
 
@@ -45,3 +47,8 @@ std::shared_ptr<PlayerStun> TimedEffects::stun() const
 {
     return this->player_stun;
 }
+
+std::shared_ptr<PlayerAcceleration> TimedEffects::acceleration() const
+{
+    return this->player_acceleration;
+}
index 9ec1808..5765130 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <memory>
 
+class PlayerAcceleration;
 class PlayerConfusion;
 class PlayerFear;
 class PlayerHallucination;
@@ -19,6 +20,7 @@ public:
     std::shared_ptr<PlayerHallucination> hallucination() const;
     std::shared_ptr<PlayerParalysis> paralysis() const;
     std::shared_ptr<PlayerStun> stun() const;
+    std::shared_ptr<PlayerAcceleration> acceleration() const;
 
 private:
     std::shared_ptr<PlayerConfusion> player_confusion;
@@ -27,4 +29,5 @@ private:
     std::shared_ptr<PlayerHallucination> player_hallucination;
     std::shared_ptr<PlayerParalysis> player_paralysis;
     std::shared_ptr<PlayerStun> player_stun;
+    std::shared_ptr<PlayerAcceleration> player_acceleration;
 };