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 "..\..\WstringLookup.h"
3#include "..\..\..\Minecraft.World\StringHelpers.h"
4#include "ConsoleGameRules.h"
5
6GameRuleDefinition::GameRuleDefinition()
7{
8 m_descriptionId = L"";
9 m_promptId = L"";
10 m_4JDataValue = 0;
11}
12
13void GameRuleDefinition::write(DataOutputStream *dos)
14{
15 // Write EGameRuleType.
16 ConsoleGameRules::EGameRuleType eType = getActionType();
17 assert( eType != ConsoleGameRules::eGameRuleType_Invalid );
18 ConsoleGameRules::write(dos, eType); // stringID
19
20 writeAttributes(dos, 0);
21
22 // 4J-JEV: Get children.
23 vector<GameRuleDefinition *> *children = new vector<GameRuleDefinition *>();
24 getChildren( children );
25
26 // Write children.
27 dos->writeInt( children->size() );
28 for (AUTO_VAR(it, children->begin()); it != children->end(); it++)
29 (*it)->write(dos);
30}
31
32void GameRuleDefinition::writeAttributes(DataOutputStream *dos, UINT numAttributes)
33{
34 dos->writeInt(numAttributes + 3);
35
36 ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_descriptionName);
37 dos->writeUTF(m_descriptionId);
38
39 ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_promptName);
40 dos->writeUTF(m_promptId);
41
42 ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_dataTag);
43 dos->writeUTF(_toString(m_4JDataValue));
44}
45
46void GameRuleDefinition::getChildren(vector<GameRuleDefinition *> *children) {}
47
48GameRuleDefinition *GameRuleDefinition::addChild(ConsoleGameRules::EGameRuleType ruleType)
49{
50#ifndef _CONTENT_PACKAGE
51 wprintf(L"GameRuleDefinition: Attempted to add invalid child rule - %d\n", ruleType );
52#endif
53 return NULL;
54}
55
56void GameRuleDefinition::addAttribute(const wstring &attributeName, const wstring &attributeValue)
57{
58 if(attributeName.compare(L"descriptionName") == 0)
59 {
60 m_descriptionId = attributeValue;
61#ifndef _CONTENT_PACKAGE
62 wprintf(L"GameRuleDefinition: Adding parameter descriptionId=%ls\n",m_descriptionId.c_str());
63#endif
64 }
65 else if(attributeName.compare(L"promptName") == 0)
66 {
67 m_promptId = attributeValue;
68#ifndef _CONTENT_PACKAGE
69 wprintf(L"GameRuleDefinition: Adding parameter m_promptId=%ls\n",m_promptId.c_str());
70#endif
71 }
72 else if(attributeName.compare(L"dataTag") == 0)
73 {
74 m_4JDataValue = _fromString<int>(attributeValue);
75 app.DebugPrintf("GameRuleDefinition: Adding parameter m_4JDataValue=%d\n",m_4JDataValue);
76 }
77 else
78 {
79#ifndef _CONTENT_PACKAGE
80 wprintf(L"GameRuleDefinition: Attempted to add invalid attribute: %ls\n", attributeName.c_str());
81#endif
82 }
83}
84
85void GameRuleDefinition::populateGameRule(GameRulesInstance::EGameRulesInstanceType type, GameRule *rule)
86{
87 GameRule::ValueType value;
88 value.b = false;
89 rule->setParameter(L"bComplete",value);
90}
91
92bool GameRuleDefinition::getComplete(GameRule *rule)
93{
94 GameRule::ValueType value;
95 value = rule->getParameter(L"bComplete");
96 return value.b;
97}
98
99void GameRuleDefinition::setComplete(GameRule *rule, bool val)
100{
101 GameRule::ValueType value;
102 value = rule->getParameter(L"bComplete");
103 value.b = val;
104 rule->setParameter(L"bComplete",value);
105}
106
107vector<GameRuleDefinition *> *GameRuleDefinition::enumerate()
108{
109 // Get Vector.
110 vector<GameRuleDefinition *> *gRules;
111 gRules = new vector<GameRuleDefinition *>();
112 gRules->push_back(this);
113 getChildren(gRules);
114 return gRules;
115}
116
117unordered_map<GameRuleDefinition *, int> *GameRuleDefinition::enumerateMap()
118{
119 unordered_map<GameRuleDefinition *, int> *out
120 = new unordered_map<GameRuleDefinition *, int>();
121
122 int i = 0;
123 vector<GameRuleDefinition *> *gRules = enumerate();
124 for (AUTO_VAR(it, gRules->begin()); it != gRules->end(); it++)
125 out->insert( pair<GameRuleDefinition *, int>( *it, i++ ) );
126
127 return out;
128}
129
130GameRulesInstance *GameRuleDefinition::generateNewGameRulesInstance(GameRulesInstance::EGameRulesInstanceType type, LevelRuleset *rules, Connection *connection)
131{
132 GameRulesInstance *manager = new GameRulesInstance(rules, connection);
133
134 rules->populateGameRule(type, manager);
135
136 return manager;
137}
138
139wstring GameRuleDefinition::generateDescriptionString(ConsoleGameRules::EGameRuleType defType, const wstring &description, void *data, int dataLength)
140{
141 wstring formatted = description;
142 switch(defType)
143 {
144 case ConsoleGameRules::eGameRuleType_CompleteAllRule:
145 formatted = CompleteAllRuleDefinition::generateDescriptionString(description,data,dataLength);
146 break;
147 default:
148 break;
149 };
150 return formatted;
151}