the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 151 lines 4.3 kB view raw
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}