the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2
3class StructurePiece;
4class StructureStart;
5
6typedef StructurePiece *(*structurePieceCreateFn)();
7typedef StructureStart *(*structureStartCreateFn)();
8
9enum EStructureStart
10{
11 eStructureStart_MineShaftStart,
12 eStructureStart_VillageStart,
13 eStructureStart_NetherBridgeStart,
14 eStructureStart_StrongholdStart,
15 eStructureStart_ScatteredFeatureStart,
16};
17
18enum EStructurePiece
19{
20 eStructurePiece_MineShaftRoom,
21 eStructurePiece_MineShaftCorridor,
22 eStructurePiece_MineShaftCrossing,
23 eStructurePiece_MineShaftStairs,
24
25 eStructurePiece_BridgeStraight,
26 eStructurePiece_BridgeEndFiller,
27 eStructurePiece_BridgeCrossing,
28 eStructurePiece_RoomCrossing,
29 eStructurePiece_StairsRoom,
30 eStructurePiece_MonsterThrone,
31 eStructurePiece_CastleEntrance,
32 eStructurePiece_CastleStalkRoom,
33 eStructurePiece_CastleSmallCorridorPiece,
34 eStructurePiece_CastleSmallCorridorCrossingPiece,
35 eStructurePiece_CastleSmallCorridorRightTurnPiece,
36 eStructurePiece_CastleSmallCorridorLeftTurnPiece,
37 eStructurePiece_CastleCorridorStairsPiece,
38 eStructurePiece_CastleCorridorTBalconyPiece,
39 eStructurePiece_NetherBridgeStartPiece,
40
41 eStructurePiece_DesertPyramidPiece,
42 eStructurePiece_JunglePyramidPiece,
43 eStructurePiece_SwamplandHut,
44
45 eStructurePiece_FillerCorridor,
46 eStructurePiece_StairsDown,
47 eStructurePiece_Straight,
48 eStructurePiece_ChestCorridor,
49 eStructurePiece_StraightStairsDown,
50 eStructurePiece_LeftTurn,
51 eStructurePiece_RightTurn,
52 eStructurePiece_StrongholdRoomCrossing,
53 eStructurePiece_PrisonHall,
54 eStructurePiece_Library,
55 eStructurePiece_FiveCrossing,
56 eStructurePiece_PortalRoom,
57 eStructurePiece_StrongholdStartPiece,
58
59 eStructurePiece_Well,
60 eStructurePiece_StraightRoad,
61 eStructurePiece_SimpleHouse,
62 eStructurePiece_SmallTemple,
63 eStructurePiece_BookHouse,
64 eStructurePiece_SmallHut,
65 eStructurePiece_PigHouse,
66 eStructurePiece_TwoRoomHouse,
67 eStructurePiece_Smithy,
68 eStructurePiece_Farmland,
69 eStructurePiece_DoubleFarmland,
70 eStructurePiece_LightPost,
71 eStructurePiece_VillageStartPiece,
72};
73
74class StructureFeatureIO
75{
76private:
77 static unordered_map<wstring, structureStartCreateFn> startIdClassMap;
78 static unordered_map<unsigned int, wstring> startClassIdMap;
79
80 static unordered_map<wstring, structurePieceCreateFn> pieceIdClassMap;
81 static unordered_map<unsigned int, wstring> pieceClassIdMap;
82
83public:
84 static void setStartId(EStructureStart clas, structureStartCreateFn createFn, const wstring &id);
85 static void setPieceId(EStructurePiece clas, structurePieceCreateFn createFn, const wstring &id);
86
87public:
88 static void staticCtor();
89 static wstring getEncodeId(StructureStart *start);
90 static wstring getEncodeId(StructurePiece *piece);
91 static StructureStart *loadStaticStart(CompoundTag *tag, Level *level);
92 static StructurePiece *loadStaticPiece(CompoundTag *tag, Level *level);
93};