diff options
author | Bardur Arantsson <bardur@scientician.net> | 2015-06-12 06:27:05 +0200 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2015-08-01 17:26:10 +0200 |
commit | c6196b25d119a10e79deedef26a73e0d5a021b0e (patch) | |
tree | 199f5bff5cf363787eb610caa495fd3682a463ed /src/spells1.cc | |
parent | 000f6272f8ab1d43ec6300fb5972f7813ada1c88 (diff) |
Refactor cave_type and monster_type to use non-intrusive lists
We use vectors of object indexes instead of embedding the list within
object_type itself.
Diffstat (limited to 'src/spells1.cc')
-rw-r--r-- | src/spells1.cc | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/spells1.cc b/src/spells1.cc index 773e71b4..ccfb59a2 100644 --- a/src/spells1.cc +++ b/src/spells1.cc @@ -3924,8 +3924,6 @@ static bool_ project_o(int who, int r, int y, int x, int dam, int typ) { cave_type *c_ptr = &cave[y][x]; - s16b this_o_idx, next_o_idx = 0; - bool_ obvious = FALSE; u32b f1, f2, f3, f4, f5, esp; @@ -3945,11 +3943,12 @@ static bool_ project_o(int who, int r, int y, int x, int dam, int typ) /* Check new gods. */ project_check_gods(typ); + /* Copy list of objects since we may destroy during iteration */ + auto const object_idxs(c_ptr->o_idxs); + /* Scan all objects in the grid */ - for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) + for (auto const this_o_idx: object_idxs) { - object_type * o_ptr; - bool_ is_art = FALSE; bool_ ignore = FALSE; bool_ plural = FALSE; @@ -3958,10 +3957,7 @@ static bool_ project_o(int who, int r, int y, int x, int dam, int typ) cptr note_kill = NULL; /* Acquire object */ - o_ptr = &o_list[this_o_idx]; - - /* Acquire next object */ - next_o_idx = o_ptr->next_o_idx; + object_type * o_ptr = &o_list[this_o_idx]; /* Extract the flags */ object_flags(o_ptr, &f1, &f2, &f3, &f4, &f5, &esp); |