From f0235f7ff522d1afbb51ecbf737325249757ac8f Mon Sep 17 00:00:00 2001 From: Hourier Date: Mon, 13 Jan 2020 12:45:26 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#38997=20compact=5Fobjects()=20?= =?utf8?q?=E3=81=AE=E5=BC=95=E6=95=B0=E3=82=92player=5Ftype=20*=20?= =?utf8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=20/=20Changed=20argument=20of=20comp?= =?utf8?q?act=5Fobject()=20to=20player=5Ftype=20*?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/core.c | 4 ++-- src/floor-save.c | 2 +- src/floor.c | 9 +++++---- src/floor.h | 2 +- src/load.c | 2 +- src/save.c | 14 ++++++++------ src/save.h | 2 +- 7 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/core.c b/src/core.c index 3a5a7f285..53aed17ad 100644 --- a/src/core.c +++ b/src/core.c @@ -5060,10 +5060,10 @@ static void dungeon(player_type *player_ptr, bool load_game) /* Hack -- Compact the object list occasionally */ - if (player_ptr->current_floor_ptr->o_cnt + 32 > current_world_ptr->max_o_idx) compact_objects(player_ptr->current_floor_ptr, 64); + if (player_ptr->current_floor_ptr->o_cnt + 32 > current_world_ptr->max_o_idx) compact_objects(player_ptr, 64); /* Hack -- Compress the object list occasionally */ - if (player_ptr->current_floor_ptr->o_cnt + 32 < player_ptr->current_floor_ptr->o_max) compact_objects(player_ptr->current_floor_ptr, 0); + if (player_ptr->current_floor_ptr->o_cnt + 32 < player_ptr->current_floor_ptr->o_max) compact_objects(player_ptr, 0); /* Process the player */ process_player(player_ptr); diff --git a/src/floor-save.c b/src/floor-save.c index 4cf6a7a89..b39c4c014 100644 --- a/src/floor-save.c +++ b/src/floor-save.c @@ -1084,7 +1084,7 @@ void leave_floor(player_type *creature_ptr) clear_mon_lite(creature_ptr->current_floor_ptr); /* Save current floor */ - if (!save_floor(sf_ptr, 0)) + if (!save_floor(creature_ptr, sf_ptr, 0)) { /* Save failed -- No return */ prepare_change_floor_mode(creature_ptr, CFM_NO_RETURN); diff --git a/src/floor.c b/src/floor.c index 9c64fc0b5..98cca1148 100644 --- a/src/floor.c +++ b/src/floor.c @@ -1856,7 +1856,7 @@ static void compact_objects_aux(floor_type *floor_ptr, OBJECT_IDX i1, OBJECT_IDX * After "compacting" (if needed), we "reorder" the objects into a more\n * compact order, and we reset the allocation info, and the "live" array.\n */ -void compact_objects(floor_type *floor_ptr, int size) +void compact_objects(player_type *player_ptr, int size) { OBJECT_IDX i; POSITION y, x; @@ -1868,12 +1868,13 @@ void compact_objects(floor_type *floor_ptr, int size) if (size) { msg_print(_("アイテム情報を圧縮しています...", "Compacting objects...")); - p_ptr->redraw |= (PR_MAP); - p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); + player_ptr->redraw |= (PR_MAP); + player_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); } /* Compact at least 'size' objects */ + floor_type *floor_ptr = player_ptr->current_floor_ptr; for (num = 0, cnt = 1; num < size; cnt++) { /* Get more vicious each iteration */ @@ -1912,7 +1913,7 @@ void compact_objects(floor_type *floor_ptr, int size) } /* Nearby objects start out "immune" */ - if ((cur_dis > 0) && (distance(p_ptr->y, p_ptr->x, y, x) < cur_dis)) continue; + if ((cur_dis > 0) && (distance(player_ptr->y, player_ptr->x, y, x) < cur_dis)) continue; /* Saving throw */ chance = 90; diff --git a/src/floor.h b/src/floor.h index e7ee4e462..43ca47f57 100644 --- a/src/floor.h +++ b/src/floor.h @@ -425,6 +425,6 @@ extern void set_floor(floor_type *floor_ptr, POSITION x, POSITION y); extern void place_object(player_type *owner_ptr, POSITION y, POSITION x, BIT_FLAGS mode); extern void place_gold(floor_type *floor_ptr, POSITION y, POSITION x); extern void delete_monster(floor_type *floor_ptr, POSITION y, POSITION x); -extern void compact_objects(floor_type *floor_ptr, int size); +extern void compact_objects(player_type *owner_ptr, int size); extern void vault_traps(player_type *player_ptr, POSITION y, POSITION x, POSITION yd, POSITION xd, int num); extern void scatter(player_type *player_ptr, POSITION *yp, POSITION *xp, POSITION y, POSITION x, POSITION d, BIT_FLAGS mode); diff --git a/src/load.c b/src/load.c index d9c76c309..ac6d9b0ab 100644 --- a/src/load.c +++ b/src/load.c @@ -3353,7 +3353,7 @@ static errr rd_dungeon(player_type *player_ptr) if (err) break; /* Re-save as temporary saved floor file */ - if (!save_floor(sf_ptr, SLF_SECOND)) err = 182; + if (!save_floor(player_ptr, sf_ptr, SLF_SECOND)) err = 182; /* Error? */ if (err) break; diff --git a/src/save.c b/src/save.c index 45c438fe5..d80611d13 100644 --- a/src/save.c +++ b/src/save.c @@ -1171,7 +1171,7 @@ static bool wr_dungeon(player_type *player_ptr) cur_sf_ptr = get_sf_ptr(player_ptr->floor_id); /* Save current floor to temporary file */ - if (!save_floor(cur_sf_ptr, (SLF_SECOND))) return FALSE; + if (!save_floor(player_ptr, cur_sf_ptr, (SLF_SECOND))) return FALSE; /* Move data in temporary files to the savefile */ for (i = 0; i < MAX_SAVED_FLOORS; i++) @@ -1225,7 +1225,7 @@ static bool wr_savefile_new(player_type *player_ptr) KIND_OBJECT_IDX k_idx; /* Compact the objects */ - compact_objects(player_ptr->current_floor_ptr, 0); + compact_objects(player_ptr, 0); /* Compact the monsters */ compact_monsters(0); @@ -1998,15 +1998,16 @@ void remove_loc(void) /*! * @brief ゲームプレイ中のフロア一時保存出力処理サブルーチン / Actually write a temporary saved floor file + * @param player_ptr プレーヤーへの参照ポインタ * @param sf_ptr 保存フロア参照ポインタ * @return なし */ -static bool save_floor_aux(saved_floor_type *sf_ptr) +static bool save_floor_aux(player_type *player_ptr, saved_floor_type *sf_ptr) { byte tmp8u; /* Compact the objects */ - compact_objects(p_ptr->current_floor_ptr, 0); + compact_objects(player_ptr, 0); /* Compact the monsters */ compact_monsters(0); @@ -2047,11 +2048,12 @@ static bool save_floor_aux(saved_floor_type *sf_ptr) /*! * @brief ゲームプレイ中のフロア一時保存出力処理メインルーチン / Attempt to save the temporarily saved-floor data + * @param player_ptr プレーヤーへの参照ポインタ * @param sf_ptr 保存フロア参照ポインタ * @param mode 保存オプション * @return なし */ -bool save_floor(saved_floor_type *sf_ptr, BIT_FLAGS mode) +bool save_floor(player_type *player_ptr, saved_floor_type *sf_ptr, BIT_FLAGS mode) { FILE *old_fff = NULL; byte old_xor_byte = 0; @@ -2131,7 +2133,7 @@ bool save_floor(saved_floor_type *sf_ptr, BIT_FLAGS mode) if (fff) { /* Write the savefile */ - if (save_floor_aux(sf_ptr)) ok = TRUE; + if (save_floor_aux(player_ptr, sf_ptr)) ok = TRUE; /* Attempt to close it */ if (my_fclose(fff)) ok = FALSE; diff --git a/src/save.h b/src/save.h index de91fb309..46410c194 100644 --- a/src/save.h +++ b/src/save.h @@ -10,4 +10,4 @@ extern bool save_player(player_type *player_ptr); extern bool load_player(player_type *player_ptr); extern void remove_loc(void); -extern bool save_floor(saved_floor_type *sf_ptr, BIT_FLAGS mode); +extern bool save_floor(player_type *player_ptr, saved_floor_type *sf_ptr, BIT_FLAGS mode); -- 2.11.0