From 979144954ead45086fc3b39e0d2e6fb9b83299f7 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 25 May 2024 22:45:31 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#4155=20ang=5Fsort()=20=E3=81=AE?= =?utf8?q?=E5=BC=95=E6=95=B0=E3=81=8B=E3=82=89PlayerType=20=E3=82=92?= =?utf8?q?=E9=99=A4=E5=8E=BB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/target/grid-selector.cpp | 2 +- src/target/target-preparation.cpp | 4 ++-- src/util/sort.cpp | 14 +++++--------- src/util/sort.h | 5 +++-- 4 files changed, 11 insertions(+), 14 deletions(-) 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); -- 2.11.0