From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 25 May 2024 13:45:31 +0000 (+0900) Subject: [Refactor] #4155 ang_sort() の引数からPlayerType を除去した X-Git-Tag: 3.0.1.13-Beta~19^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=979144954ead45086fc3b39e0d2e6fb9b83299f7;p=hengbandforosx%2Fhengbandosx.git [Refactor] #4155 ang_sort() の引数からPlayerType を除去した --- diff --git a/src/target/grid-selector.cpp b/src/target/grid-selector.cpp index f69780494..5d7222ef6 100644 --- a/src/target/grid-selector.cpp +++ b/src/target/grid-selector.cpp @@ -82,7 +82,7 @@ static void tgt_pt_prepare(PlayerType *player_ptr, std::vector &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); } /*! diff --git a/src/target/target-preparation.cpp b/src/target/target-preparation.cpp index ced2a6748..a422f2e1a 100644 --- a/src/target/target-preparation.cpp +++ b/src/target/target-preparation.cpp @@ -162,9 +162,9 @@ void target_set_prepare(PlayerType *player_ptr, std::vector &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); } // 乗っているモンスターがターゲットリストの先頭にならないようにする調整。 diff --git a/src/util/sort.cpp b/src/util/sort.cpp index 61c5ac0f0..75ab94e76 100644 --- a/src/util/sort.cpp +++ b/src/util/sort.cpp @@ -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 &ys, std::vector &xs, int p, int q, SortKind kind) +void exe_ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector &ys, std::vector &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 &ys, std::vector } /* 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 &ys, std::vector * @param ang_sort_comp 比較用の関数ポインタ * @param ang_sort_swap スワップ用の関数ポインタ */ -void ang_sort(PlayerType *player_ptr, std::vector &ys, std::vector &xs, SortKind kind) +void ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector &ys, std::vector &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); } diff --git a/src/util/sort.h b/src/util/sort.h index dc5c31e60..a6e6ea0b9 100644 --- a/src/util/sort.h +++ b/src/util/sort.h @@ -1,5 +1,6 @@ #pragma once +#include "util/point-2d.h" #include enum class SortKind { @@ -7,5 +8,5 @@ enum class SortKind { IMPORTANCE, }; -class PlayerType; -void ang_sort(PlayerType *player_ptr, std::vector &ys, std::vector &xs, SortKind kind); +class FloorType; +void ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector &ys, std::vector &xs, SortKind kind);