OSDN Git Service

[Refactor] #3745 pattern_seq() の引数をPos2D に変えた
authorHourier <66951241+Hourier@users.noreply.github.com>
Thu, 23 Nov 2023 06:09:05 +0000 (15:09 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Mon, 27 Nov 2023 07:44:46 +0000 (16:44 +0900)
src/action/movement-execution.cpp
src/cmd-action/cmd-pet.cpp
src/floor/pattern-walk.cpp
src/floor/pattern-walk.h

index ba9ab7e..3c735c3 100644 (file)
@@ -179,7 +179,7 @@ void exe_movement(PlayerType *player_ptr, DIRECTION dir, bool do_pickup, bool br
         can_cast &= m_ptr->ml;
         can_cast &= !is_stunned;
         can_cast &= player_ptr->muta.has_not(PlayerMutationType::BERS_RAGE) || !is_shero(player_ptr);
-        if (!m_ptr->is_hostile() && can_cast && pattern_seq(player_ptr, player_ptr->y, player_ptr->x, y, x) && (p_can_enter || p_can_kill_walls)) {
+        if (!m_ptr->is_hostile() && can_cast && pattern_seq(player_ptr, { y, x }) && (p_can_enter || p_can_kill_walls)) {
             (void)set_monster_csleep(player_ptr, grid.m_idx, 0);
             m_name = monster_desc(player_ptr, m_ptr, 0);
             if (m_ptr->ml) {
@@ -318,7 +318,7 @@ void exe_movement(PlayerType *player_ptr, DIRECTION dir, bool do_pickup, bool br
         }
     }
 
-    if (can_move && !pattern_seq(player_ptr, player_ptr->y, player_ptr->x, y, x)) {
+    if (can_move && !pattern_seq(player_ptr, { y, x })) {
         auto effects = player_ptr->effects();
         auto is_confused = effects->confusion()->is_confused();
         auto is_stunned = effects->stun()->is_stunned();
index 4a07efd..be4f18b 100644 (file)
@@ -216,7 +216,7 @@ bool do_cmd_riding(PlayerType *player_ptr, bool force)
             return false;
         }
 
-        if (!pattern_seq(player_ptr, player_ptr->y, player_ptr->x, pos.y, pos.x)) {
+        if (!pattern_seq(player_ptr, pos)) {
             return false;
         }
 
@@ -252,7 +252,7 @@ bool do_cmd_riding(PlayerType *player_ptr, bool force)
             return false;
         }
 
-        if (!pattern_seq(player_ptr, player_ptr->y, player_ptr->x, pos.y, pos.x)) {
+        if (!pattern_seq(player_ptr, pos)) {
             return false;
         }
 
index ae60f35..b20135e 100644 (file)
@@ -167,17 +167,14 @@ bool pattern_effect(PlayerType *player_ptr)
 /*!
  * @brief パターンによる移動制限処理
  * @param player_ptr プレイヤーへの参照ポインタ
- * @param c_y プレイヤーの移動元Y座標
- * @param c_x プレイヤーの移動元X座標
- * @param n_y プレイヤーの移動先Y座標
- * @param n_x プレイヤーの移動先X座標
+ * @param pos プレイヤーの移動先座標
  * @return 移動処理が可能である場合(可能な場合に選択した場合)TRUEを返す。
  */
-bool pattern_seq(PlayerType *player_ptr, POSITION c_y, POSITION c_x, POSITION n_y, POSITION n_x)
+bool pattern_seq(PlayerType *player_ptr, const Pos2D &pos)
 {
     const auto &floor = *player_ptr->current_floor_ptr;
-    const auto &grid_current = floor.get_grid({ c_y, c_x });
-    const auto &grid_new = floor.get_grid({ n_y, n_x });
+    const auto &grid_current = floor.get_grid(player_ptr->get_position());
+    const auto &grid_new = floor.get_grid(pos);
     const auto &terrain_current = grid_current.get_terrain();
     const auto &terrain_new = grid_new.get_terrain();
     const auto is_pattern_tile_cur = terrain_current.flags.has(TerrainCharacteristics::PATTERN);
index e9eb2ee..c3ef745 100644 (file)
@@ -1,8 +1,8 @@
 #pragma once
 
-#include "system/angband.h"
+#include "util/point-2d.h"
 
 class PlayerType;
 bool pattern_effect(PlayerType *player_ptr);
-bool pattern_seq(PlayerType *player_ptr, POSITION c_y, POSITION c_x, POSITION n_y, POSITION n_x);
+bool pattern_seq(PlayerType *player_ptr, const Pos2D &pos);
 void pattern_teleport(PlayerType *player_ptr);