// This Header is auto generated by BDSLiteLoader Toolchain
#pragma once
#define AUTO_GENERATED
#include "../Global.h"

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class AttributeInstance {

#define AFTER_EXTRA
public:
    inline float getMinValue()const{
        return dAccess<float>(this, 31);
    };
    inline float getMaxValue()const{
        return dAccess<float>(this, 32);
    };
    inline float getCurrentValue()const{
        return dAccess<float>(this, 33);
    };
    //maybe error
    inline void setCurrentValue(float value)const{
        dAccess<float, 33>((void*)this)= value;
        //AttributeInstance::resetToMaxValue Line11~Line28
        // if (this + 3)
        // {
        //     auto p_mDirtyAttributes = dAccess<std::vector<ScoreInfo> *>(this, 65);
        //     ScoreInfo* value = dAccess<ScoreInfo*>(p_mDirtyAttributes, 8);
            
        //     if ( dAccess<ScoreInfo*>(p_mDirtyAttributes, 16) == value )
        //     {
        //         //std::vector<ScoreInfo>::_Emplace_reallocate<ScoreInfo &>(p_mDirtyAttributes, value, &v5);
        //         p_mDirtyAttributes->emplace_back(value);
        //     }
        //     else
        //     {
        //     *v4 = v5;
        //     *(v3 + 8) += 16i64;
        //     }
        // }
    };
    inline float getDefaultValue(int a)const{
        return dAccess<float>(this, 30);
    };

#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_ATTRIBUTEINSTANCE
public:
    class AttributeInstance& operator=(class AttributeInstance const &) = delete;
    AttributeInstance(class AttributeInstance const &) = delete;
    AttributeInstance() = delete;
#endif

public:
    /*0*/ virtual ~AttributeInstance();
    /*1*/ virtual void tick();
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_ATTRIBUTEINSTANCE
#endif
    MCAPI void addBuff(class AttributeBuff const &);
    MCAPI void addModifier(class std::shared_ptr<class AttributeModifier>);
    MCAPI void addModifier(class AttributeModifier const &);
    MCAPI std::vector<class AttributeModifier> getModifiers(int) const;
    MCAPI std::vector<class AttributeModifier> getModifiers() const;
    MCAPI bool hasModifier(class std::shared_ptr<class AttributeModifier>) const;
    MCAPI bool hasModifier(class AttributeModifier const &) const;
    MCAPI void removeModifier(class std::shared_ptr<class AttributeModifier>);
    MCAPI void removeModifier(class AttributeModifier const &);
    MCAPI void resetToDefaultValue();
    MCAPI void resetToMaxValue();
    MCAPI void resetToMinValue();
    MCAPI void setDefaultValue(float, int);
    MCAPI void setDelegate(class std::shared_ptr<class AttributeInstanceDelegate>);
    MCAPI void setMaxValue(float);
    MCAPI void setRange(float, float, float);

//private:
    MCAPI float _calculateValue();
    MCAPI float _calculateValue(class AttributeBuff const &);
    MCAPI float _sanitizeValue(float);
    MCAPI void _setDirty();

private:

};