LeviLamina
Loading...
Searching...
No Matches
WoodlandMansionPieces.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/util/Mirror.h"
8#include "mc/util/Rotation.h"
9#include "mc/world/level/BlockPos.h"
10#include "mc/world/level/levelgen/structure/StructurePieceType.h"
11#include "mc/world/level/levelgen/structure/TemplateStructurePiece.h"
12
13// auto generated forward declare list
14// clang-format off
15class BlockSource;
16class BoundingBox;
17class Random;
19class StructurePiece;
20// clang-format on
21
23public:
24 // WoodlandMansionPieces inner types declare
25 // clang-format off
27 struct PlacementData;
28 class SimpleGrid;
31 class MansionGrid;
35 // clang-format on
36
37 // WoodlandMansionPieces inner types define
39 public:
40 // virtual functions
41 // NOLINTBEGIN
42 virtual ~FloorRoomCollection() = default;
43
44 virtual ::std::string get1x1(::Random& random) = 0;
45
46 virtual ::std::string get1x1Secret(::Random& random) = 0;
47
48 virtual ::std::string get1x2SideEntrance(::Random& random, bool isStairsRoom) = 0;
49
50 virtual ::std::string get1x2FrontEntrance(::Random& random, bool isStairsRoom) = 0;
51
52 virtual ::std::string get1x2Secret(::Random& random) = 0;
53
54 virtual ::std::string get2x2(::Random& random) = 0;
55
56 virtual ::std::string get2x2Secret(::Random& random) = 0;
57 // NOLINTEND
58 };
59
61 public:
62 // member variables
63 // NOLINTBEGIN
64 ::ll::TypedStorage<1, 1, ::Rotation> mRotation;
65 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
66 ::ll::TypedStorage<8, 32, ::std::string> mWallType;
67 // NOLINTEND
68 };
69
70 class SimpleGrid {
71 public:
72 // member variables
73 // NOLINTBEGIN
74 ::ll::TypedStorage<8, 24, ::std::vector<::std::vector<int>>> mGrid;
75 ::ll::TypedStorage<4, 4, int> mWidth;
76 ::ll::TypedStorage<4, 4, int> mHeight;
77 ::ll::TypedStorage<4, 4, int> mValueIfOutside;
78 // NOLINTEND
79
80 public:
81 // member functions
82 // NOLINTBEGIN
83 MCAPI bool edgesTo(int x, int y, int ifValue);
84 // NOLINTEND
85 };
86
87 class WoodlandMansionPiece : public ::TemplateStructurePiece {
88 public:
89 // member variables
90 // NOLINTBEGIN
91 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::StructureManager>> mStructureManager;
92 ::ll::TypedStorage<8, 32, ::std::string> mTemplateName;
93 ::ll::TypedStorage<1, 1, ::Rotation> mRotation;
94 ::ll::TypedStorage<1, 1, ::Mirror> mMirror;
95 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
96 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mVindicatorPositions;
97 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mEvokerPositions;
98 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mAllayGroupPositions;
99 // NOLINTEND
100
101 public:
102 // prevent constructor by default
103 WoodlandMansionPiece();
104
105 public:
106 // virtual functions
107 // NOLINTBEGIN
108 virtual ::StructurePieceType getType() const /*override*/;
109
110 virtual void
111 postProcessMobsAt(::BlockSource& region, ::Random& random, ::BoundingBox const& chunkBB) /*override*/;
112
113 virtual void _handleDataMarker(
114 ::std::string const& markerId,
115 ::BlockPos const& position,
116 ::BlockSource& region,
117 ::Random& random,
118 ::BoundingBox const& chunkBB
119 ) /*override*/;
120 // NOLINTEND
121
122 public:
123 // member functions
124 // NOLINTBEGIN
125 MCAPI WoodlandMansionPiece(
126 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
127 ::std::string const& templateName,
128 ::BlockPos const& origin,
129 ::Rotation rotation
130 );
131
132 MCAPI WoodlandMansionPiece(
133 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
134 ::std::string const& templateName,
135 ::BlockPos const& origin,
136 ::Rotation rotation,
137 ::Mirror mirror
138 );
139 // NOLINTEND
140
141 public:
142 // constructor thunks
143 // NOLINTBEGIN
144 MCAPI void* $ctor(
145 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
146 ::std::string const& templateName,
147 ::BlockPos const& origin,
148 ::Rotation rotation
149 );
150
151 MCAPI void* $ctor(
152 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
153 ::std::string const& templateName,
154 ::BlockPos const& origin,
155 ::Rotation rotation,
156 ::Mirror mirror
157 );
158 // NOLINTEND
159
160 public:
161 // virtual function thunks
162 // NOLINTBEGIN
163 MCAPI ::StructurePieceType $getType() const;
164
165 MCAPI void $postProcessMobsAt(::BlockSource& region, ::Random& random, ::BoundingBox const& chunkBB);
166
167 MCAPI void $_handleDataMarker(
168 ::std::string const& markerId,
169 ::BlockPos const& position,
170 ::BlockSource& region,
171 ::Random& random,
172 ::BoundingBox const& chunkBB
173 );
174
175
176 // NOLINTEND
177 };
178
180 public:
181 // virtual functions
182 // NOLINTBEGIN
183 virtual ~FirstFloorRoomCollection() /*override*/ = default;
184
185 virtual ::std::string get1x1(::Random& random) /*override*/;
186
187 virtual ::std::string get1x1Secret(::Random& random) /*override*/;
188
189 virtual ::std::string get1x2SideEntrance(::Random& random, bool isStairsRoom) /*override*/;
190
191 virtual ::std::string get1x2FrontEntrance(::Random& random, bool isStairsRoom) /*override*/;
192
193 virtual ::std::string get1x2Secret(::Random& random) /*override*/;
194
195 virtual ::std::string get2x2(::Random& random) /*override*/;
196
197 virtual ::std::string get2x2Secret(::Random& random) /*override*/;
198 // NOLINTEND
199
200 public:
201 // virtual function thunks
202 // NOLINTBEGIN
203 MCAPI ::std::string $get1x1(::Random& random);
204
205 MCAPI ::std::string $get1x1Secret(::Random& random);
206
207 MCAPI ::std::string $get1x2SideEntrance(::Random& random, bool isStairsRoom);
208
209 MCAPI ::std::string $get1x2FrontEntrance(::Random& random, bool isStairsRoom);
210
211 MCAPI ::std::string $get1x2Secret(::Random& random);
212
213 MCAPI ::std::string $get2x2(::Random& random);
214
215 MCAPI ::std::string $get2x2Secret(::Random& random);
216
217
218 // NOLINTEND
219 };
220
221 class MansionGrid {
222 public:
223 // member variables
224 // NOLINTBEGIN
225 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>> mBaseGrid;
226 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>> mThirdFloorGrid;
227 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>>> mFloorRooms;
228 ::ll::TypedStorage<4, 4, int> mEntranceX;
229 ::ll::TypedStorage<4, 4, int> mEntranceY;
230 ::ll::TypedStorage<8, 8, ::Random&> mRandom;
231 // NOLINTEND
232
233 public:
234 // prevent constructor by default
235 MansionGrid& operator=(MansionGrid const&);
236 MansionGrid(MansionGrid const&);
237 MansionGrid();
238
239 public:
240 // member functions
241 // NOLINTBEGIN
242 MCAPI void
244
245 MCAPI void
246 _recursiveCorridor(::WoodlandMansionPieces::SimpleGrid& grid, int x, int y, uchar heading, int depth);
247
248 MCAPI uchar get1x2RoomDirection(
250 int x,
251 int y,
252 int floorNum,
253 int roomId
254 ) const;
255 // NOLINTEND
256
257 public:
258 // static functions
259 // NOLINTBEGIN
260 MCAPI static bool _cleanEdges(::WoodlandMansionPieces::SimpleGrid& grid);
261 // NOLINTEND
262 };
263
264 class MansionPiecePlacer {
265 public:
266 // member variables
267 // NOLINTBEGIN
268 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::StructureManager>> mStructureManager;
269 ::ll::TypedStorage<8, 8, ::Random&> mRandom;
270 ::ll::TypedStorage<4, 4, int> mStartX;
271 ::ll::TypedStorage<4, 4, int> mStartY;
272 // NOLINTEND
273
274 public:
275 // prevent constructor by default
276 MansionPiecePlacer& operator=(MansionPiecePlacer const&);
277 MansionPiecePlacer(MansionPiecePlacer const&);
278 MansionPiecePlacer();
279
280 public:
281 // member functions
282 // NOLINTBEGIN
283 MCAPI void _createRoof(
284 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
285 ::BlockPos const& roofOrigin,
286 ::Rotation rotation,
289 );
290
291 MCAPI void _traverseOuterWalls(
292 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
295 uchar gridDirection,
296 int startX,
297 int startY,
298 int endX,
299 int endY
300 );
301
302 MCAPI void _traverseWallPiece(
303 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
305 );
306
307 MCAPI void createMansion(
308 ::BlockPos const& origin,
309 ::Rotation rotation,
310 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
312 );
313 // NOLINTEND
314 };
315
317 public:
318 // virtual functions
319 // NOLINTBEGIN
320 virtual ~SecondFloorRoomCollection() /*override*/ = default;
321
322 virtual ::std::string get1x1(::Random& random) /*override*/;
323
324 virtual ::std::string get1x1Secret(::Random& random) /*override*/;
325
326 virtual ::std::string get1x2SideEntrance(::Random& random, bool isStairsRoom) /*override*/;
327
328 virtual ::std::string get1x2FrontEntrance(::Random& random, bool isStairsRoom) /*override*/;
329
330 virtual ::std::string get1x2Secret(::Random& random) /*override*/;
331
332 virtual ::std::string get2x2(::Random& random) /*override*/;
333
334 virtual ::std::string get2x2Secret(::Random& random) /*override*/;
335 // NOLINTEND
336
337 public:
338 // virtual function thunks
339 // NOLINTBEGIN
340 MCAPI ::std::string $get1x1(::Random& random);
341
342 MCAPI ::std::string $get1x1Secret(::Random& random);
343
344 MCAPI ::std::string $get1x2SideEntrance(::Random& random, bool isStairsRoom);
345
346 MCAPI ::std::string $get1x2FrontEntrance(::Random& random, bool isStairsRoom);
347
348 MCAPI ::std::string $get1x2Secret(::Random& random);
349
350 MCAPI ::std::string $get2x2(::Random& random);
351
352 MCAPI ::std::string $get2x2Secret(::Random& random);
353
354
355 // NOLINTEND
356 };
357
359
361
363
365};
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition BoundingBox.h:13
Definition Random.h:10
Definition StructureManager.h:36
Definition StructurePiece.h:18
Definition WoodlandMansionPieces.h:179
Definition WoodlandMansionPieces.h:38
Definition WoodlandMansionPieces.h:221
Definition WoodlandMansionPieces.h:264
Definition WoodlandMansionPieces.h:316
Definition WoodlandMansionPieces.h:70
Definition WoodlandMansionPieces.h:358
Definition WoodlandMansionPieces.h:87
Definition WoodlandMansionPieces.h:22
Definition WoodlandMansionPieces.h:60