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;
14namespace mce { class UUID; }
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 ::ll::TypedStorage<1, 1, bool> mValueChangedDuringTick;
47 // NOLINTEND
48
49public:
50 // prevent constructor by default
51 AttributeInstance();
52
53public:
54 // virtual functions
55 // NOLINTBEGIN
56 virtual ~AttributeInstance();
57
58 virtual void tick(::AttributeModificationContext context);
59 // NOLINTEND
60
61public:
62 // member functions
63 // NOLINTBEGIN
64 MCAPI AttributeInstance(::AttributeInstance const&);
65
66 MCAPI float _calculateValue();
67
68 MCAPI float _sanitizeValue(float value);
69
70 MCAPI ::std::optional<float> addBuff(::AttributeBuff const& buff, ::AttributeModificationContext context);
71
72 MCAPI void addModifier(::AttributeModifier const& modifier, ::AttributeModificationContext context);
73
74 MCAPI void addModifier(::std::shared_ptr<::AttributeModifier> modifier, ::AttributeModificationContext context);
75
76 MCAPI ::std::vector<::AttributeModifier> getModifiers() const;
77
78 MCAPI bool hasModifier(::std::shared_ptr<::AttributeModifier> modifier) const;
79
80 MCAPI ::AttributeInstance& operator=(::AttributeInstance const&);
81
82 MCAPI void removeBuff(::AttributeBuff const& buff);
83
84 MCAPI bool removeModifier(::mce::UUID const& id, ::AttributeModificationContext context);
85
86 MCAPI void removeModifier(::AttributeModifier const& modifier, ::AttributeModificationContext context);
87
88 MCAPI void removeModifier(::std::shared_ptr<::AttributeModifier> modifier, ::AttributeModificationContext context);
89
90 MCAPI void removeModifiers(::AttributeModificationContext context);
91
92 MCAPI void updateModifier(::AttributeModifier const& takeOver, ::AttributeModificationContext context);
93 // NOLINTEND
94
95public:
96 // constructor thunks
97 // NOLINTBEGIN
98 MCAPI void* $ctor(::AttributeInstance const&);
99 // NOLINTEND
100
101public:
102 // destructor thunk
103 // NOLINTBEGIN
104 MCAPI void $dtor();
105 // NOLINTEND
106
107public:
108 // virtual function thunks
109 // NOLINTBEGIN
110 MCAPI void $tick(::AttributeModificationContext context);
111
112
113 // NOLINTEND
114
115public:
116 // vftables
117 // NOLINTBEGIN
118 MCAPI static void** $vftable();
119 // NOLINTEND
120};
Definition AttributeBuff.h:16
Definition AttributeInstanceDelegate.h:16
Definition AttributeInstanceHandle.h:5
Definition AttributeModifier.h:10
Definition Attribute.h:9
Definition TemporalAttributeBuff.h:14
Definition UUID.h:8
Definition AttributeModificationContext.h:10
Definition context.h:5