the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "ConsoleGameRules.h"
3
4GameRule::GameRule(GameRuleDefinition *definition, Connection *connection)
5{
6 m_definition = definition;
7 m_connection = connection;
8}
9
10GameRule::~GameRule()
11{
12 for(AUTO_VAR(it, m_parameters.begin()); it != m_parameters.end(); ++it)
13 {
14 if(it->second.isPointer)
15 {
16 delete it->second.gr;
17 }
18 }
19}
20
21GameRule::ValueType GameRule::getParameter(const wstring ¶meterName)
22{
23 if(m_parameters.find(parameterName) == m_parameters.end())
24 {
25#ifndef _CONTENT_PACKAGE
26 wprintf(L"WARNING: Parameter %ls was not set before being fetched\n", parameterName.c_str());
27 __debugbreak();
28#endif
29 }
30 return m_parameters[parameterName];
31}
32
33void GameRule::setParameter(const wstring ¶meterName,ValueType value)
34{
35 if(m_parameters.find(parameterName) == m_parameters.end())
36 {
37#ifndef _CONTENT_PACKAGE
38 wprintf(L"Adding parameter %ls to GameRule\n", parameterName.c_str());
39#endif
40 }
41 else
42 {
43#ifndef _CONTENT_PACKAGE
44 wprintf(L"Setting parameter %ls for GameRule\n", parameterName.c_str());
45#endif
46 }
47 m_parameters[parameterName] = value;
48}
49
50GameRuleDefinition *GameRule::getGameRuleDefinition()
51{
52 return m_definition;
53}
54
55void GameRule::onUseTile(int tileId, int x, int y, int z) { m_definition->onUseTile(this,tileId,x,y,z); }
56void GameRule::onCollectItem(shared_ptr<ItemInstance> item) { m_definition->onCollectItem(this,item); }
57
58void GameRule::write(DataOutputStream *dos)
59{
60 // Find required parameters.
61 dos->writeInt(m_parameters.size());
62 for (AUTO_VAR(it, m_parameters.begin()); it != m_parameters.end(); it++)
63 {
64 wstring pName = (*it).first;
65 ValueType vType = (*it).second;
66
67 dos->writeUTF( (*it).first );
68 dos->writeBoolean( vType.isPointer );
69
70 if (vType.isPointer)
71 vType.gr->write(dos);
72 else
73 dos->writeLong( vType.i64 );
74 }
75}
76
77void GameRule::read(DataInputStream *dis)
78{
79 int savedParams = dis->readInt();
80 for (int i = 0; i < savedParams; i++)
81 {
82 wstring pNames = dis->readUTF();
83
84 ValueType vType = getParameter(pNames);
85
86 if (dis->readBoolean())
87 {
88 vType.gr->read(dis);
89 }
90 else
91 {
92 vType.isPointer = false;
93 vType.i64 = dis->readLong();
94 setParameter(pNames, vType);
95 }
96 }
97}