7 #include "util/object-sort.h"
8 #include "monster-race/monster-race.h"
9 #include "object-hook/hook-enchant.h"
10 #include "object/object-value.h"
11 #include "perception/object-perception.h"
12 #include "player/player-realm.h"
15 * @brief オブジェクトを定義された基準に従いソートするための関数 /
16 * Check if we have space for an item in the pack without overflow
17 * @param o_ptr 比較対象オブジェクトの構造体参照ポインタ1
18 * @param o_value o_ptrのアイテム価値(手動であらかじめ代入する必要がある?)
19 * @param j_ptr 比較対象オブジェクトの構造体参照ポインタ2
20 * @return o_ptrの方が上位ならばTRUEを返す。
22 bool object_sort_comp(player_type *player_ptr, object_type *o_ptr, s32b o_value, object_type *j_ptr)
28 if ((o_ptr->tval == get_realm1_book(player_ptr)) && (j_ptr->tval != get_realm1_book(player_ptr)))
30 if ((j_ptr->tval == get_realm1_book(player_ptr)) && (o_ptr->tval != get_realm1_book(player_ptr)))
33 if ((o_ptr->tval == get_realm2_book(player_ptr)) && (j_ptr->tval != get_realm2_book(player_ptr)))
35 if ((j_ptr->tval == get_realm2_book(player_ptr)) && (o_ptr->tval != get_realm2_book(player_ptr)))
38 if (o_ptr->tval > j_ptr->tval)
40 if (o_ptr->tval < j_ptr->tval)
43 if (!object_is_aware(o_ptr))
45 if (!object_is_aware(j_ptr))
48 if (o_ptr->sval < j_ptr->sval)
50 if (o_ptr->sval > j_ptr->sval)
53 if (!object_is_known(o_ptr))
55 if (!object_is_known(j_ptr))
58 if (object_is_fixed_artifact(o_ptr))
60 else if (o_ptr->art_name)
62 else if (object_is_ego(o_ptr))
67 if (object_is_fixed_artifact(j_ptr))
69 else if (j_ptr->art_name)
71 else if (object_is_ego(j_ptr))
81 switch (o_ptr->tval) {
86 if (r_info[o_ptr->pval].level < r_info[j_ptr->pval].level)
88 if ((r_info[o_ptr->pval].level == r_info[j_ptr->pval].level) && (o_ptr->pval < j_ptr->pval))
95 if (o_ptr->to_h + o_ptr->to_d < j_ptr->to_h + j_ptr->to_d)
97 if (o_ptr->to_h + o_ptr->to_d > j_ptr->to_h + j_ptr->to_d)
102 if (o_ptr->pval < j_ptr->pval)
104 if (o_ptr->pval > j_ptr->pval)
109 return o_value > object_value(player_ptr, j_ptr);