OSDN Git Service

[Refactor] #4155 ang_sort() の引数からPlayerType を除去した
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 25 May 2024 13:45:31 +0000 (22:45 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 26 May 2024 01:22:51 +0000 (10:22 +0900)
src/target/grid-selector.cpp
src/target/target-preparation.cpp
src/util/sort.cpp
src/util/sort.h

index f697804..5d7222e 100644 (file)
@@ -82,7 +82,7 @@ static void tgt_pt_prepare(PlayerType *player_ptr, std::vector<POSITION> &ys, st
         }
     }
 
-    ang_sort(player_ptr, ys, xs, SortKind::DISTANCE);
+    ang_sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::DISTANCE);
 }
 
 /*!
index ced2a67..a422f2e 100644 (file)
@@ -162,9 +162,9 @@ void target_set_prepare(PlayerType *player_ptr, std::vector<POSITION> &ys, std::
     }
 
     if (mode & (TARGET_KILL)) {
-        ang_sort(player_ptr, ys, xs, SortKind::DISTANCE);
+        ang_sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::DISTANCE);
     } else {
-        ang_sort(player_ptr, ys, xs, SortKind::IMPORTANCE);
+        ang_sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::IMPORTANCE);
     }
 
     // 乗っているモンスターがターゲットリストの先頭にならないようにする調整。
index 61c5ac0..75ab94e 100644 (file)
@@ -9,9 +9,7 @@
 #include "system/grid-type-definition.h"
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
-#include "system/player-type-definition.h"
 #include "system/terrain-type-definition.h"
-#include "util/point-2d.h"
 
 namespace {
 /*
@@ -152,14 +150,12 @@ bool ang_sort_comp_importance(const FloorType &floor, const Pos2D &p_pos, std::v
  * @param ang_sort_comp 比較用の関数ポインタ
  * @param ang_sort_swap スワップ用の関数ポインタ
  */
-void exe_ang_sort(PlayerType *player_ptr, std::vector<int> &ys, std::vector<int> &xs, int p, int q, SortKind kind)
+void exe_ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector<int> &ys, std::vector<int> &xs, int p, int q, SortKind kind)
 {
     if (p >= q) {
         return;
     }
 
-    const auto &floor = *player_ptr->current_floor_ptr;
-    const auto p_pos = player_ptr->get_position();
     int z = p;
     int a = p;
     int b = q;
@@ -212,10 +208,10 @@ void exe_ang_sort(PlayerType *player_ptr, std::vector<int> &ys, std::vector<int>
     }
 
     /* Recurse left side */
-    exe_ang_sort(player_ptr, ys, xs, p, b, kind);
+    exe_ang_sort(floor, p_pos, ys, xs, p, b, kind);
 
     /* Recurse right side */
-    exe_ang_sort(player_ptr, ys, xs, b + 1, q, kind);
+    exe_ang_sort(floor, p_pos, ys, xs, b + 1, q, kind);
 }
 }
 
@@ -228,7 +224,7 @@ void exe_ang_sort(PlayerType *player_ptr, std::vector<int> &ys, std::vector<int>
  * @param ang_sort_comp 比較用の関数ポインタ
  * @param ang_sort_swap スワップ用の関数ポインタ
  */
-void ang_sort(PlayerType *player_ptr, std::vector<int> &ys, std::vector<int> &xs, SortKind kind)
+void ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector<int> &ys, std::vector<int> &xs, SortKind kind)
 {
-    exe_ang_sort(player_ptr, ys, xs, 0, std::ssize(ys) - 1, kind);
+    exe_ang_sort(floor, p_pos, ys, xs, 0, std::ssize(ys) - 1, kind);
 }
index dc5c31e..a6e6ea0 100644 (file)
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "util/point-2d.h"
 #include <vector>
 
 enum class SortKind {
@@ -7,5 +8,5 @@ enum class SortKind {
     IMPORTANCE,
 };
 
-class PlayerType;
-void ang_sort(PlayerType *player_ptr, std::vector<int> &ys, std::vector<int> &xs, SortKind kind);
+class FloorType;
+void ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector<int> &ys, std::vector<int> &xs, SortKind kind);