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 | b7ca0a34a2a01ab496dbb829011d40b01106017d (patch) | |
tree | 5d53b838bcecd79801cae9fe9990925a39155ace | |
parent | 4d07dca15f547f6233b714c8c82b43bcd5beaebc (diff) |
Use std::vector<> for object_proto members
-rw-r--r-- | src/birth.cc | 32 | ||||
-rw-r--r-- | src/init1.cc | 25 | ||||
-rw-r--r-- | src/player_class.hpp | 3 | ||||
-rw-r--r-- | src/player_race.hpp | 4 | ||||
-rw-r--r-- | src/player_race_mod.hpp | 4 | ||||
-rw-r--r-- | src/player_spec.hpp | 4 |
6 files changed, 33 insertions, 39 deletions
diff --git a/src/birth.cc b/src/birth.cc index 03e651a2..be8a8a33 100644 --- a/src/birth.cc +++ b/src/birth.cc @@ -936,6 +936,15 @@ static void outfit_obj(object_proto const *proto) } +static void outfit_objs(std::vector<object_proto> const &protos) +{ + for (auto const &proto: protos) + { + outfit_obj(&proto); + } +} + + /* * Give the player an object. */ @@ -972,7 +981,6 @@ static void player_outfit_spellbook(cptr spell_name) */ static void player_outfit(void) { - int i; cptr class_name = spp_ptr->title; cptr subrace_name = rmp_ptr->title; @@ -1160,23 +1168,11 @@ static void player_outfit(void) (void)inven_carry(q_ptr, FALSE); } - /* Hack -- Give the player some useful objects */ - for (i = 0; i < rp_ptr->obj_num; i++) - { - outfit_obj(&rp_ptr->obj[i]); - } - for (i = 0; i < rmp_ptr->obj_num; i++) - { - outfit_obj(&rmp_ptr->obj[i]); - } - for (i = 0; i < cp_ptr->obj_num; 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[i]); - } + /* Outfit the player with starting items */ + outfit_objs(rp_ptr->object_protos); + outfit_objs(rmp_ptr->object_protos); + outfit_objs(cp_ptr->object_protos); + outfit_objs(cp_ptr->spec[p_ptr->pspec].object_protos); } diff --git a/src/init1.cc b/src/init1.cc index 5b1e5709..14175b2c 100644 --- a/src/init1.cc +++ b/src/init1.cc @@ -840,7 +840,7 @@ 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) +static int read_proto_object(std::vector<object_proto> *protos, cptr buf) { int s0, s1, s2, s3, s4; @@ -854,13 +854,14 @@ static int read_proto_object(object_proto *proto, s16b *num, cptr buf) } } - proto->pval = s4; - proto->tval = s0; - proto->sval = s1; - proto->dd = s2; - proto->ds = s3; + object_proto proto; + proto.pval = s4; + proto.tval = s0; + proto.sval = s1; + proto.dd = s2; + proto.ds = s3; - (*num)++; + protos->emplace_back(proto); return 0; } @@ -1165,7 +1166,7 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if ((buf[0] == 'R') && (buf[2] == 'O')) { - if (read_proto_object(&rp_ptr->obj[rp_ptr->obj_num], &rp_ptr->obj_num, buf + 4)) + if (read_proto_object(&rp_ptr->object_protos, buf + 4)) { return 1; } @@ -1415,7 +1416,7 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if ((buf[0] == 'S') && (buf[2] == 'O')) { - if (read_proto_object(&rmp_ptr->obj[rmp_ptr->obj_num], &rmp_ptr->obj_num, buf + 4)) + if (read_proto_object(&rmp_ptr->object_protos, buf + 4)) { return 1; } @@ -1505,7 +1506,6 @@ errr init_player_info_txt(FILE *fp) for (z = 0; z < 10; z++) c_ptr->abilities[z].level = -1; cur_ab = 0; - c_ptr->obj_num = 0; tit_idx = 0; spec_idx = -1; for (z = 0; z < MAX_SPEC; z++) @@ -1557,7 +1557,7 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if ((buf[0] == 'C') && (buf[2] == 'O')) { - if (read_proto_object(&c_ptr->obj[c_ptr->obj_num], &c_ptr->obj_num, buf + 4)) + if (read_proto_object(&c_ptr->object_protos, buf + 4)) { return 1; } @@ -1811,7 +1811,6 @@ errr init_player_info_txt(FILE *fp) s_ptr->title = my_strdup(s); /* Initialize */ - s_ptr->obj_num = 0; cur_ab = 0; for (z = 0; z < 10; z++) s_ptr->abilities[z].level = -1; @@ -1842,7 +1841,7 @@ errr init_player_info_txt(FILE *fp) /* Process 'O' for "Object birth" */ if (buf[4] == 'O') { - if (read_proto_object(&s_ptr->obj[s_ptr->obj_num], &s_ptr->obj_num, buf + 6)) + if (read_proto_object(&s_ptr->object_protos, buf + 6)) { return 1; } diff --git a/src/player_class.hpp b/src/player_class.hpp index 32f6e711..bfa4bfde 100644 --- a/src/player_class.hpp +++ b/src/player_class.hpp @@ -44,8 +44,7 @@ struct player_class byte sense_heavy = 0; byte sense_heavy_magic = 0; - std::array<object_proto, 5> obj; - s16b obj_num = 0; + std::vector<object_proto> object_protos; 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 740c6a5a..203999ad 100644 --- a/src/player_race.hpp +++ b/src/player_race.hpp @@ -11,6 +11,7 @@ #include "skill_modifiers.hpp" #include <array> +#include <vector> /** * Player racial descriptior. @@ -44,8 +45,7 @@ struct player_race struct skill_modifiers skill_modifiers; - std::array<object_proto, 5> obj; - s16b obj_num = 0; + std::vector<object_proto> object_protos; 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 9f8c4917..bf203cc6 100644 --- a/src/player_race_mod.hpp +++ b/src/player_race_mod.hpp @@ -11,6 +11,7 @@ #include "skills_defs.hpp" #include <array> +#include <vector> struct player_race_mod { @@ -48,8 +49,7 @@ struct player_race_mod struct skill_modifiers skill_modifiers; - std::array<object_proto, 5> obj; - s16b obj_num = 0; + std::vector<object_proto> object_protos; 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 a02103d5..3d1c4471 100644 --- a/src/player_spec.hpp +++ b/src/player_spec.hpp @@ -7,6 +7,7 @@ #include "skill_modifiers.hpp" #include <array> +#include <vector> /** * Player class descriptor. @@ -18,8 +19,7 @@ struct player_spec struct skill_modifiers skill_modifiers; - std::array<object_proto, 5> obj; - s16b obj_num = 0; + std::vector<object_proto> object_protos; u32b gods = 0; |