mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-23 23:47:58 +00:00
96 lines
3.1 KiB
C++
96 lines
3.1 KiB
C++
#pragma once
|
|
|
|
class StructurePiece;
|
|
class StructureStart;
|
|
|
|
typedef StructurePiece* (*structurePieceCreateFn)();
|
|
typedef StructureStart* (*structureStartCreateFn)();
|
|
|
|
enum EStructureStart {
|
|
eStructureStart_MineShaftStart,
|
|
eStructureStart_VillageStart,
|
|
eStructureStart_NetherBridgeStart,
|
|
eStructureStart_StrongholdStart,
|
|
eStructureStart_ScatteredFeatureStart,
|
|
};
|
|
|
|
enum EStructurePiece {
|
|
eStructurePiece_MineShaftRoom,
|
|
eStructurePiece_MineShaftCorridor,
|
|
eStructurePiece_MineShaftCrossing,
|
|
eStructurePiece_MineShaftStairs,
|
|
|
|
eStructurePiece_BridgeStraight,
|
|
eStructurePiece_BridgeEndFiller,
|
|
eStructurePiece_BridgeCrossing,
|
|
eStructurePiece_RoomCrossing,
|
|
eStructurePiece_StairsRoom,
|
|
eStructurePiece_MonsterThrone,
|
|
eStructurePiece_CastleEntrance,
|
|
eStructurePiece_CastleStalkRoom,
|
|
eStructurePiece_CastleSmallCorridorPiece,
|
|
eStructurePiece_CastleSmallCorridorCrossingPiece,
|
|
eStructurePiece_CastleSmallCorridorRightTurnPiece,
|
|
eStructurePiece_CastleSmallCorridorLeftTurnPiece,
|
|
eStructurePiece_CastleCorridorStairsPiece,
|
|
eStructurePiece_CastleCorridorTBalconyPiece,
|
|
eStructurePiece_NetherBridgeStartPiece,
|
|
|
|
eStructurePiece_DesertPyramidPiece,
|
|
eStructurePiece_JunglePyramidPiece,
|
|
eStructurePiece_SwamplandHut,
|
|
|
|
eStructurePiece_FillerCorridor,
|
|
eStructurePiece_StairsDown,
|
|
eStructurePiece_Straight,
|
|
eStructurePiece_ChestCorridor,
|
|
eStructurePiece_StraightStairsDown,
|
|
eStructurePiece_LeftTurn,
|
|
eStructurePiece_RightTurn,
|
|
eStructurePiece_StrongholdRoomCrossing,
|
|
eStructurePiece_PrisonHall,
|
|
eStructurePiece_Library,
|
|
eStructurePiece_FiveCrossing,
|
|
eStructurePiece_PortalRoom,
|
|
eStructurePiece_StrongholdStartPiece,
|
|
|
|
eStructurePiece_Well,
|
|
eStructurePiece_StraightRoad,
|
|
eStructurePiece_SimpleHouse,
|
|
eStructurePiece_SmallTemple,
|
|
eStructurePiece_BookHouse,
|
|
eStructurePiece_SmallHut,
|
|
eStructurePiece_PigHouse,
|
|
eStructurePiece_TwoRoomHouse,
|
|
eStructurePiece_Smithy,
|
|
eStructurePiece_Farmland,
|
|
eStructurePiece_DoubleFarmland,
|
|
eStructurePiece_LightPost,
|
|
eStructurePiece_VillageStartPiece,
|
|
};
|
|
|
|
class StructureFeatureIO {
|
|
private:
|
|
static std::unordered_map<std::wstring, structureStartCreateFn>
|
|
startIdClassMap;
|
|
static std::unordered_map<unsigned int, std::wstring> startClassIdMap;
|
|
|
|
static std::unordered_map<std::wstring, structurePieceCreateFn>
|
|
pieceIdClassMap;
|
|
static std::unordered_map<unsigned int, std::wstring> pieceClassIdMap;
|
|
|
|
public:
|
|
static void setStartId(EStructureStart clas,
|
|
structureStartCreateFn createFn,
|
|
const std::wstring& id);
|
|
static void setPieceId(EStructurePiece clas,
|
|
structurePieceCreateFn createFn,
|
|
const std::wstring& id);
|
|
|
|
public:
|
|
static void staticCtor();
|
|
static std::wstring getEncodeId(StructureStart* start);
|
|
static std::wstring getEncodeId(StructurePiece* piece);
|
|
static StructureStart* loadStaticStart(CompoundTag* tag, Level* level);
|
|
static StructurePiece* loadStaticPiece(CompoundTag* tag, Level* level);
|
|
}; |