LeviLamina
Loading...
Searching...
No Matches
CerealItemComponentFactory.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/sem_ver/SemVersion.h"
7#include "mc/resources/JsonBetaState.h"
8#include "mc/util/CerealSchemaUpgradeSet.h"
9
10// auto generated forward declare list
11// clang-format off
13class Experiments;
15class ItemComponent;
17namespace Json { class Value; }
18namespace cereal { struct ReflectionCtx; }
19// clang-format on
20
22public:
23 // CerealItemComponentFactory inner types declare
24 // clang-format off
25 struct ComponentMetadata;
26 // clang-format on
27
28 // CerealItemComponentFactory inner types define
30 public:
31 // ComponentMetadata inner types define
32 using ParseFunction = ::std::function<bool(::Experiments const&, ::SemVersion const&)>;
33
34 using Ctor = ::std::unique_ptr<::ItemComponent> (*)();
35
36 public:
37 // member variables
38 // NOLINTBEGIN
39 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ItemComponent> (*)()> makeUnique;
40 ::ll::TypedStorage<8, 24, ::std::vector<::PackLoadRequirement>> requirements;
41 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> releasedMinFormatVersion;
42 ::ll::TypedStorage<8, 32, ::std::optional<::SemVersion>> deprecatedVersion;
43 ::ll::TypedStorage<8, 24, ::CerealSchemaUpgradeSet> versionUpgrades;
44 ::ll::TypedStorage<8, 64, ::std::function<bool(::Experiments const&, ::SemVersion const&)>> onParseCallback;
45 // NOLINTEND
46
47 public:
48 // prevent constructor by default
49 ComponentMetadata& operator=(ComponentMetadata const&);
51
52 public:
53 // member functions
54 // NOLINTBEGIN
56
57 MCAPI ::CerealItemComponentFactory::ComponentMetadata&
59
60 MCAPI ~ComponentMetadata();
61 // NOLINTEND
62
63 public:
64 // constructor thunks
65 // NOLINTBEGIN
67 // NOLINTEND
68
69 public:
70 // destructor thunk
71 // NOLINTBEGIN
72 MCAPI void $dtor();
73 // NOLINTEND
74 };
75
76public:
77 // member variables
78 // NOLINTBEGIN
79 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::CerealItemComponentFactory::ComponentMetadata>>
80 mRegisteredComponents;
81 ::ll::TypedStorage<8, 24, ::SemVersion> mReleasedMinFormatVersionForAnyComponent;
82 // NOLINTEND
83
84public:
85 // static functions
86 // NOLINTBEGIN
87 MCAPI static void
88 addAllComponentUpgrades(::CerealDocumentUpgrader& documentUpgrader, ::cereal::ReflectionCtx const& ctx);
89
90 MCAPI static void addComponentMetadata(
92 ::std::string const& componentName,
94 ::std::optional<::SemVersion> releasedMinFormatVersion
95 );
96
97 MCAPI static ::std::shared_ptr<::ItemComponent>
98 constructItemComponent(::std::string const& name, ::cereal::ReflectionCtx const& ctx);
99
100 MCAPI static ::CerealItemComponentFactory* contextInstanceIfAvailable(::cereal::ReflectionCtx const& ctx);
101
102 MCAPI static void deprecateComponentStartingFromVersion(
103 ::std::string const& name,
104 ::SemVersion deprecatedVersion,
106 );
107
108 MCAPI static bool isComponentBasedItemSchema(
109 ::SemVersion const& formatVersion,
110 ::Json::Value const& itemData,
112 );
113
114 MCAPI static bool validateCerealComponent(
115 ::std::string const& componentName,
116 ::SemVersion const& documentVersion,
117 ::IPackLoadContext const& packLoadContext,
119 bool forBetaParsing,
120 ::JsonBetaState canUseBeta
121 );
122 // NOLINTEND
123};
Definition CerealDocumentUpgrader.h:13
Definition CerealItemComponentFactory.h:21
Definition Experiments.h:14
Definition IPackLoadContext.h:20
Definition ItemComponent.h:16
Definition Value.h:16
Definition PackLoadRequirement.h:13
Definition SemVersion.h:16
Definition CerealItemComponentFactory.h:29
Definition ReflectionCtx.h:11
Definition ctx.h:5