From 544aa45a8049b93c99374a3fa0a9d07fa7d28aa9 Mon Sep 17 00:00:00 2001 From: Relintai Date: Thu, 12 Sep 2019 14:40:57 +0200 Subject: [PATCH] Bindings for XPData. --- data/xp_data.cpp | 36 ++++++++++++++++++++++-------------- data/xp_data.h | 17 +++++++++++------ entities/entity.cpp | 2 +- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/data/xp_data.cpp b/data/xp_data.cpp index fa00398..a1afc16 100644 --- a/data/xp_data.cpp +++ b/data/xp_data.cpp @@ -2,32 +2,40 @@ int XPData::get_max_level() { - return _xp_required->size(); + return _xp_required.size(); } int XPData::xp_required_for_level(int level) { - level -= 1; - if (level >= _xp_required->size()) { - return -1; - } - return _xp_required->get(level); + ERR_FAIL_COND_V(level < 0, 1); + ERR_FAIL_COND_V(level > _xp_required.size(), 99999999); + + return _xp_required.get(level); } -bool XPData::can_level_up(int level) -{ - level -= 1; - return level < _xp_required->size(); +bool XPData::can_level_up(int level) { + return level <= _xp_required.size(); } -XPData::XPData() -{ - _xp_required = memnew(PoolIntArray()); +PoolIntArray XPData::get_xps() { + return _xp_required; +} +void XPData::set_xps(const PoolIntArray &xps) { + _xp_required = xps; +} + +XPData::XPData() { } XPData::~XPData() { - memdelete(_xp_required); } void XPData::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_max_level"), &XPData::get_max_level); + ClassDB::bind_method(D_METHOD("xp_required_for_level", "level"), &XPData::xp_required_for_level); + ClassDB::bind_method(D_METHOD("can_level_up", "level"), &XPData::can_level_up); + + ClassDB::bind_method(D_METHOD("get_xps"), &XPData::get_xps); + ClassDB::bind_method(D_METHOD("set_xps", "auras"), &XPData::set_xps); + ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "xps"), "set_xps", "get_xps"); } diff --git a/data/xp_data.h b/data/xp_data.h index 430aafe..2bca667 100644 --- a/data/xp_data.h +++ b/data/xp_data.h @@ -8,18 +8,23 @@ class XPData : public Resource { GDCLASS(XPData, Resource); -private: - PoolIntArray *_xp_required; - -protected: - static void _bind_methods(); - public: int get_max_level(); int xp_required_for_level(int level); bool can_level_up(int level); + + PoolIntArray get_xps(); + void set_xps(const PoolIntArray &xps); + XPData(); ~XPData(); + +protected: + static void _bind_methods(); + + +private: + PoolIntArray _xp_required; }; #endif diff --git a/entities/entity.cpp b/entities/entity.cpp index 8392649..e88725e 100644 --- a/entities/entity.cpp +++ b/entities/entity.cpp @@ -3218,7 +3218,7 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("adds_xp", "value"), &Entity::adds_xp); ClassDB::bind_method(D_METHOD("addc_xp", "value"), &Entity::addc_xp); ClassDB::bind_method(D_METHOD("s_levelup", "value"), &Entity::s_levelup); - ClassDB::bind_method(D_METHOD("c_levelup", "value"), &Entity::c_levelup); + ClassDB::bind_method(D_METHOD("c_levelup", "value"), &Entity::c_levelup); //Aura Manipulation ClassDB::bind_method(D_METHOD("sadd_aura", "aura"), &Entity::sadd_aura);