summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2016-09-17 09:58:13 +0200
committerBardur Arantsson <bardur@scientician.net>2016-09-17 09:58:13 +0200
commitb7ca0a34a2a01ab496dbb829011d40b01106017d (patch)
tree5d53b838bcecd79801cae9fe9990925a39155ace
parent4d07dca15f547f6233b714c8c82b43bcd5beaebc (diff)
Use std::vector<> for object_proto members
-rw-r--r--src/birth.cc32
-rw-r--r--src/init1.cc25
-rw-r--r--src/player_class.hpp3
-rw-r--r--src/player_race.hpp4
-rw-r--r--src/player_race_mod.hpp4
-rw-r--r--src/player_spec.hpp4
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;