diff options
author | Bardur Arantsson <bardur@scientician.net> | 2016-09-17 09:58:13 +0200 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2016-09-17 09:58:13 +0200 |
commit | 4d07dca15f547f6233b714c8c82b43bcd5beaebc (patch) | |
tree | a6b353f214e8e69197d71ed9d78da209c306efea /src | |
parent | 804ff8c184e8ce892ed7629ba6feec9bef5aa7ff (diff) |
Unify obj_* fields into object_proto struct
Diffstat (limited to 'src')
-rw-r--r-- | src/birth.cc | 31 | ||||
-rw-r--r-- | src/init1.cc | 109 | ||||
-rw-r--r-- | src/object_proto.hpp | 12 | ||||
-rw-r--r-- | src/player_class.hpp | 7 | ||||
-rw-r--r-- | src/player_race.hpp | 7 | ||||
-rw-r--r-- | src/player_race_mod.hpp | 7 | ||||
-rw-r--r-- | src/player_spec.hpp | 7 |
7 files changed, 77 insertions, 103 deletions
diff --git a/src/birth.cc b/src/birth.cc index 3f09c191..03e651a2 100644 --- a/src/birth.cc +++ b/src/birth.cc @@ -909,25 +909,26 @@ static void player_wipe(void) /* Create an object */ -void outfit_obj(int tv, int sv, int pval, int dd, int ds) +static void outfit_obj(object_proto const *proto) { object_type forge; - object_type *q_ptr; /* Get local object */ - q_ptr = &forge; + auto q_ptr = &forge; q_ptr->pval = 0; q_ptr->pval2 = 0; /* Hack -- Give the player an object */ - object_prep(q_ptr, lookup_kind(tv, sv)); + object_prep(q_ptr, lookup_kind(proto->tval, proto->sval)); - if (pval) - q_ptr->pval = pval; + if (proto->pval) + { + q_ptr->pval = proto->pval; + } /* These objects are "storebought" */ q_ptr->ident |= IDENT_MENTAL; - q_ptr->number = damroll(dd, ds); + q_ptr->number = damroll(proto->dd, proto->ds); object_aware(q_ptr); object_known(q_ptr); @@ -1161,13 +1162,21 @@ static void player_outfit(void) /* Hack -- Give the player some useful objects */ for (i = 0; i < rp_ptr->obj_num; i++) - outfit_obj(rp_ptr->obj_tval[i], rp_ptr->obj_sval[i], rp_ptr->obj_pval[i], rp_ptr->obj_dd[i], rp_ptr->obj_ds[i]); + { + outfit_obj(&rp_ptr->obj[i]); + } for (i = 0; i < rmp_ptr->obj_num; i++) - outfit_obj(rmp_ptr->obj_tval[i], rmp_ptr->obj_sval[i], rmp_ptr->obj_pval[i], rmp_ptr->obj_dd[i], rmp_ptr->obj_ds[i]); + { + outfit_obj(&rmp_ptr->obj[i]); + } for (i = 0; i < cp_ptr->obj_num; i++) - outfit_obj(cp_ptr->obj_tval[i], cp_ptr->obj_sval[i], cp_ptr->obj_pval[i], cp_ptr->obj_dd[i], cp_ptr->obj_ds[i]); + { + outfit_obj(&cp_ptr->obj[i]); + } for (i = 0; i < cp_ptr->spec[p_ptr->pspec].obj_num; i++) - outfit_obj(cp_ptr->spec[p_ptr->pspec].obj_tval[i], cp_ptr->spec[p_ptr->pspec].obj_sval[i], cp_ptr->spec[p_ptr->pspec].obj_pval[i], cp_ptr->spec[p_ptr->pspec].obj_dd[i], cp_ptr->spec[p_ptr->pspec].obj_ds[i]); + { + outfit_obj(&cp_ptr->spec[p_ptr->pspec].obj[i]); + } } diff --git a/src/init1.cc b/src/init1.cc index e504f5ed..5b1e5709 100644 --- a/src/init1.cc +++ b/src/init1.cc @@ -838,6 +838,35 @@ static int read_skill_modifiers(skill_modifiers *skill_modifiers, cptr buf) /* + * Read prototype objects + */ +static int read_proto_object(object_proto *proto, s16b *num, cptr buf) +{ + int s0, s1, s2, s3, s4; + + if (5 != sscanf(buf, "%d:%d:%d:%dd%d", &s0, &s1, &s4, &s2, &s3)) + { + s4 = 0; + + if (4 != sscanf(buf, "%d:%d:%dd%d", &s0, &s1, &s2, &s3)) + { + return 1; + } + } + + proto->pval = s4; + proto->tval = s0; + proto->sval = s1; + proto->dd = s2; + proto->ds = s3; + + (*num)++; + + return 0; +} + + +/* * Initialize the "player" arrays, by parsing an ascii "template" file */ errr init_player_info_txt(FILE *fp) @@ -1136,27 +1165,11 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if ((buf[0] == 'R') && (buf[2] == 'O')) { - int s[5]; - - /* Scan for the values */ - if (5 != sscanf(buf + 4, "%d:%d:%d:%dd%d", - &s[0], &s[1], &s[4], &s[2], &s[3])) + if (read_proto_object(&rp_ptr->obj[rp_ptr->obj_num], &rp_ptr->obj_num, buf + 4)) { - s[4] = 0; - - if (4 != sscanf(buf + 4, "%d:%d:%dd%d", - &s[0], &s[1], &s[2], &s[3])) - { - return (1); - } + return 1; } - rp_ptr->obj_pval[rp_ptr->obj_num] = s[4]; - rp_ptr->obj_tval[rp_ptr->obj_num] = s[0]; - rp_ptr->obj_sval[rp_ptr->obj_num] = s[1]; - rp_ptr->obj_dd[rp_ptr->obj_num] = s[2]; - rp_ptr->obj_ds[rp_ptr->obj_num++] = s[3]; - /* Next... */ continue; } @@ -1402,27 +1415,11 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if ((buf[0] == 'S') && (buf[2] == 'O')) { - int s[5]; - - /* Scan for the values */ - if (5 != sscanf(buf + 4, "%d:%d:%d:%dd%d", - &s[0], &s[1], &s[4], &s[2], &s[3])) + if (read_proto_object(&rmp_ptr->obj[rmp_ptr->obj_num], &rmp_ptr->obj_num, buf + 4)) { - s[4] = 0; - - if (4 != sscanf(buf + 4, "%d:%d:%dd%d", - &s[0], &s[1], &s[2], &s[3])) - { - return (1); - } + return 1; } - rmp_ptr->obj_pval[rmp_ptr->obj_num] = s[4]; - rmp_ptr->obj_tval[rmp_ptr->obj_num] = s[0]; - rmp_ptr->obj_sval[rmp_ptr->obj_num] = s[1]; - rmp_ptr->obj_dd[rmp_ptr->obj_num] = s[2]; - rmp_ptr->obj_ds[rmp_ptr->obj_num++] = s[3]; - /* Next... */ continue; } @@ -1560,27 +1557,11 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if ((buf[0] == 'C') && (buf[2] == 'O')) { - int s[5]; - - /* Scan for the values */ - if (5 != sscanf(buf + 4, "%d:%d:%d:%dd%d", - &s[0], &s[1], &s[4], &s[2], &s[3])) + if (read_proto_object(&c_ptr->obj[c_ptr->obj_num], &c_ptr->obj_num, buf + 4)) { - s[4] = 0; - - if (4 != sscanf(buf + 4, "%d:%d:%dd%d", - &s[0], &s[1], &s[2], &s[3])) - { - return (1); - } + return 1; } - c_ptr->obj_pval[c_ptr->obj_num] = s[4]; - c_ptr->obj_tval[c_ptr->obj_num] = s[0]; - c_ptr->obj_sval[c_ptr->obj_num] = s[1]; - c_ptr->obj_dd[c_ptr->obj_num] = s[2]; - c_ptr->obj_ds[c_ptr->obj_num++] = s[3]; - /* Next... */ continue; } @@ -1861,27 +1842,11 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if (buf[4] == 'O') { - int s[5]; - - /* Scan for the values */ - if (5 != sscanf(buf + 6, "%d:%d:%d:%dd%d", - &s[0], &s[1], &s[4], &s[2], &s[3])) + if (read_proto_object(&s_ptr->obj[s_ptr->obj_num], &s_ptr->obj_num, buf + 6)) { - s[4] = 0; - - if (4 != sscanf(buf + 6, "%d:%d:%dd%d", - &s[0], &s[1], &s[2], &s[3])) - { - return (1); - } + return 1; } - s_ptr->obj_pval[s_ptr->obj_num] = s[4]; - s_ptr->obj_tval[s_ptr->obj_num] = s[0]; - s_ptr->obj_sval[s_ptr->obj_num] = s[1]; - s_ptr->obj_dd[s_ptr->obj_num] = s[2]; - s_ptr->obj_ds[s_ptr->obj_num++] = s[3]; - /* Next... */ continue; } diff --git a/src/object_proto.hpp b/src/object_proto.hpp new file mode 100644 index 00000000..faa0b2e8 --- /dev/null +++ b/src/object_proto.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include "h-basic.h" + +struct object_proto +{ + s16b tval = 0; + s16b sval = 0; + s16b pval = 0; + s16b dd = 0; + s16b ds = 0; +}; diff --git a/src/player_class.hpp b/src/player_class.hpp index e3a124e6..32f6e711 100644 --- a/src/player_class.hpp +++ b/src/player_class.hpp @@ -3,6 +3,7 @@ #include "body.hpp" #include "h-basic.h" #include "object_flag_set.hpp" +#include "object_proto.hpp" #include "player_defs.hpp" #include "player_race_flag_set.hpp" #include "player_spec.hpp" @@ -43,11 +44,7 @@ struct player_class byte sense_heavy = 0; byte sense_heavy_magic = 0; - s16b obj_tval[5] { }; - s16b obj_sval[5] { }; - s16b obj_pval[5] { }; - s16b obj_dd[5] { }; - s16b obj_ds[5] { }; + std::array<object_proto, 5> obj; s16b obj_num = 0; char body_parts[BODY_MAX] { }; /* To help to decide what to use when body changing */ diff --git a/src/player_race.hpp b/src/player_race.hpp index 6e2b861d..740c6a5a 100644 --- a/src/player_race.hpp +++ b/src/player_race.hpp @@ -3,6 +3,7 @@ #include "h-basic.h" #include "body.hpp" #include "object_flag_set.hpp" +#include "object_proto.hpp" #include "player_defs.hpp" #include "player_race_ability_type.hpp" #include "player_race_flag_set.hpp" @@ -43,11 +44,7 @@ struct player_race struct skill_modifiers skill_modifiers; - s16b obj_tval[5] { }; - s16b obj_sval[5] { }; - s16b obj_pval[5] { }; - s16b obj_dd[5] { }; - s16b obj_ds[5] { }; + std::array<object_proto, 5> obj; s16b obj_num = 0; std::array<player_race_ability_type, 10> abilities; /* Abilitiers to be gained by level(doesnt take prereqs in account) */ diff --git a/src/player_race_mod.hpp b/src/player_race_mod.hpp index 0472c4ee..9f8c4917 100644 --- a/src/player_race_mod.hpp +++ b/src/player_race_mod.hpp @@ -3,6 +3,7 @@ #include "body.hpp" #include "h-basic.h" #include "object_flag_set.hpp" +#include "object_proto.hpp" #include "player_defs.hpp" #include "player_race_ability_type.hpp" #include "player_race_flag_set.hpp" @@ -47,11 +48,7 @@ struct player_race_mod struct skill_modifiers skill_modifiers; - s16b obj_tval[5] { }; - s16b obj_sval[5] { }; - s16b obj_pval[5] { }; - s16b obj_dd[5] { }; - s16b obj_ds[5] { }; + std::array<object_proto, 5> obj; s16b obj_num = 0; std::array<player_race_ability_type, 10> abilities; /* Abilities to be gained by level; doesnt take prereqs in account */ diff --git a/src/player_spec.hpp b/src/player_spec.hpp index 328789b6..a02103d5 100644 --- a/src/player_spec.hpp +++ b/src/player_spec.hpp @@ -1,6 +1,7 @@ #pragma once #include "h-basic.h" +#include "object_proto.hpp" #include "player_race_ability_type.hpp" #include "player_race_flag_set.hpp" #include "skill_modifiers.hpp" @@ -17,11 +18,7 @@ struct player_spec struct skill_modifiers skill_modifiers; - s16b obj_tval[5] { }; - s16b obj_sval[5] { }; - s16b obj_pval[5] { }; - s16b obj_dd[5] { }; - s16b obj_ds[5] { }; + std::array<object_proto, 5> obj; s16b obj_num = 0; u32b gods = 0; |