entity_spell_system/data/xp_data.cpp

47 lines
1.1 KiB
C++
Raw Normal View History

2019-04-20 14:02:55 +02:00
#include "xp_data.h"
2019-10-16 13:28:16 +02:00
#include "../entity_enums.h"
2019-10-16 02:33:26 +02:00
int XPData::get_max_level() {
2019-10-16 13:28:16 +02:00
return EntityEnums::MAX_LEVEL;
2019-04-20 14:02:55 +02:00
}
2019-10-16 13:28:16 +02:00
int XPData::get_xp(int level) {
ERR_FAIL_INDEX_V(level - 1, EntityEnums::MAX_LEVEL, 9999999);
2019-09-12 14:40:57 +02:00
return _xps.get(level - 1);
2019-04-20 14:02:55 +02:00
}
2019-10-16 13:28:16 +02:00
void XPData::set_xp(int level, int value) {
ERR_FAIL_INDEX(level - 1, EntityEnums::MAX_LEVEL);
2019-04-20 14:02:55 +02:00
_xps.set(level - 1, value);
2019-09-12 14:40:57 +02:00
}
2019-10-16 13:28:16 +02:00
bool XPData::can_level_up(int level) {
return level < EntityEnums::MAX_LEVEL;
2019-09-12 14:40:57 +02:00
}
XPData::XPData() {
2019-10-16 13:28:16 +02:00
_xps.resize(EntityEnums::MAX_LEVEL);
for (int i = 0; i < _xps.size(); ++i) {
_xps.set(i, 0);
}
2019-04-20 14:02:55 +02:00
}
XPData::~XPData() {
}
void XPData::_bind_methods() {
2019-09-12 14:40:57 +02:00
ClassDB::bind_method(D_METHOD("get_max_level"), &XPData::get_max_level);
2019-10-16 13:28:16 +02:00
ClassDB::bind_method(D_METHOD("get_xp", "level"), &XPData::get_xp);
ClassDB::bind_method(D_METHOD("set_xp", "level", "value"), &XPData::set_xp);
2019-09-12 14:40:57 +02:00
ClassDB::bind_method(D_METHOD("can_level_up", "level"), &XPData::can_level_up);
2019-10-16 13:28:16 +02:00
ADD_GROUP("Level", "level_");
for (int i = 1; i <= EntityEnums::MAX_LEVEL; ++i) {
ADD_PROPERTYI(PropertyInfo(Variant::INT, "level_" + String::num(i)), "set_xp", "get_xp", i);
2019-10-16 13:28:16 +02:00
}
2019-04-20 14:02:55 +02:00
}