Clenaups to Stat.

This commit is contained in:
Relintai 2020-04-30 11:19:45 +02:00
parent cbac91ae1e
commit 085890cd15
5 changed files with 6 additions and 103 deletions

View File

@ -6622,11 +6622,7 @@ bool Entity::_get(const StringName &p_name, Variant &r_ret) const {
Ref<Stat> stat = _stats[stat_id];
if (stat_prop_name == "modifier_apply_type") {
r_ret = stat->get_stat_modifier_type();
return true;
} else if (stat_prop_name == "public") {
if (stat_prop_name == "public") {
r_ret = stat->get_public();
return true;
@ -6846,7 +6842,6 @@ void Entity::_get_property_list(List<PropertyInfo> *p_list) const {
if (!stat.is_valid())
continue;
p_list->push_back(PropertyInfo(Variant::INT, "stat/" + itos(i) + "/modifier_apply_type", PROPERTY_HINT_NONE, "", property_usange));
p_list->push_back(PropertyInfo(Variant::BOOL, "stat/" + itos(i) + "/public", PROPERTY_HINT_NONE, "", property_usange));
p_list->push_back(PropertyInfo(Variant::BOOL, "stat/" + itos(i) + "/locked", PROPERTY_HINT_NONE, "", property_usange));
p_list->push_back(PropertyInfo(Variant::REAL, "stat/" + itos(i) + "/base", PROPERTY_HINT_NONE, "", property_usange));

View File

@ -28,10 +28,6 @@ SOFTWARE.
#include "core/version.h"
const String Stat::MAIN_STAT_BINDING_STRING = "Agility,Strength,Stamina,Intellect,Spirit";
const String Stat::MODIFIER_APPLY_TYPE_BINDING_STRING = "Standard,Only min modifier,Only Max modifier";
int Stat::get_id() {
return _id;
}
@ -66,13 +62,6 @@ void Stat::set_owner_bind(Node *value) {
_owner = e;
}
Stat::StatModifierApplyType Stat::get_stat_modifier_type() {
return _modifier_apply_type;
}
void Stat::set_stat_modifier_type(Stat::StatModifierApplyType value) {
_modifier_apply_type = value;
}
bool Stat::get_public() {
return _public;
}
@ -251,35 +240,12 @@ void Stat::apply_modifiers() {
reset_values();
if (_modifier_apply_type == MODIFIER_APPLY_TYPE_STANDARD) {
for (int i = 0; i < _modifiers.size(); ++i) {
Ref<StatModifier> mod = _modifiers.get(i);
for (int i = 0; i < _modifiers.size(); ++i) {
Ref<StatModifier> mod = _modifiers.get(i);
_base += mod->get_base_mod();
_bonus += mod->get_bonus_mod();
_percent += mod->get_percent_mod();
}
} else {
for (int i = 0; i < _modifiers.size(); ++i) {
Ref<StatModifier> modifier = _modifiers.get(i);
_base += modifier->get_base_mod();
_bonus += modifier->get_bonus_mod();
if (modifier->get_percent_mod() >= 0) {
_percent += modifier->get_percent_mod();
}
}
float p = 0;
for (int i = 0; i < _modifiers.size(); ++i) {
Ref<StatModifier> modifier = _modifiers.get(i);
if (modifier->get_percent_mod() < p)
p = modifier->get_percent_mod();
}
_percent += p;
_base += mod->get_base_mod();
_bonus += mod->get_bonus_mod();
_percent += mod->get_percent_mod();
}
refresh_currmax();
@ -354,7 +320,6 @@ Dictionary Stat::_to_dict() {
Dictionary dict;
dict["id"] = _id;
dict["modifier_apply_type"] = _modifier_apply_type;
dict["public"] = _public;
dict["locked"] = _locked;
@ -382,7 +347,6 @@ void Stat::_from_dict(const Dictionary &dict) {
ERR_FAIL_COND(dict.empty());
_id = dict.get("id", 0);
_modifier_apply_type = (StatModifierApplyType)((int)dict.get("modifier_apply_type", 0));
_public = dict.get("public", false);
_locked = dict.get("locked", false);
@ -421,8 +385,6 @@ Stat::Stat() {
_id = 0;
_owner = NULL;
_modifier_apply_type = MODIFIER_APPLY_TYPE_STANDARD;
_public = false;
_dirty_mods = false;
@ -444,31 +406,6 @@ Stat::Stat(int id, Entity *owner) {
_id = id;
_owner = owner;
_modifier_apply_type = MODIFIER_APPLY_TYPE_STANDARD;
_public = false;
_dirty_mods = false;
_locked = false;
_dirty = true;
_base = 0;
_bonus = 0;
_percent = 0;
_s_current = 0;
_s_max = 0;
_c_current = 0;
_c_max = 0;
}
Stat::Stat(int id, StatModifierApplyType modifier_apply_type, Entity *owner) {
_id = id;
_owner = owner;
_modifier_apply_type = modifier_apply_type;
_public = false;
_dirty_mods = false;
@ -514,10 +451,6 @@ void Stat::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_owner", "value"), &Stat::set_owner_bind);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "owner", PROPERTY_HINT_RESOURCE_TYPE, "Entity", 0), "set_owner", "get_owner");
ClassDB::bind_method(D_METHOD("get_stat_modifier_type"), &Stat::get_stat_modifier_type);
ClassDB::bind_method(D_METHOD("set_stat_modifier_type", "value"), &Stat::set_stat_modifier_type);
ADD_PROPERTY(PropertyInfo(Variant::INT, "stat_type", PROPERTY_HINT_ENUM, "Standard, Min Modifier, Max modifier"), "set_stat_modifier_type", "get_stat_modifier_type");
ClassDB::bind_method(D_METHOD("get_public"), &Stat::get_public);
ClassDB::bind_method(D_METHOD("set_public", "value"), &Stat::set_public);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "public"), "set_public", "get_public");
@ -592,8 +525,4 @@ void Stat::_bind_methods() {
ClassDB::bind_method(D_METHOD("_from_dict", "dict"), &Stat::_from_dict);
ClassDB::bind_method(D_METHOD("_to_dict"), &Stat::_to_dict);
BIND_ENUM_CONSTANT(MODIFIER_APPLY_TYPE_STANDARD);
BIND_ENUM_CONSTANT(MODIFIER_APPLY_TYPE_ONLY_MIN_MODIFIER);
BIND_ENUM_CONSTANT(MODIFIER_APPLY_TYPE_ONLY_MAX_MODIFIER);
}

View File

@ -37,15 +37,6 @@ class Stat : public Reference {
GDCLASS(Stat, Reference);
public:
static const String MAIN_STAT_BINDING_STRING;
static const String MODIFIER_APPLY_TYPE_BINDING_STRING;
enum StatModifierApplyType {
MODIFIER_APPLY_TYPE_STANDARD,
MODIFIER_APPLY_TYPE_ONLY_MIN_MODIFIER,
MODIFIER_APPLY_TYPE_ONLY_MAX_MODIFIER,
};
static String stat_id_name(int stat_id);
public:
@ -59,9 +50,6 @@ public:
void set_owner(Entity *value);
void set_owner_bind(Node *value);
StatModifierApplyType get_stat_modifier_type();
void set_stat_modifier_type(StatModifierApplyType value);
bool get_public();
void set_public(bool value);
@ -123,7 +111,6 @@ public:
Stat();
Stat(int id, Entity *owner);
Stat(int id, StatModifierApplyType modifier_apply_type, Entity *owner);
~Stat();
protected:
@ -133,8 +120,6 @@ protected:
private:
int _id;
StatModifierApplyType _modifier_apply_type;
Vector<Ref<StatModifier> > _modifiers;
bool _public;
@ -156,6 +141,4 @@ private:
Ref<StatDataEntry> _stat_data_entry;
};
VARIANT_ENUM_CAST(Stat::StatModifierApplyType);
#endif

View File

@ -81,8 +81,6 @@ StatDataEntry::StatDataEntry() {
_base = 0;
_mod_stat_count = 0;
_modifier_apply_type = Stat::MODIFIER_APPLY_TYPE_STANDARD;
for (int i = 0; i < MAX_MOD_STATS; ++i) {
_mod_stats[i].stat_id = 0;
_mod_stats[i].multiplier = 0;

View File

@ -71,8 +71,6 @@ private:
int _mod_stat_count;
ModStat _mod_stats[MAX_MOD_STATS];
Stat::StatModifierApplyType _modifier_apply_type;
};
#endif