Skip to content
LeviMC
English
AutoLightDark
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 MCNAPI AttributeInstance(::AttributeInstance const&);
65
66 MCNAPI float _calculateValue();
67
68 MCNAPI float _sanitizeValue(float value);
69
70 MCNAPI ::std::optional<float> addBuff(::AttributeBuff const& buff, ::AttributeModificationContext context);
71
72 MCAPI void addModifier(::std::shared_ptr<::AttributeModifier> modifier, ::AttributeModificationContext context);
73
74 MCAPI ::std::vector<::AttributeModifier> getModifiers() const;
75
76 MCAPI bool hasModifier(::AttributeModifier const& modifier) const;
77
78 MCNAPI ::AttributeInstance& operator=(::AttributeInstance const&);
79
80 MCNAPI void removeBuff(::AttributeBuff const& buff);
81
82 MCAPI bool removeModifier(::mce::UUID const& id, ::AttributeModificationContext context);
83
85
86 MCAPI void removeModifiers(::AttributeModificationContext context);
87
88 MCAPI void updateModifier(::AttributeModifier const& takeOver, ::AttributeModificationContext context);
89 // NOLINTEND
90
91public:
92 // constructor thunks
93 // NOLINTBEGIN
94 MCNAPI void* $ctor(::AttributeInstance const&);
95 // NOLINTEND
96
97public:
98 // destructor thunk
99 // NOLINTBEGIN
100 MCNAPI void $dtor();
101 // NOLINTEND
102
103public:
104 // virtual function thunks
105 // NOLINTBEGIN
107
108
109 // NOLINTEND
110
111public:
112 // vftables
113 // NOLINTBEGIN
114 MCNAPI static void** $vftable();
115 // NOLINTEND
116};
Definition AttributeBuff.h:16
Definition AttributeInstanceDelegate.h:16
Definition AttributeInstanceHandle.h:11
MCAPI void $tick(::AttributeModificationContext context)
MCAPI float _calculateValue()
MCAPI AttributeInstance(::AttributeInstance const &)
MCAPI void removeBuff(::AttributeBuff const &buff)
static MCAPI void ** $vftable()
MCAPI float _sanitizeValue(float value)
MCAPI void removeModifier(::AttributeModifier const &modifier, ::AttributeModificationContext context)
MCAPI::AttributeInstance & operator=(::AttributeInstance const &)
MCAPI void * $ctor(::AttributeInstance const &)
MCAPI void $dtor()
MCAPI ::std::optional< float > addBuff(::AttributeBuff const &buff, ::AttributeModificationContext context)
Definition AttributeModifier.h:10
Definition Attribute.h:9
Definition TemporalAttributeBuff.h:14
Definition UUID.h:8
Definition AttributeModificationContext.h:10
Definition context.h:5