diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2014-03-30 23:14:12 -0700 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2014-03-31 10:18:49 -0700 |
commit | 1a651243bb2c8e18baa9aac30ac52a62185074e7 (patch) | |
tree | dd2c0bfc448faef129fb64edec9f64d2ab12bfe5 /src/mmo | |
parent | 769e8ac9c17779a15492d7fcfc1931c014670c2d (diff) | |
download | tmwa-1a651243bb2c8e18baa9aac30ac52a62185074e7.tar.gz tmwa-1a651243bb2c8e18baa9aac30ac52a62185074e7.tar.bz2 tmwa-1a651243bb2c8e18baa9aac30ac52a62185074e7.tar.xz tmwa-1a651243bb2c8e18baa9aac30ac52a62185074e7.zip |
Be stricter about most arrays
Diffstat (limited to 'src/mmo')
-rw-r--r-- | src/mmo/core.cpp | 2 | ||||
-rw-r--r-- | src/mmo/core.hpp | 4 | ||||
-rw-r--r-- | src/mmo/dumb_ptr.hpp | 2 | ||||
-rw-r--r-- | src/mmo/extract.hpp | 2 | ||||
-rw-r--r-- | src/mmo/mmo.hpp | 29 | ||||
-rw-r--r-- | src/mmo/utils.hpp | 1 |
6 files changed, 25 insertions, 15 deletions
diff --git a/src/mmo/core.cpp b/src/mmo/core.cpp index 1a9a52e..26b5128 100644 --- a/src/mmo/core.cpp +++ b/src/mmo/core.cpp @@ -83,7 +83,7 @@ int main(int argc, char **argv) ZString *args = static_cast<ZString *>(alloca(argc * sizeof(ZString))); for (int i = 0; i < argc; ++i) args[i] = ZString(strings::really_construct_from_a_pointer, argv[i], nullptr); - do_init(argc, args); + do_init(Slice<ZString>(args, argc)); if (!runflag) { diff --git a/src/mmo/core.hpp b/src/mmo/core.hpp index 1788ece..7a26f7d 100644 --- a/src/mmo/core.hpp +++ b/src/mmo/core.hpp @@ -3,6 +3,8 @@ # include "../sanity.hpp" +# include "../range/slice.hpp" + # include "../strings/fwd.hpp" /// core.c contains a server-independent main() function @@ -13,7 +15,7 @@ extern volatile bool runflag; /// This is an external function defined by each server /// This function must register stuff for the parse loop -extern int do_init(int, ZString *); +extern int do_init(Slice<ZString>); /// Cleanup function called whenever a signal kills us /// or when if we manage to exit() gracefully. diff --git a/src/mmo/dumb_ptr.hpp b/src/mmo/dumb_ptr.hpp index 98c6308..9632945 100644 --- a/src/mmo/dumb_ptr.hpp +++ b/src/mmo/dumb_ptr.hpp @@ -29,8 +29,6 @@ # include "../strings/zstring.hpp" # include "../strings/xstring.hpp" -# include "../generic/const_array.hpp" - // unmanaged new/delete-able pointer // should be replaced by std::unique_ptr<T> template<class T> diff --git a/src/mmo/extract.hpp b/src/mmo/extract.hpp index 0ea9eb9..622281b 100644 --- a/src/mmo/extract.hpp +++ b/src/mmo/extract.hpp @@ -25,8 +25,6 @@ # include "../strings/xstring.hpp" -# include "../generic/const_array.hpp" - # include "mmo.hpp" # include "utils.hpp" diff --git a/src/mmo/mmo.hpp b/src/mmo/mmo.hpp index 6b3cd53..f867492 100644 --- a/src/mmo/mmo.hpp +++ b/src/mmo/mmo.hpp @@ -21,6 +21,7 @@ constexpr int MAX_MAP_PER_SERVER = 512; constexpr int MAX_INVENTORY = 100; constexpr int MAX_AMOUNT = 30000; constexpr int MAX_ZENY = 1000000000; // 1G zeny +constexpr int TRADE_MAX = 10; enum class SkillID : uint16_t; constexpr SkillID MAX_SKILL = SkillID(474); // not 450 @@ -43,6 +44,20 @@ constexpr int MAX_PARTY = 12; # define MIN_CLOTH_COLOR battle_config.min_cloth_color # define MAX_CLOTH_COLOR battle_config.max_cloth_color +template<class T, size_t n> +struct Array +{ + T data[n]; +public: + T& operator [](size_t i) { assert (i < n); return data[i]; } + const T& operator [](size_t i) const { assert (i < n); return data[i]; } + + T *begin() { return data + 0; } + T *end() { return data + n; } + const T *begin() const { return data + 0; } + const T *end() const { return data + n; } +}; + struct AccountName : VString<23> {}; struct AccountPass : VString<23> {}; struct AccountCrypt : VString<39> {}; @@ -319,14 +334,14 @@ struct CharData unsigned int mapport; struct point last_point, save_point; - struct item inventory[MAX_INVENTORY]; + Array<struct item, MAX_INVENTORY> inventory; earray<skill_value, SkillID, MAX_SKILL> skill; int global_reg_num; - struct global_reg global_reg[GLOBAL_REG_NUM]; + Array<struct global_reg, GLOBAL_REG_NUM> global_reg; int account_reg_num; - struct global_reg account_reg[ACCOUNT_REG_NUM]; + Array<struct global_reg, ACCOUNT_REG_NUM> account_reg; int account_reg2_num; - struct global_reg account_reg2[ACCOUNT_REG2_NUM]; + Array<struct global_reg, ACCOUNT_REG2_NUM> account_reg2; }; struct CharPair @@ -345,11 +360,9 @@ struct storage int account_id; short storage_status; short storage_amount; - struct item storage_[MAX_STORAGE]; + Array<struct item, MAX_STORAGE> storage_; }; -//struct map_session_data; - struct GM_Account { int account_id; @@ -371,7 +384,7 @@ struct party PartyName name; int exp; int item; - struct party_member member[MAX_PARTY]; + Array<struct party_member, MAX_PARTY> member; }; #endif // TMWA_MMO_MMO_HPP diff --git a/src/mmo/utils.hpp b/src/mmo/utils.hpp index 5e9de26..40ff595 100644 --- a/src/mmo/utils.hpp +++ b/src/mmo/utils.hpp @@ -10,7 +10,6 @@ # include "../strings/fwd.hpp" # include "../strings/vstring.hpp" -# include "../generic/const_array.hpp" # include "../generic/operators.hpp" # include "../io/fwd.hpp" |