From 2403e785f68bb6e848cc2e242eccc3664d2bf74e Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 16 Oct 2021 21:50:28 +0900 Subject: [PATCH] [Refactor] #1796 Reshaped item-loader-savefile10.cpp --- src/load/old/item-loader-savefile10.cpp | 158 +++++++------------------------- 1 file changed, 32 insertions(+), 126 deletions(-) diff --git a/src/load/old/item-loader-savefile10.cpp b/src/load/old/item-loader-savefile10.cpp index fa7e9b04d..f215961d9 100644 --- a/src/load/old/item-loader-savefile10.cpp +++ b/src/load/old/item-loader-savefile10.cpp @@ -20,7 +20,7 @@ #include "util/quarks.h" /*! - * @brief アイテムオブジェクトを読み込む(現版) / Read an object (New method) + * @brief アイテムオブジェクトを読み込む(v3.0.0 Savefile ver10まで) * @param o_ptr アイテムオブジェクト保存先ポインタ */ void rd_item(object_type *o_ptr) @@ -32,89 +32,35 @@ void rd_item(object_type *o_ptr) auto flags = rd_u32b(); o_ptr->k_idx = rd_s16b(); - o_ptr->iy = rd_byte(); o_ptr->ix = rd_byte(); - - object_kind *k_ptr; - k_ptr = &k_info[o_ptr->k_idx]; + auto *k_ptr = &k_info[o_ptr->k_idx]; o_ptr->tval = k_ptr->tval; o_ptr->sval = k_ptr->sval; - - if (any_bits(flags, SaveDataItemFlagType::PVAL)) - o_ptr->pval = rd_s16b(); - else - o_ptr->pval = 0; - - if (any_bits(flags, SaveDataItemFlagType::DISCOUNT)) - o_ptr->discount = rd_byte(); - else - o_ptr->discount = 0; - if (any_bits(flags, SaveDataItemFlagType::NUMBER)) { - o_ptr->number = rd_byte(); - } else - o_ptr->number = 1; - + o_ptr->pval = any_bits(flags, SaveDataItemFlagType::PVAL) ? rd_s16b() : 0; + o_ptr->discount = any_bits(flags, SaveDataItemFlagType::DISCOUNT) ? rd_byte() : 0; + o_ptr->number = any_bits(flags, SaveDataItemFlagType::NUMBER) ? rd_byte() : 1; o_ptr->weight = rd_s16b(); - if (any_bits(flags, SaveDataItemFlagType::NAME1)) { if (h_older_than(3, 0, 0, 2)) { o_ptr->name1 = rd_byte(); } else { o_ptr->name1 = rd_s16b(); } - } else + } else { o_ptr->name1 = 0; + } - if (any_bits(flags, SaveDataItemFlagType::NAME2)) { - o_ptr->name2 = rd_byte(); - } else - o_ptr->name2 = 0; - - if (any_bits(flags, SaveDataItemFlagType::TIMEOUT)) - o_ptr->timeout = rd_s16b(); - else - o_ptr->timeout = 0; - - if (any_bits(flags, SaveDataItemFlagType::TO_H)) - o_ptr->to_h = rd_s16b(); - else - o_ptr->to_h = 0; - - if (any_bits(flags, SaveDataItemFlagType::TO_D)) { - o_ptr->to_d = rd_s16b(); - } else - o_ptr->to_d = 0; - - if (any_bits(flags, SaveDataItemFlagType::TO_A)) - o_ptr->to_a = rd_s16b(); - else - o_ptr->to_a = 0; - - if (any_bits(flags, SaveDataItemFlagType::AC)) - o_ptr->ac = rd_s16b(); - else - o_ptr->ac = 0; - - if (any_bits(flags, SaveDataItemFlagType::DD)) { - o_ptr->dd = rd_byte(); - } else - o_ptr->dd = 0; - - if (any_bits(flags, SaveDataItemFlagType::DS)) { - o_ptr->ds = rd_byte(); - } else - o_ptr->ds = 0; - - if (any_bits(flags, SaveDataItemFlagType::IDENT)) - o_ptr->ident = rd_byte(); - else - o_ptr->ident = 0; - - if (any_bits(flags, SaveDataItemFlagType::MARKED)) - o_ptr->marked = rd_byte(); - else - o_ptr->marked = 0; + o_ptr->name2 = any_bits(flags, SaveDataItemFlagType::NAME2) ? rd_byte() : 0; + o_ptr->timeout = any_bits(flags, SaveDataItemFlagType::TIMEOUT) ? rd_s16b() : 0; + o_ptr->to_h = any_bits(flags, SaveDataItemFlagType::TO_H) ? rd_s16b() : 0; + o_ptr->to_d = any_bits(flags, SaveDataItemFlagType::TO_D) ? rd_s16b() : 0; + o_ptr->to_a = any_bits(flags, SaveDataItemFlagType::TO_A) ? rd_s16b() : 0; + o_ptr->ac = any_bits(flags, SaveDataItemFlagType::AC) ? rd_s16b() : 0; + o_ptr->dd = any_bits(flags, SaveDataItemFlagType::DD) ? rd_byte() : 0; + o_ptr->ds = any_bits(flags, SaveDataItemFlagType::DS) ? rd_byte() : 0; + o_ptr->ident = any_bits(flags, SaveDataItemFlagType::IDENT) ? rd_byte() : 0; + o_ptr->marked = any_bits(flags, SaveDataItemFlagType::MARKED) ? rd_byte() : 0; /* Object flags */ if (loading_savefile_version_is_older_than(7)) { @@ -152,18 +98,8 @@ void rd_item(object_type *o_ptr) o_ptr->curse_flags.clear(); } - /* Monster holding object */ - if (any_bits(flags, SaveDataItemFlagType::HELD_M_IDX)) - o_ptr->held_m_idx = rd_s16b(); - else - o_ptr->held_m_idx = 0; - - /* Special powers */ - if (any_bits(flags, SaveDataItemFlagType::XTRA1)) - o_ptr->xtra1 = rd_byte(); - else - o_ptr->xtra1 = 0; - + o_ptr->held_m_idx = any_bits(flags, SaveDataItemFlagType::HELD_M_IDX) ? rd_s16b() : 0; + o_ptr->xtra1 = any_bits(flags, SaveDataItemFlagType::XTRA1) ? rd_byte() : 0; if (any_bits(flags, SaveDataItemFlagType::ACTIVATION_ID)) { if (h_older_than(3, 0, 0, 2)) { o_ptr->activation_id = i2enum(rd_byte()); @@ -174,31 +110,11 @@ void rd_item(object_type *o_ptr) o_ptr->activation_id = i2enum(0); } - if (any_bits(flags, SaveDataItemFlagType::XTRA3)) - o_ptr->xtra3 = rd_byte(); - else - o_ptr->xtra3 = 0; - - if (any_bits(flags, SaveDataItemFlagType::XTRA4)) - o_ptr->xtra4 = rd_s16b(); - else - o_ptr->xtra4 = 0; - - if (any_bits(flags, SaveDataItemFlagType::XTRA5)) - o_ptr->xtra5 = rd_s16b(); - else - o_ptr->xtra5 = 0; - - if (any_bits(flags, SaveDataItemFlagType::FEELING)) - o_ptr->feeling = rd_byte(); - else - o_ptr->feeling = 0; - - if (any_bits(flags, SaveDataItemFlagType::STACK_IDX)) - o_ptr->stack_idx = rd_s16b(); - else - o_ptr->stack_idx = 0; - + o_ptr->xtra3 = any_bits(flags, SaveDataItemFlagType::XTRA3) ? rd_byte() : 0; + o_ptr->xtra4 = any_bits(flags, SaveDataItemFlagType::XTRA4) ? rd_s16b() : 0; + o_ptr->xtra5 = any_bits(flags, SaveDataItemFlagType::XTRA5) ? rd_s16b() : 0; + o_ptr->feeling = any_bits(flags, SaveDataItemFlagType::FEELING) ? rd_byte() : 0; + o_ptr->stack_idx = any_bits(flags, SaveDataItemFlagType::STACK_IDX) ? rd_s16b() : 0; if (any_bits(flags, SaveDataItemFlagType::SMITH) && !loading_savefile_version_is_older_than(7)) { if (auto tmp16s = rd_s16b(); tmp16s > 0) { o_ptr->smith_effect = static_cast(tmp16s); @@ -213,8 +129,9 @@ void rd_item(object_type *o_ptr) char buf[128]; rd_string(buf, sizeof(buf)); o_ptr->inscription = quark_add(buf); - } else + } else { o_ptr->inscription = 0; + } if (any_bits(flags, SaveDataItemFlagType::ART_NAME)) { char buf[128]; @@ -224,8 +141,9 @@ void rd_item(object_type *o_ptr) o_ptr->art_name = 0; } - if (!h_older_than(2, 1, 2, 4)) + if (!h_older_than(2, 1, 2, 4)) { return; + } if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT)) { o_ptr->art_flags.set(TR_LITE_M1); @@ -278,20 +196,14 @@ void rd_item(object_type *o_ptr) } /*! - * @brief アイテムオブジェクトの鑑定情報をロードする + * @brief アイテムオブジェクトの鑑定情報をロードする. */ void load_item(void) { auto loading_max_k_idx = rd_u16b(); - - object_kind *k_ptr; object_kind dummy; for (auto i = 0U; i < loading_max_k_idx; i++) { - if (i < k_info.size()) - k_ptr = &k_info[i]; - else - k_ptr = &dummy; - + auto *k_ptr = i < k_info.size() ? &k_info[i] : &dummy; auto tmp8u = rd_byte(); k_ptr->aware = any_bits(tmp8u, 0x01); k_ptr->tried = any_bits(tmp8u, 0x02); @@ -301,20 +213,14 @@ void load_item(void) } /*! - * @brief 固定アーティファクトの出現情報をロードする + * @brief 固定アーティファクトの出現情報をロードする. */ void load_artifact(void) { auto loading_max_a_idx = rd_u16b(); - - artifact_type *a_ptr; artifact_type dummy; for (auto i = 0U; i < loading_max_a_idx; i++) { - if (i < a_info.size()) - a_ptr = &a_info[i]; - else - a_ptr = &dummy; - + auto *a_ptr = i < a_info.size() ? &a_info[i] : &dummy; a_ptr->cur_num = rd_byte(); if (h_older_than(1, 5, 0, 0)) { a_ptr->floor_id = 0; -- 2.11.0