LeviLamina
Loading...
Searching...
No Matches
AttributeInstance.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated forward declare list
6// clang-format off
7class Attribute;
8class AttributeBuff;
15// clang-format on
16
17class AttributeInstance {
18public:
19 // AttributeInstance inner types define
20 using ModifierVector = ::std::vector<::AttributeModifier>;
21
22public:
23 // member variables
24 // NOLINTBEGIN
25 ::ll::TypedStorage<8, 8, ::Attribute const*> mAttribute;
26 ::ll::TypedStorage<8, 24, ::std::vector<::AttributeModifier>> mModifierList;
27 ::ll::TypedStorage<8, 24, ::std::vector<::TemporalAttributeBuff>> mTemporalBuffs;
28 ::ll::TypedStorage<8, 24, ::std::vector<::AttributeInstanceHandle>> mListeners;
29 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::AttributeInstanceDelegate>> mDelegate;
30 union {
31 ::ll::TypedStorage<4, 12, float[3]> mDefaultValues;
32 struct {
33 ::ll::TypedStorage<4, 4, float> mDefaultMinValue;
34 ::ll::TypedStorage<4, 4, float> mDefaultMaxValue;
35 ::ll::TypedStorage<4, 4, float> mDefaultValue;
36 };
37 };
38 union {
39 ::ll::TypedStorage<4, 12, float[3]> mCurrentValues;
40 struct {
41 ::ll::TypedStorage<4, 4, float> mCurrentMinValue;
42 ::ll::TypedStorage<4, 4, float> mCurrentMaxValue;
43 ::ll::TypedStorage<4, 4, float> mCurrentValue;
44 };
45 };
46 // NOLINTEND
47
48public:
49 // prevent constructor by default
50 AttributeInstance();
51
52public:
53 // virtual functions
54 // NOLINTBEGIN
55 virtual ~AttributeInstance();
56
57 virtual void tick(::AttributeModificationContext context);
58 // NOLINTEND
59
60public:
61 // member functions
62 // NOLINTBEGIN
63 MCAPI AttributeInstance(::AttributeInstance const&);
64
65 MCAPI float _calculateValue();
66
67 MCAPI float _sanitizeValue(float value);
68
69 MCAPI ::std::optional<float> addBuff(::AttributeBuff const& buff, ::AttributeModificationContext context);
70
71 MCAPI void addModifier(::AttributeModifier const& modifier, ::AttributeModificationContext context);
72
73 MCAPI void addModifier(::std::shared_ptr<::AttributeModifier> modifier, ::AttributeModificationContext context);
74
75#ifdef LL_PLAT_C
76 MCAPI void clearListenersAndDelegates();
77#endif
78
79 MCFOLD ::Attribute const* getAttribute() const;
80
81 MCAPI float getCurrentValue() const;
82
83 MCAPI float getDefaultValue(int operand) const;
84
85 MCAPI ::AttributeInstanceHandle getHandle() const;
86
87 MCAPI float getMaxValue() const;
88
89 MCAPI float getMinValue() const;
90
91 MCAPI ::std::vector<::AttributeModifier> getModifiers() const;
92
93 MCAPI bool hasModifier(::AttributeModifier const& modifier) const;
94
95 MCAPI bool hasModifiers() const;
96
97 MCAPI bool hasTemporalBuffs() const;
98
99 MCFOLD bool isValid() const;
100
101 MCAPI ::AttributeInstance& operator=(::AttributeInstance const&);
102
103 MCAPI void recalculateModifiers(::AttributeModificationContext context);
104
105 MCAPI void registerListener(::AttributeInstanceConstRef listener);
106
107 MCAPI void removeBuff(::AttributeBuff const& buff);
108
109 MCAPI void removeModifier(::AttributeModifier const& modifier, ::AttributeModificationContext context);
110
111 MCAPI void removeModifiers(::AttributeModificationContext context);
112
113 MCAPI void resetToDefaultValue(::AttributeModificationContext context);
114
115 MCAPI void setDefaultValue(float defaultValue, int operand, ::AttributeModificationContext context);
116
117 MCAPI void setDefaultValueOnly(float newDefaultValue, ::AttributeModificationContext context);
118
119 MCAPI void setDelegate(::std::shared_ptr<::AttributeInstanceDelegate> delegate);
120
121 MCAPI void setMaxValue(float max, ::AttributeModificationContext context);
122
123 MCAPI void setRange(float min, float defaultValue, float max, ::AttributeModificationContext context);
124
125 MCAPI void updateModifier(::AttributeModifier const& takeOver, ::AttributeModificationContext context);
126 // NOLINTEND
127
128public:
129 // constructor thunks
130 // NOLINTBEGIN
131 MCAPI void* $ctor(::AttributeInstance const&);
132 // NOLINTEND
133
134public:
135 // destructor thunk
136 // NOLINTBEGIN
137 MCAPI void $dtor();
138 // NOLINTEND
139
140public:
141 // virtual function thunks
142 // NOLINTBEGIN
143 MCAPI void $tick(::AttributeModificationContext context);
144
145
146 // NOLINTEND
147
148public:
149 // vftables
150 // NOLINTBEGIN
151 MCAPI static void** $vftable();
152 // NOLINTEND
153};
Definition AttributeBuff.h:15
Definition AttributeInstanceConstRef.h:13
Definition AttributeInstanceDelegate.h:15
Definition AttributeInstanceHandle.h:11
Definition AttributeModifier.h:10
Definition Attribute.h:9
Definition TemporalAttributeBuff.h:15
Definition AttributeModificationContext.h:10
Definition context.h:5