diff options
author | Bardur Arantsson <bardur@scientician.net> | 2016-10-05 18:45:08 +0200 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2016-10-05 18:49:38 +0200 |
commit | 89e75b855662b1dcc86a6dc3789fa496aafbb0a2 (patch) | |
tree | a64ae5297bd9d6362b9872a1832cbcad251063ab /src | |
parent | 57bb453a15034c67d04496360b306a5f3bfd0bf2 (diff) |
Move e_info into GameEditData
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd6.cc | 1 | ||||
-rw-r--r-- | src/ego_item_type_fwd.hpp | 3 | ||||
-rw-r--r-- | src/game_edit_data.hpp | 6 | ||||
-rw-r--r-- | src/init1.cc | 13 | ||||
-rw-r--r-- | src/init2.cc | 2 | ||||
-rw-r--r-- | src/loadsave.cc | 1 | ||||
-rw-r--r-- | src/object1.cc | 35 | ||||
-rw-r--r-- | src/object2.cc | 18 | ||||
-rw-r--r-- | src/variable.cc | 10 | ||||
-rw-r--r-- | src/variable.hpp | 3 | ||||
-rw-r--r-- | src/xtra2.cc | 13 |
11 files changed, 51 insertions, 54 deletions
diff --git a/src/cmd6.cc b/src/cmd6.cc index 93df49ad..d6df7570 100644 --- a/src/cmd6.cc +++ b/src/cmd6.cc @@ -5077,6 +5077,7 @@ const char *activation_aux(object_type * o_ptr, bool_ doit, int item) { auto const &k_info = game->edit_data.k_info; auto const &a_info = game->edit_data.a_info; + auto const &e_info = game->edit_data.e_info; int plev = get_skill(SKILL_DEVICE); diff --git a/src/ego_item_type_fwd.hpp b/src/ego_item_type_fwd.hpp deleted file mode 100644 index 795f4403..00000000 --- a/src/ego_item_type_fwd.hpp +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -struct ego_item_type; diff --git a/src/game_edit_data.hpp b/src/game_edit_data.hpp index 6a6fea9c..cc3af2dc 100644 --- a/src/game_edit_data.hpp +++ b/src/game_edit_data.hpp @@ -3,6 +3,7 @@ #include "ability_type.hpp" #include "artifact_type.hpp" #include "dungeon_info_type.hpp" +#include "ego_item_type.hpp" #include "feature_type.hpp" #include "hist_type.hpp" #include "monster_ego.hpp" @@ -56,6 +57,11 @@ struct GameEditData { std::vector<artifact_type> a_info; /** + * Ego items + */ + std::vector<ego_item_type> e_info; + + /** * Artifact sets */ std::vector<set_type> set_info; diff --git a/src/init1.cc b/src/init1.cc index 3912db12..185548ea 100644 --- a/src/init1.cc +++ b/src/init1.cc @@ -3499,6 +3499,8 @@ static bool_ grab_one_ego_item_flag(object_flag_set *flags, ego_flag_set *ego, c */ errr init_e_info_txt(FILE *fp) { + auto &e_info = game->edit_data.e_info; + int i, cur_r = -1, cur_t = 0; char buf[1024]; char *s, *t; @@ -3547,9 +3549,6 @@ errr init_e_info_txt(FILE *fp) /* Verify information */ if (i < error_idx) return (4); - /* Verify information */ - if (i >= max_e_idx) return (2); - /* Save the index */ error_idx = i; @@ -3558,7 +3557,7 @@ errr init_e_info_txt(FILE *fp) cur_t = 0; /* Point at the "info" */ - e_ptr = &e_info[i]; + e_ptr = &expand_to_fit_index(e_info, i); /* Copy name */ assert(!e_ptr->name); @@ -6775,12 +6774,6 @@ static errr process_dungeon_file_aux(char *buf, int *yval, int *xval, int xvalst max_real_towns = atoi(zz[1]); } - /* Maximum e_idx */ - else if (zz[0][0] == 'E') - { - max_e_idx = atoi(zz[1]); - } - /* Maximum o_idx */ else if (zz[0][0] == 'O') { diff --git a/src/init2.cc b/src/init2.cc index 8181f2d1..ad2bed62 100644 --- a/src/init2.cc +++ b/src/init2.cc @@ -373,7 +373,7 @@ namespace { static void allocate() { - e_info = new ego_item_type[max_e_idx]; + // Nothing to do } static errr parse(FILE *fp) diff --git a/src/loadsave.cc b/src/loadsave.cc index c58279a2..d9dfe452 100644 --- a/src/loadsave.cc +++ b/src/loadsave.cc @@ -1058,6 +1058,7 @@ static void do_item(object_type *o_ptr, ls_flag_t flag) { auto &k_info = game->edit_data.k_info; auto &a_info = game->edit_data.a_info; + auto &e_info = game->edit_data.e_info; byte old_dd; byte old_ds; diff --git a/src/object1.cc b/src/object1.cc index 8795bdbd..3c7da36e 100644 --- a/src/object1.cc +++ b/src/object1.cc @@ -835,6 +835,7 @@ int object_power(object_type *o_ptr) { auto const &k_info = game->edit_data.k_info; auto const &a_info = game->edit_data.a_info; + auto const &e_info = game->edit_data.e_info; auto k_ptr = &k_info[o_ptr->k_idx]; int power = -1; @@ -845,15 +846,21 @@ int object_power(object_type *o_ptr) /* Ego-item */ if (o_ptr->name2) { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; + auto e_ptr = &e_info[o_ptr->name2]; - if (power == -1) power = e_ptr->power; + if (power == -1) + { + power = e_ptr->power; + } if (o_ptr->name2b) { - ego_item_type *e_ptr = &e_info[o_ptr->name2b]; + auto e_ptr = &e_info[o_ptr->name2b]; - if (power == -1) power = e_ptr->power; + if (power == -1) + { + power = e_ptr->power; + } } } @@ -1028,6 +1035,7 @@ static std::string object_desc_aux(object_type const *o_ptr, int pref, int mode) auto const &r_info = game->edit_data.r_info; auto const &k_info = game->edit_data.k_info; auto const &a_info = game->edit_data.a_info; + auto const &e_info = game->edit_data.e_info; static auto const TR_PVAL_MASK = compute_pval_mask(); bool_ hack_name = FALSE; @@ -1425,8 +1433,8 @@ static std::string object_desc_aux(object_type const *o_ptr, int pref, int mode) /* Grab any ego-item name */ if (known && (o_ptr->name2 || o_ptr->name2b) && (o_ptr->tval != TV_ROD_MAIN)) { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; - ego_item_type *e2_ptr = &e_info[o_ptr->name2b]; + auto e_ptr = &e_info[o_ptr->name2]; + auto e2_ptr = &e_info[o_ptr->name2b]; if (e_ptr->before) { @@ -1509,8 +1517,8 @@ static std::string object_desc_aux(object_type const *o_ptr, int pref, int mode) /* Grab any ego-item name */ if (known && (o_ptr->name2 || o_ptr->name2b) && (o_ptr->tval != TV_ROD_MAIN)) { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; - ego_item_type *e2_ptr = &e_info[o_ptr->name2b]; + auto e_ptr = &e_info[o_ptr->name2]; + auto e2_ptr = &e_info[o_ptr->name2b]; if (e_ptr->before) { @@ -1581,8 +1589,8 @@ static std::string object_desc_aux(object_type const *o_ptr, int pref, int mode) /* Grab any ego-item name */ if (known && (o_ptr->name2 || o_ptr->name2b) && (o_ptr->tval != TV_ROD_MAIN)) { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; - ego_item_type *e2_ptr = &e_info[o_ptr->name2b]; + auto e_ptr = &e_info[o_ptr->name2]; + auto e2_ptr = &e_info[o_ptr->name2b]; if (e_ptr->before) { @@ -1631,7 +1639,7 @@ static std::string object_desc_aux(object_type const *o_ptr, int pref, int mode) if (known && o_ptr->name2) { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; + auto e_ptr = &e_info[o_ptr->name2]; t += e_ptr->name; } } @@ -1706,8 +1714,8 @@ static std::string object_desc_aux(object_type const *o_ptr, int pref, int mode) /* Grab any ego-item name */ else if ((o_ptr->name2 || o_ptr->name2b) && (o_ptr->tval != TV_ROD_MAIN)) { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; - ego_item_type *e2_ptr = &e_info[o_ptr->name2b]; + auto e_ptr = &e_info[o_ptr->name2]; + auto e2_ptr = &e_info[o_ptr->name2b]; if (o_ptr->name2 && !e_ptr->before) { @@ -2152,6 +2160,7 @@ cptr item_activation(object_type *o_ptr, byte num) { auto const &k_info = game->edit_data.k_info; auto const &a_info = game->edit_data.a_info; + auto const &e_info = game->edit_data.e_info; /* Needed hacks */ static char rspell[2][80]; diff --git a/src/object2.cc b/src/object2.cc index 7134308f..7c2bd7db 100644 --- a/src/object2.cc +++ b/src/object2.cc @@ -1092,6 +1092,7 @@ s32b object_value_real(object_type const *o_ptr) auto const &r_info = game->edit_data.r_info; auto const &k_info = game->edit_data.k_info; auto const &a_info = game->edit_data.a_info; + auto const &e_info = game->edit_data.e_info; s32b value; @@ -1132,7 +1133,7 @@ s32b object_value_real(object_type const *o_ptr) /* Ego-Item */ else if (o_ptr->name2) { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; + auto e_ptr = &e_info[o_ptr->name2]; /* Hack -- "worthless" ego-items */ if (!e_ptr->cost) return (0L); @@ -1142,7 +1143,7 @@ s32b object_value_real(object_type const *o_ptr) if (o_ptr->name2b) { - ego_item_type *e_ptr = &e_info[o_ptr->name2b]; + auto e_ptr = &e_info[o_ptr->name2b]; /* Hack -- "worthless" ego-items */ if (!e_ptr->cost) return (0L); @@ -2352,6 +2353,7 @@ static bool_ make_artifact(object_type *o_ptr) static bool_ make_ego_item(object_type *o_ptr, bool_ good) { auto const &k_info = game->edit_data.k_info; + auto const &e_info = game->edit_data.e_info; bool_ ret = FALSE; auto k_ptr = &k_info[o_ptr->k_idx]; @@ -2361,9 +2363,9 @@ static bool_ make_ego_item(object_type *o_ptr, bool_ good) std::vector<size_t> ok_ego; /* Grab the ok ego */ - for (size_t i = 0; i < max_e_idx; i++) + for (size_t i = 0; i < e_info.size(); i++) { - ego_item_type *e_ptr = &e_info[i]; + auto e_ptr = &e_info[i]; bool_ ok = FALSE; /* Skip "empty" items */ @@ -2403,7 +2405,7 @@ static bool_ make_ego_item(object_type *o_ptr, bool_ good) for (size_t i = 0; i < ok_ego.size() * 10; i++) { size_t j = ok_ego[rand_int(ok_ego.size())]; - ego_item_type *e_ptr = &e_info[j]; + auto e_ptr = &e_info[j]; /* XXX XXX Enforce minimum "depth" (loosely) */ if (e_ptr->level > dun_level) @@ -2442,7 +2444,7 @@ static bool_ make_ego_item(object_type *o_ptr, bool_ good) for (size_t i = 0; i < ok_ego.size() * 10; i++) { int j = ok_ego[rand_int(ok_ego.size())]; // Explicit int conversion to avoid warning - ego_item_type *e_ptr = &e_info[j]; + auto e_ptr = &e_info[j]; /* Cannot be a double ego of the same ego type */ if (j == o_ptr->name2) continue; @@ -3971,6 +3973,7 @@ void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ grea { auto &k_info = game->edit_data.k_info; auto &a_info = game->edit_data.a_info; + auto const &e_info = game->edit_data.e_info; int i, rolls; auto k_ptr = &k_info[o_ptr->k_idx]; @@ -4233,7 +4236,6 @@ void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ grea /* Hack -- analyze ego-items */ else if (o_ptr->name2) { - ego_item_type *e_ptr; int j; bool_ limit_blows = FALSE; s16b e_idx; @@ -4242,7 +4244,7 @@ void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ grea /* Ok now, THAT is truly ugly */ try_an_other_ego: - e_ptr = &e_info[e_idx]; + auto e_ptr = &e_info[e_idx]; /* Hack -- extra powers */ for (j = 0; j < FLAG_RARITY_MAX; j++) diff --git a/src/variable.cc b/src/variable.cc index 542ba16d..cfb1f7bf 100644 --- a/src/variable.cc +++ b/src/variable.cc @@ -428,11 +428,6 @@ player_class const *cp_ptr; player_spec const *spp_ptr; -/* - * The ego-item arrays - */ -ego_item_type *e_info; - /* jk */ /* the trap-arrays */ trap_type *t_info; @@ -559,11 +554,6 @@ s32b get_level_max_stick = -1; s32b get_level_use_stick = -1; /* - * Maximum number of ego-items in e_info.txt - */ -u16b max_e_idx; - -/* * Maximum number of objects in the level */ u16b max_o_idx; diff --git a/src/variable.hpp b/src/variable.hpp index 829f0f2b..5b40a693 100644 --- a/src/variable.hpp +++ b/src/variable.hpp @@ -7,7 +7,6 @@ #include "deity_type.hpp" #include "dungeon_flag_set.hpp" #include "effect_type.hpp" -#include "ego_item_type_fwd.hpp" #include "fate.hpp" #include "monster_type_fwd.hpp" #include "object_type_fwd.hpp" @@ -149,7 +148,6 @@ extern player_class const *cp_ptr; extern player_spec const *spp_ptr; extern char player_name[32]; extern char player_base[32]; -extern ego_item_type *e_info; extern trap_type *t_info; extern int wildc2i[256]; extern cptr DEFAULT_FEAT_TEXT; @@ -162,7 +160,6 @@ extern char *ANGBAND_DIR_DNGN; extern bool_ (*get_mon_num_hook)(int r_idx); extern bool_ (*get_mon_num2_hook)(int r_idx); extern bool_ (*get_obj_num_hook)(int k_idx); -extern u16b max_e_idx; extern u16b max_o_idx; extern u16b max_m_idx; extern u16b max_t_idx; diff --git a/src/xtra2.cc b/src/xtra2.cc index 25333356..bf39e8ce 100644 --- a/src/xtra2.cc +++ b/src/xtra2.cc @@ -5007,12 +5007,13 @@ void set_grace(s32b v) static bool_ test_object_wish(char *name, object_type *o_ptr, object_type *forge, const char *what) { auto &k_info = game->edit_data.k_info; + auto const &e_info = game->edit_data.e_info; - int i, j, jb, save_aware; + int save_aware; char buf[200]; /* try all objects, this *IS* a very ugly and slow method :( */ - for (i = 0; i < k_info.size(); i++) + for (std::size_t i = 0; i < k_info.size(); i++) { auto k_ptr = &k_info[i]; @@ -5040,9 +5041,9 @@ static bool_ test_object_wish(char *name, object_type *o_ptr, object_type *forge (o_ptr->tval == TV_ROD_MAIN && strstr(name, "rod of"))) { /* try all ego */ - for (j = max_e_idx - 1; j >= 0; j--) + for (std::size_t j = 0; j < e_info.size(); j++) { - ego_item_type *e_ptr = &e_info[j]; + auto e_ptr = &e_info[j]; bool_ ok = FALSE; if (j && !e_ptr->name) continue; @@ -5068,9 +5069,9 @@ static bool_ test_object_wish(char *name, object_type *o_ptr, object_type *forge } /* try all ego */ - for (jb = max_e_idx - 1; jb >= 0; jb--) + for (std::size_t jb = 0; jb < e_info.size(); jb++) { - ego_item_type *eb_ptr = &e_info[jb]; + auto eb_ptr = &e_info[jb]; bool_ ok = FALSE; if (jb && !eb_ptr->name) continue; |