mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-22 17:18:12 +01:00
ItemInstance now has a stat_modifiers property.
This commit is contained in:
parent
1946fd96a4
commit
20aabfda70
@ -105,6 +105,38 @@ int ItemInstance::stat_modifier_get_count() const {
|
||||
return _modifiers.size();
|
||||
}
|
||||
|
||||
Vector<Variant> ItemInstance::stat_modifiers_get() {
|
||||
Vector<Variant> arr;
|
||||
arr.resize(_modifiers.size() * 4);
|
||||
|
||||
for (int i = 0; i < _modifiers.size(); ++i) {
|
||||
int indx = i * 4;
|
||||
const ItemStatModifier &m = _modifiers[i];
|
||||
|
||||
arr.write[indx] = m.stat_id;
|
||||
arr.write[indx + 1] = m.base_mod;
|
||||
arr.write[indx + 2] = m.bonus_mod;
|
||||
arr.write[indx + 3] = m.percent_mod;
|
||||
}
|
||||
|
||||
return arr;
|
||||
}
|
||||
void ItemInstance::stat_modifiers_set(const Vector<Variant> &mods) {
|
||||
ERR_FAIL_COND((mods.size() % 4) != 0);
|
||||
|
||||
_modifiers.resize(mods.size() / 4);
|
||||
|
||||
for (int i = 0; i < _modifiers.size(); ++i) {
|
||||
int indx = i * 4;
|
||||
ItemStatModifier &m = _modifiers.write[i];
|
||||
|
||||
m.stat_id = mods[indx];
|
||||
m.base_mod = mods[indx + 1];
|
||||
m.bonus_mod = mods[indx + 2];
|
||||
m.percent_mod = mods[indx + 3];
|
||||
}
|
||||
}
|
||||
|
||||
int ItemInstance::get_stack_size() const {
|
||||
return _stack_size;
|
||||
}
|
||||
@ -230,6 +262,10 @@ void ItemInstance::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("clear_item_stat_modifiers"), &ItemInstance::clear_item_stat_modifiers);
|
||||
ClassDB::bind_method(D_METHOD("stat_modifier_get_count"), &ItemInstance::stat_modifier_get_count);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("stat_modifiers_get"), &ItemInstance::stat_modifiers_get);
|
||||
ClassDB::bind_method(D_METHOD("stat_modifiers_set", "mods"), &ItemInstance::stat_modifiers_set);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "stat_modifiers", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT, ""), "stat_modifiers_set", "stat_modifiers_get");
|
||||
|
||||
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::STRING, "desc"), "_get_description"));
|
||||
ClassDB::bind_method(D_METHOD("get_description"), &ItemInstance::get_description);
|
||||
|
||||
|
@ -56,6 +56,9 @@ public:
|
||||
|
||||
int stat_modifier_get_count() const;
|
||||
|
||||
Vector<Variant> stat_modifiers_get();
|
||||
void stat_modifiers_set(const Vector<Variant> &mods);
|
||||
|
||||
int get_stack_size() const;
|
||||
void set_stack_size(const int value);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user