}
}
- ang_sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::DISTANCE);
+ TargetSorter().sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::DISTANCE);
}
/*!
}
if (mode & (TARGET_KILL)) {
- ang_sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::DISTANCE);
+ TargetSorter().sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::DISTANCE);
} else {
- ang_sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::IMPORTANCE);
+ TargetSorter().sort(*player_ptr->current_floor_ptr, player_ptr->get_position(), ys, xs, SortKind::IMPORTANCE);
}
// 乗っているモンスターがターゲットリストの先頭にならないようにする調整。
-
if (player_ptr->riding == 0 || !target_pet || (size(ys) <= 1) || !(mode & (TARGET_KILL))) {
return;
}
}
/*
- * @brief クイックソートの受け付け / Accepting auick sort in place
- * @param u アイテムやモンスター等への配列
- * @param v 条件基準IDへの参照ポインタ
- * @param a 比較対象のID1
- * @param b 比較対象のID2
- * @param ang_sort_comp 比較用の関数ポインタ
- * @param ang_sort_swap スワップ用の関数ポインタ
+ * @brief クイックソートの受け付け
+ * @param floor フロアへの参照
+ * @param p_pos プレイヤーの現在位置
+ * @param ys マップのY座標群 (歴史的経緯によりPos2D化されていない)
+ * @param xs マップのX座標群 (同上)
+ * @param kind ソート種別
*/
-void ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector<int> &ys, std::vector<int> &xs, SortKind kind)
+void TargetSorter::sort(const FloorType &floor, const Pos2D &p_pos, std::vector<int> &ys, std::vector<int> &xs, SortKind kind)
{
exe_ang_sort(floor, p_pos, ys, xs, 0, std::ssize(ys) - 1, kind);
}
};
class FloorType;
-void ang_sort(const FloorType &floor, const Pos2D &p_pos, std::vector<int> &ys, std::vector<int> &xs, SortKind kind);
+class TargetSorter {
+public:
+ TargetSorter() = default;
+ void sort(const FloorType &floor, const Pos2D &p_pos, std::vector<int> &ys, std::vector<int> &xs, SortKind kind);
+};