LeviLamina
Loading...
Searching...
No Matches
StructureResourceHandler.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/oreui/interface/IResourceHandler.h"
7#include "mc/client/gui/oreui/resources/ResourceRequest.h"
8#include "mc/client/gui/oreui/resources/ResourceResponse.h"
9#include "mc/deps/core/threading/MPMCQueue.h"
10#include "mc/deps/core/threading/TaskGroup.h"
11#include "mc/deps/game_refs/WeakRef.h"
12#include "mc/platform/UUID.h"
13
14// auto generated forward declare list
15// clang-format off
16class IClientInstance;
18namespace Editor { class ThumbnailFileBytes; }
19namespace OreUI { class ResourceStreamResponse; }
20namespace OreUI { class TemporaryTextureHolder; }
21// clang-format on
22
23namespace OreUI {
24
25class StructureResourceHandler : public ::OreUI::IResourceHandler {
26public:
27 // StructureResourceHandler inner types declare
28 // clang-format off
29 struct ThumbnailRequest;
30 // clang-format on
31
32 // StructureResourceHandler inner types define
33 enum class FetchRequestState : int {
34 Idle = 0,
35 ThumbnailFetchPending = 1,
36 ThumbnailReceived = 2,
37 ThumbnailEmpty = 3,
38 UserImageProcessed = 4,
39 };
40
41 struct ThumbnailRequest {
42 public:
43 // member variables
44 // NOLINTBEGIN
45 ::ll::TypedStorage<8, 32, ::std::string> mId;
46 ::ll::TypedStorage<8, 136, ::std::pair<::OreUI::ResourceRequest, ::OreUI::ResourceResponse>> mReqResponse;
47 ::ll::TypedStorage<8, 16, ::WeakRef<::Editor::ThumbnailFileBytes>> mThumbnail;
48 ::ll::TypedStorage<4, 4, ::OreUI::StructureResourceHandler::FetchRequestState> mRequestState;
49 ::ll::TypedStorage<4, 4, ::OreUI::IResourceHandler::Status> mStatus;
50 // NOLINTEND
51
52 public:
53 // prevent constructor by default
54 ThumbnailRequest& operator=(ThumbnailRequest const&);
55 ThumbnailRequest(ThumbnailRequest const&);
56 ThumbnailRequest();
57
58 public:
59 // member functions
60 // NOLINTBEGIN
61 MCAPI ThumbnailRequest(::OreUI::StructureResourceHandler::ThumbnailRequest&&);
62
63 MCAPI ~ThumbnailRequest();
64 // NOLINTEND
65
66 public:
67 // constructor thunks
68 // NOLINTBEGIN
69 MCAPI void* $ctor(::OreUI::StructureResourceHandler::ThumbnailRequest&&);
70 // NOLINTEND
71
72 public:
73 // destructor thunk
74 // NOLINTBEGIN
75 MCAPI void $dtor();
76 // NOLINTEND
77 };
78
79 using ReqResponsePair = ::std::pair<::OreUI::ResourceRequest, ::OreUI::ResourceResponse>;
80
81public:
82 // member variables
83 // NOLINTBEGIN
84 ::ll::TypedStorage<8, 8, ::ResourcePackManager const&> mPackManager;
85 ::ll::TypedStorage<8, 8, ::OreUI::TemporaryTextureHolder&> mTextureHolder;
86 ::ll::TypedStorage<8, 616, ::MPMCQueue<::std::pair<::OreUI::ResourceRequest, ::OreUI::ResourceResponse>>>
87 mStructureRequestsQueue;
88 ::ll::TypedStorage<1, 1, bool> mStructureRequestsQueuePending;
89 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::IClientInstance>> mClient;
90 ::ll::TypedStorage<8, 64, ::std::unordered_map<::mce::UUID, ::OreUI::StructureResourceHandler::ThumbnailRequest>>
91 mFetchRequests;
92 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mFetchRequestsMutex;
93 ::ll::TypedStorage<8, 336, ::TaskGroup> mTaskGroup;
94 // NOLINTEND
95
96public:
97 // prevent constructor by default
98 StructureResourceHandler& operator=(StructureResourceHandler const&);
99 StructureResourceHandler(StructureResourceHandler const&);
100 StructureResourceHandler();
101
102public:
103 // virtual functions
104 // NOLINTBEGIN
105 virtual ~StructureResourceHandler() /*override*/ = default;
106
107 virtual void update() /*override*/;
108
109 virtual void onViewCreate(::IClientInstance& client) /*override*/;
110
111 virtual ::OreUI::IResourceHandler::Status
112 onResourceRequest(::OreUI::ResourceRequest const& request, ::OreUI::ResourceResponse& response) /*override*/;
113
114 virtual ::OreUI::IResourceHandler::Status
115 onResourceStreamRequest(::OreUI::ResourceRequest const&, ::OreUI::ResourceStreamResponse&) /*override*/;
116 // NOLINTEND
117
118public:
119 // member functions
120 // NOLINTBEGIN
121 MCAPI void _handleFetchRequests();
122
123 MCAPI bool _sendFetchAsync(
124 ::std::string_view id,
125 ::std::pair<::OreUI::ResourceRequest, ::OreUI::ResourceResponse> const& reqResponsePair
126 );
127 // NOLINTEND
128
129public:
130 // virtual function thunks
131 // NOLINTBEGIN
132 MCAPI void $update();
133
134 MCAPI void $onViewCreate(::IClientInstance& client);
135
136 MCAPI ::OreUI::IResourceHandler::Status
137 $onResourceRequest(::OreUI::ResourceRequest const& request, ::OreUI::ResourceResponse& response);
138
139 MCFOLD ::OreUI::IResourceHandler::Status
140 $onResourceStreamRequest(::OreUI::ResourceRequest const&, ::OreUI::ResourceStreamResponse&);
141 // NOLINTEND
142
143public:
144 // vftables
145 // NOLINTBEGIN
146 MCNAPI static void** $vftable();
147 // NOLINTEND
148};
149
150} // namespace OreUI
Definition ThumbnailFileBytes.h:10
Definition IClientInstance.h:5
Definition ResourceStreamResponse.h:7
Definition StructureResourceHandler.h:7
static MCAPI void ** $vftable()
Definition TemporaryTextureHolder.h:7
Definition ResourcePackManager.h:30
Definition StructureResourceHandler.h:17