aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/ScatteredFeaturePieces.h
blob: 08ab92ba4c6edbdcfafd6c28b648368dd3b1555b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#pragma once

#include "StructurePiece.h"

class ScatteredFeaturePieces
{
private:
	class ScatteredFeaturePiece : public StructurePiece
	{
	protected:
		int width;
		int height;
		int depth;

		int heightPosition;

		ScatteredFeaturePiece(Random *random, int west, int floor, int north, int width, int height, int depth);

		bool updateAverageGroundHeight(Level *level, BoundingBox *chunkBB, int offset);
	};

public:
	class DesertPyramidPiece : public ScatteredFeaturePiece
	{
	public:
		static const int TREASURE_ITEMS_COUNT = 6;
	private:
		bool hasPlacedChest[4];
		static WeighedTreasure *treasureItems[TREASURE_ITEMS_COUNT];

	public:
		DesertPyramidPiece(Random *random, int west, int north);

		bool postProcess(Level *level, Random *random, BoundingBox *chunkBB);

	};

	class JunglePyramidPiece : public ScatteredFeaturePiece
	{
	public:
		static const int TREASURE_ITEMS_COUNT = 6;
		static const int DISPENSER_ITEMS_COUNT = 1;
	private:
		bool placedMainChest;
		bool placedHiddenChest;
		bool placedTrap1;
		bool placedTrap2;

		static WeighedTreasure *treasureItems[TREASURE_ITEMS_COUNT];
		static WeighedTreasure *dispenserItems[DISPENSER_ITEMS_COUNT];

	public:
		JunglePyramidPiece(Random *random, int west, int north);

		bool postProcess(Level *level, Random *random, BoundingBox *chunkBB);

	private:
		class MossStoneSelector : public BlockSelector
		{
		public:
			void next(Random *random, int worldX, int worldY, int worldZ, bool isEdge);
		};

		static MossStoneSelector stoneSelector;

	};
};