summaryrefslogtreecommitdiff
path: root/src/mmo
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-03-30 23:14:12 -0700
committerBen Longbons <b.r.longbons@gmail.com>2014-03-31 10:18:49 -0700
commit1a651243bb2c8e18baa9aac30ac52a62185074e7 (patch)
treedd2c0bfc448faef129fb64edec9f64d2ab12bfe5 /src/mmo
parent769e8ac9c17779a15492d7fcfc1931c014670c2d (diff)
downloadtmwa-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.cpp2
-rw-r--r--src/mmo/core.hpp4
-rw-r--r--src/mmo/dumb_ptr.hpp2
-rw-r--r--src/mmo/extract.hpp2
-rw-r--r--src/mmo/mmo.hpp29
-rw-r--r--src/mmo/utils.hpp1
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"