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