aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/GameRules/XboxStructureActionGenerateBox.cpp
blob: 6d687b360007f7f7868c06626cfd33ab5c44a947 (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "stdafx.h"
#include "XboxStructureActionGenerateBox.h"
#include "..\..\..\Minecraft.World\StringHelpers.h"
#include "..\..\..\Minecraft.World\net.minecraft.world.level.levelgen.structure.h"

XboxStructureActionGenerateBox::XboxStructureActionGenerateBox()
{
	m_x0 = m_y0 = m_z0 = m_x1 = m_y1 = m_z1 = m_edgeTile = m_fillTile = 0;
	m_skipAir = false;
}

void XboxStructureActionGenerateBox::writeAttributes(DataOutputStream *dos, UINT numAttrs)
{
	ConsoleGenerateStructureAction::writeAttributes(dos, numAttrs + 9);

	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_x0);
	dos->writeUTF(_toString(m_x0));
	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_y0);
	dos->writeUTF(_toString(m_y0));
	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_z0);
	dos->writeUTF(_toString(m_z0));

	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_x1);
	dos->writeUTF(_toString(m_x1));
	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_y1);
	dos->writeUTF(_toString(m_y1));
	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_z1);
	dos->writeUTF(_toString(m_z1));

	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_edgeTile);
	dos->writeUTF(_toString(m_edgeTile));
	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_fillTile);
	dos->writeUTF(_toString(m_fillTile));
	ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_skipAir);
	dos->writeUTF(_toString(m_skipAir));
}

void XboxStructureActionGenerateBox::addAttribute(const wstring &attributeName, const wstring &attributeValue)
{
	if(attributeName.compare(L"x0") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_x0 = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter x0=%d\n",m_x0);
	}
	else if(attributeName.compare(L"y0") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_y0 = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter y0=%d\n",m_y0);
	}
	else if(attributeName.compare(L"z0") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_z0 = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter z0=%d\n",m_z0);
	}
	else if(attributeName.compare(L"x1") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_x1 = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter x1=%d\n",m_x1);
	}
	else if(attributeName.compare(L"y1") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_y1 = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter y1=%d\n",m_y1);
	}
	else if(attributeName.compare(L"z1") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_z1 = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter z1=%d\n",m_z1);
	}
	else if(attributeName.compare(L"edgeTile") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_edgeTile = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter edgeTile=%d\n",m_edgeTile);
	}
	else if(attributeName.compare(L"fillTile") == 0)
	{
		int value = _fromString<int>(attributeValue);
		m_fillTile = value;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter fillTile=%d\n",m_fillTile);
	}
	else if(attributeName.compare(L"skipAir") == 0)
	{
		if(attributeValue.compare(L"true") == 0) m_skipAir = true;
		app.DebugPrintf("XboxStructureActionGenerateBox: Adding parameter skipAir=%s\n",m_skipAir?"TRUE":"FALSE");
	}
	else
	{
		GameRuleDefinition::addAttribute(attributeName, attributeValue);
	}
}

bool XboxStructureActionGenerateBox::generateBoxInLevel(StructurePiece *structure, Level *level, BoundingBox *chunkBB)
{
	app.DebugPrintf("XboxStructureActionGenerateBox - generating a box\n");
	structure->generateBox(level,chunkBB,m_x0,m_y0,m_z0,m_x1,m_y1,m_z1,m_edgeTile,m_fillTile,m_skipAir);
	return true;
}