From c6f4955fb75b1b9a96af419ede8fd860e02a65be Mon Sep 17 00:00:00 2001 From: Hourier Date: Fri, 17 Jul 2020 18:51:14 +0900 Subject: [PATCH] [Refactor] #40233 Separated exe_reorder_store_items() from combine_and_reorder_home() --- src/store/home.c | 34 ++++++++++++++++++---------------- src/store/home.h | 2 +- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/store/home.c b/src/store/home.c index 3af4a570b..41950d88f 100644 --- a/src/store/home.c +++ b/src/store/home.c @@ -81,13 +81,29 @@ int home_carry(player_type *player_ptr, object_type *o_ptr) return slot; } +static bool exe_reorder_store_items(object_type *o_ptr, object_type *j_ptr, const int max_num, const int i, bool *combined) +{ + if (o_ptr->number + j_ptr->number <= max_num) + return FALSE; + + object_absorb(j_ptr, o_ptr); + st_ptr->stock_num--; + int k; + for (k = i; k < st_ptr->stock_num; k++) + st_ptr->stock[k] = st_ptr->stock[k + 1]; + + object_wipe(&st_ptr->stock[k]); + *combined = TRUE; + return TRUE; +} + /*! * @brief 現在の町の指定された店舗のアイテムを整理する / * Combine and reorder items in store. * @param store_num 店舗ID * @return 実際に整理が行われたならばTRUEを返す。 */ -bool combine_and_reorder_home(player_type *player_ptr, int store_num) +bool combine_and_reorder_home(player_type *player_ptr, const int store_num) { bool old_stack_force_notes = stack_force_notes; bool old_stack_force_costs = stack_force_costs; @@ -114,26 +130,12 @@ bool combine_and_reorder_home(player_type *player_ptr, int store_num) if (!j_ptr->k_idx) continue; - /* - * Get maximum number of the stack if these - * are similar, get zero otherwise. - */ int max_num = object_similar_part(j_ptr, o_ptr); if (max_num == 0 || j_ptr->number >= max_num) continue; - if (o_ptr->number + j_ptr->number <= max_num) { - object_absorb(j_ptr, o_ptr); - st_ptr->stock_num--; - int k; - for (k = i; k < st_ptr->stock_num; k++) { - st_ptr->stock[k] = st_ptr->stock[k + 1]; - } - - object_wipe(&st_ptr->stock[k]); - combined = TRUE; + if (exe_reorder_store_items(o_ptr, j_ptr, max_num, i, &combined)) break; - } ITEM_NUMBER old_num = o_ptr->number; ITEM_NUMBER remain = j_ptr->number + o_ptr->number - max_num; diff --git a/src/store/home.h b/src/store/home.h index 9374b8266..6d26cb31c 100644 --- a/src/store/home.h +++ b/src/store/home.h @@ -3,4 +3,4 @@ #include "system/angband.h" int home_carry(player_type *player_ptr, object_type *o_ptr); -bool combine_and_reorder_home(player_type *player_ptr, int store_num); +bool combine_and_reorder_home(player_type *player_ptr, const int store_num); -- 2.11.0