diff options
author | Bardur Arantsson <bardur@scientician.net> | 2015-03-22 18:38:09 +0100 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2015-03-22 18:38:09 +0100 |
commit | 97c42872e9da98a7aa4a1d5fe70bfc1e8adfa68c (patch) | |
tree | 74ca3b6b0cff3443650ca3e82fb010390a00e147 /src | |
parent | 92344ee3f306ecdfd1da4365ffc5cab6eaa29afd (diff) |
Split school_book_type out of types.h
- Rename to school_book
- Remove pointless spell_idx_list indirection
Diffstat (limited to 'src')
-rw-r--r-- | src/q_library.cc | 2 | ||||
-rw-r--r-- | src/school_book.hpp | 15 | ||||
-rw-r--r-- | src/school_book_fwd.hpp | 3 | ||||
-rw-r--r-- | src/spell_idx_list.hpp | 8 | ||||
-rw-r--r-- | src/spell_idx_list_fwd.h | 3 | ||||
-rw-r--r-- | src/spells3.cc | 10 | ||||
-rw-r--r-- | src/spells4.cc | 66 | ||||
-rw-r--r-- | src/spells4.hpp | 5 | ||||
-rw-r--r-- | src/types.h | 9 | ||||
-rw-r--r-- | src/types_fwd.h | 1 |
10 files changed, 51 insertions, 71 deletions
diff --git a/src/q_library.cc b/src/q_library.cc index f8f7fb29..8cbadbfe 100644 --- a/src/q_library.cc +++ b/src/q_library.cc @@ -156,7 +156,7 @@ static void quest_library_finalize_book() int i = 0; for (i = 1; i <= 3; i++) { - school_book_type *school_book = school_books_at(BOOK_PLAYER); + school_book *school_book = school_books_at(BOOK_PLAYER); school_book_add_spell(school_book, library_quest_book_get_slot(i)); } } diff --git a/src/school_book.hpp b/src/school_book.hpp new file mode 100644 index 00000000..51d3e6a7 --- /dev/null +++ b/src/school_book.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "h-basic.h" + +#include <vector> + +/** + * School book. + */ +struct school_book { + /** + * Indexes of all the spells in the book. + */ + std::vector<s32b> spell_idxs; +}; diff --git a/src/school_book_fwd.hpp b/src/school_book_fwd.hpp new file mode 100644 index 00000000..46363da6 --- /dev/null +++ b/src/school_book_fwd.hpp @@ -0,0 +1,3 @@ +#pragma once + +struct school_book; diff --git a/src/spell_idx_list.hpp b/src/spell_idx_list.hpp deleted file mode 100644 index 5f817452..00000000 --- a/src/spell_idx_list.hpp +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include "spell_idx_list_fwd.h" -#include <vector> - -struct spell_idx_list { - std::vector<s32b> v; -}; diff --git a/src/spell_idx_list_fwd.h b/src/spell_idx_list_fwd.h deleted file mode 100644 index b961eb4e..00000000 --- a/src/spell_idx_list_fwd.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -struct spell_idx_list; diff --git a/src/spells3.cc b/src/spells3.cc index 2e709391..00cdfcc4 100644 --- a/src/spells3.cc +++ b/src/spells3.cc @@ -11,7 +11,6 @@ #include "object2.hpp" #include "skills.hpp" #include "spell_type.hpp" -#include "spell_idx_list.hpp" #include "spells1.hpp" #include "spells2.hpp" #include "spells4.hpp" @@ -2909,15 +2908,14 @@ casting_result tulkas_whirlwind() int udun_in_book(s32b sval, s32b pval) { int count = 0; - school_book_type *school_book; random_book_setup(sval, pval); /* Get the school book */ - school_book = school_books_at(sval); + school_book *school_book = school_books_at(sval); /* Go through spells */ - for (auto spell_idx : school_book->spell_idx_list->v) { + for (auto spell_idx : school_book->spell_idxs) { spell_type *spell = spell_at(spell_idx); for (auto school_idx : spell_type_get_schools(spell)) { @@ -2939,10 +2937,10 @@ int levels_in_book(s32b sval, s32b pval) random_book_setup(sval, pval); /* Get the school book */ - school_book_type *school_book = school_books_at(sval); + school_book *school_book = school_books_at(sval); /* Parse all spells */ - for (auto spell_idx : school_book->spell_idx_list->v) + for (auto spell_idx : school_book->spell_idxs) { spell_type *spell = spell_at(spell_idx); levels += spell_type_skill_level(spell); diff --git a/src/spells4.cc b/src/spells4.cc index d4aa7a72..45eb8c15 100644 --- a/src/spells4.cc +++ b/src/spells4.cc @@ -5,8 +5,8 @@ #include "gods.hpp" #include "lua_bind.hpp" #include "options.hpp" +#include "school_book.hpp" #include "spell_type.hpp" -#include "spell_idx_list.hpp" #include "spells3.hpp" #include "spells5.hpp" #include "spells6.hpp" @@ -18,7 +18,11 @@ #include <cassert> #include <sstream> -school_book_type school_books[SCHOOL_BOOKS_SIZE]; +static std::array<school_book, SCHOOL_BOOKS_SIZE> &school_books() { + static std::array<school_book, SCHOOL_BOOKS_SIZE> *instance = new std::array<school_book, SCHOOL_BOOKS_SIZE>; + return *instance; +} + s32b SCHOOL_AIR; s32b SCHOOL_AULE; @@ -106,35 +110,23 @@ void print_spell_desc(int s, int y) } } -school_book_type *school_books_at(int i) +school_book *school_books_at(int i) { assert(i >= 0); assert(i < SCHOOL_BOOKS_SIZE); - return &school_books[i]; -} - -static void school_book_init(school_book_type *school_book) -{ - school_book->spell_idx_list = new spell_idx_list(); + return &school_books()[i]; } -void school_book_add_spell(school_book_type *school_book, s32b spell_idx) +void school_book_add_spell(school_book *school_book, s32b spell_idx) { assert(school_book != nullptr); - assert(school_book->spell_idx_list != nullptr); - school_book->spell_idx_list->v.push_back(spell_idx); + school_book->spell_idxs.insert(std::begin(school_book->spell_idxs), spell_idx); } int school_book_length(int sval) { - school_book_type *school_book = school_books_at(sval); - - if (sval == BOOK_RANDOM) - { - return 1; - } - - return school_book->spell_idx_list->v.size(); + school_book *school_book = school_books_at(sval); + return school_book->spell_idxs.size(); } int spell_x(int sval, int pval, int i) @@ -147,38 +139,30 @@ int spell_x(int sval, int pval, int i) } else { - school_book_type *school_book = school_books_at(sval); - return school_book->spell_idx_list->v.at(i); + school_book *school_book = school_books_at(sval); + return school_book->spell_idxs.at(i); } } bool_ school_book_contains_spell(int sval, s32b spell_idx) { random_book_setup(sval, spell_idx); - school_book_type *school_book = school_books_at(sval); - return (school_book->spell_idx_list->v.end() != - std::find(school_book->spell_idx_list->v.begin(), - school_book->spell_idx_list->v.end(), + school_book *school_book = school_books_at(sval); + return (school_book->spell_idxs.end() != + std::find(school_book->spell_idxs.begin(), + school_book->spell_idxs.end(), spell_idx)); } -void push_spell(int book_idx, s32b spell_idx) +static void push_spell(int book_idx, s32b spell_idx) { - school_book_type *school_book = school_books_at(book_idx); + school_book *school_book = school_books_at(book_idx); assert(school_book != NULL); school_book_add_spell(school_book, spell_idx); } void init_school_books() { - int i; - - /* Initialize the new school books */ - for (i = 0; i<SCHOOL_BOOKS_SIZE; i++) - { - school_book_init(&school_books[i]); - } - /* Note: We're adding the spells in the reverse order that they appear in each book. This is because the list operations insert at the front. */ @@ -400,8 +384,9 @@ void random_book_setup(s16b sval, s32b spell_idx) { if (sval == BOOK_RANDOM) { - school_book_type *school_book = school_books_at(sval); - school_book->spell_idx_list->v.at(0) = spell_idx; + school_book *school_book = school_books_at(sval); + school_book->spell_idxs.clear(); + school_book->spell_idxs.push_back(spell_idx); } } @@ -465,15 +450,14 @@ int print_book(s16b sval, s32b pval, object_type *obj) { int y = 2; int i; - school_book_type *school_book; random_book_setup(sval, pval); - school_book = school_books_at(sval); + school_book *school_book = school_books_at(sval); /* Parse all spells */ i = 0; - for (auto spell_idx : school_book->spell_idx_list->v) + for (auto spell_idx : school_book->spell_idxs) { byte color = TERM_L_DARK; bool_ is_ok; diff --git a/src/spells4.hpp b/src/spells4.hpp index b358b571..7a8c8985 100644 --- a/src/spells4.hpp +++ b/src/spells4.hpp @@ -1,6 +1,7 @@ #pragma once #include "angband.h" +#include "school_book.hpp" extern s32b SCHOOL_AIR; extern s32b SCHOOL_AULE; @@ -30,8 +31,8 @@ extern s32b SCHOOL_YAVANNA; void print_spell_desc(int s, int y); void init_school_books(); -school_book_type *school_books_at(int sval); -void school_book_add_spell(school_book_type *school_book, s32b spell_idx); +school_book *school_books_at(int sval); +void school_book_add_spell(school_book *school_book, s32b spell_idx); void random_book_setup(s16b sval, s32b spell_idx); int print_spell(cptr label, byte color, int y, s32b s); int print_book(s16b sval, s32b pval, object_type *obj); diff --git a/src/types.h b/src/types.h index ab62c208..ff944c0e 100644 --- a/src/types.h +++ b/src/types.h @@ -1,7 +1,6 @@ /* File: types.h */ #include "types_fwd.h" -#include "spell_idx_list_fwd.h" /* Purpose: global type declarations */ @@ -2472,14 +2471,6 @@ struct school_type }; /* - * School book. - */ -typedef struct school_book_type school_book_type; -struct school_book_type { - struct spell_idx_list *spell_idx_list; -}; - -/* * Desc for GF_FOO */ typedef struct gf_name_type gf_name_type; diff --git a/src/types_fwd.h b/src/types_fwd.h index 3a07d419..d1dbc7e0 100644 --- a/src/types_fwd.h +++ b/src/types_fwd.h @@ -69,7 +69,6 @@ struct skill_type; struct spell_type; struct school_provider_list; struct school_type; -struct school_book_type; struct gf_name_type; struct timer_type; struct ability_type; |