mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-22 17:18:12 +01:00
Improved XPData's bindings.
This commit is contained in:
parent
53c66c2136
commit
e2aabbf150
@ -1,27 +1,33 @@
|
|||||||
#include "xp_data.h"
|
#include "xp_data.h"
|
||||||
|
|
||||||
|
#include "../entity_enums.h"
|
||||||
|
|
||||||
int XPData::get_max_level() {
|
int XPData::get_max_level() {
|
||||||
return _xp_required.size();
|
return EntityEnums::MAX_LEVEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int XPData::xp_required_for_level(int level) {
|
int XPData::get_xp(int level) {
|
||||||
ERR_FAIL_INDEX_V(level, _xp_required.size(), 9999999);
|
ERR_FAIL_INDEX_V(level, EntityEnums::MAX_LEVEL, 9999999);
|
||||||
|
|
||||||
return _xp_required.get(level);
|
return _xps.get(level);
|
||||||
|
}
|
||||||
|
|
||||||
|
void XPData::set_xp(int level, int value) {
|
||||||
|
ERR_FAIL_INDEX(level, EntityEnums::MAX_LEVEL);
|
||||||
|
|
||||||
|
_xps.set(level, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool XPData::can_level_up(int level) {
|
bool XPData::can_level_up(int level) {
|
||||||
return level < _xp_required.size();
|
return level < EntityEnums::MAX_LEVEL;
|
||||||
}
|
|
||||||
|
|
||||||
PoolIntArray XPData::get_xps() {
|
|
||||||
return _xp_required;
|
|
||||||
}
|
|
||||||
void XPData::set_xps(const PoolIntArray &xps) {
|
|
||||||
_xp_required = xps;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XPData::XPData() {
|
XPData::XPData() {
|
||||||
|
_xps.resize(EntityEnums::MAX_LEVEL);
|
||||||
|
|
||||||
|
for (int i = 0; i < _xps.size(); ++i) {
|
||||||
|
_xps.set(i, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XPData::~XPData() {
|
XPData::~XPData() {
|
||||||
@ -29,10 +35,12 @@ XPData::~XPData() {
|
|||||||
|
|
||||||
void XPData::_bind_methods() {
|
void XPData::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_max_level"), &XPData::get_max_level);
|
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("get_xp", "level"), &XPData::get_xp);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_xp", "level", "value"), &XPData::set_xp);
|
||||||
ClassDB::bind_method(D_METHOD("can_level_up", "level"), &XPData::can_level_up);
|
ClassDB::bind_method(D_METHOD("can_level_up", "level"), &XPData::can_level_up);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_xps"), &XPData::get_xps);
|
ADD_GROUP("Level", "level_");
|
||||||
ClassDB::bind_method(D_METHOD("set_xps", "auras"), &XPData::set_xps);
|
for (int i = 0; i < EntityEnums::MAX_LEVEL; ++i) {
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "xps"), "set_xps", "get_xps");
|
ADD_PROPERTYI(PropertyInfo(Variant::INT, "level_" + String::num(i + 1)), "set_xp", "get_xp", i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,21 +10,18 @@ class XPData : public Resource {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
int get_max_level();
|
int get_max_level();
|
||||||
int xp_required_for_level(int level);
|
int get_xp(int level);
|
||||||
|
void set_xp(int level, int value);
|
||||||
bool can_level_up(int level);
|
bool can_level_up(int level);
|
||||||
|
|
||||||
PoolIntArray get_xps();
|
|
||||||
void set_xps(const PoolIntArray &xps);
|
|
||||||
|
|
||||||
XPData();
|
XPData();
|
||||||
~XPData();
|
~XPData();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PoolIntArray _xp_required;
|
Vector<int> _xps;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user