the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 118 lines 3.3 kB view raw
1#include "stdafx.h" 2#include "..\..\..\Minecraft.World\StringHelpers.h" 3#include "..\..\..\Minecraft.World\net.minecraft.world.item.h" 4#include "CompoundGameRuleDefinition.h" 5#include "ConsoleGameRules.h" 6 7CompoundGameRuleDefinition::CompoundGameRuleDefinition() 8{ 9 m_lastRuleStatusChanged = NULL; 10} 11 12CompoundGameRuleDefinition::~CompoundGameRuleDefinition() 13{ 14 for(AUTO_VAR(it, m_children.begin()); it != m_children.end(); ++it) 15 { 16 delete (*it); 17 } 18} 19 20void CompoundGameRuleDefinition::getChildren(vector<GameRuleDefinition *> *children) 21{ 22 GameRuleDefinition::getChildren(children); 23 for (AUTO_VAR(it, m_children.begin()); it != m_children.end(); it++) 24 children->push_back(*it); 25} 26 27GameRuleDefinition *CompoundGameRuleDefinition::addChild(ConsoleGameRules::EGameRuleType ruleType) 28{ 29 GameRuleDefinition *rule = NULL; 30 if(ruleType == ConsoleGameRules::eGameRuleType_CompleteAllRule) 31 { 32 rule = new CompleteAllRuleDefinition(); 33 } 34 else if(ruleType == ConsoleGameRules::eGameRuleType_CollectItemRule) 35 { 36 rule = new CollectItemRuleDefinition(); 37 } 38 else if(ruleType == ConsoleGameRules::eGameRuleType_UseTileRule) 39 { 40 rule = new UseTileRuleDefinition(); 41 } 42 else if(ruleType == ConsoleGameRules::eGameRuleType_UpdatePlayerRule) 43 { 44 rule = new UpdatePlayerRuleDefinition(); 45 } 46 else 47 { 48#ifndef _CONTENT_PACKAGE 49 wprintf(L"CompoundGameRuleDefinition: Attempted to add invalid child rule - %d\n", ruleType ); 50#endif 51 } 52 if(rule != NULL) m_children.push_back(rule); 53 return rule; 54} 55 56void CompoundGameRuleDefinition::populateGameRule(GameRulesInstance::EGameRulesInstanceType type, GameRule *rule) 57{ 58 GameRule *newRule = NULL; 59 int i = 0; 60 for(AUTO_VAR(it, m_children.begin()); it != m_children.end(); ++it) 61 { 62 newRule = new GameRule(*it, rule->getConnection() ); 63 (*it)->populateGameRule(type,newRule); 64 65 GameRule::ValueType value; 66 value.gr = newRule; 67 value.isPointer = true; 68 69 // Somehow add the newRule to the current rule 70 rule->setParameter(L"rule" + _toString<int>(i),value); 71 ++i; 72 } 73 GameRuleDefinition::populateGameRule(type, rule); 74} 75 76bool CompoundGameRuleDefinition::onUseTile(GameRule *rule, int tileId, int x, int y, int z) 77{ 78 bool statusChanged = false; 79 for(AUTO_VAR(it, rule->m_parameters.begin()); it != rule->m_parameters.end(); ++it) 80 { 81 if(it->second.isPointer) 82 { 83 bool changed = it->second.gr->getGameRuleDefinition()->onUseTile(it->second.gr,tileId,x,y,z); 84 if(!statusChanged && changed) 85 { 86 m_lastRuleStatusChanged = it->second.gr->getGameRuleDefinition(); 87 statusChanged = true; 88 } 89 } 90 } 91 return statusChanged; 92} 93 94bool CompoundGameRuleDefinition::onCollectItem(GameRule *rule, shared_ptr<ItemInstance> item) 95{ 96 bool statusChanged = false; 97 for(AUTO_VAR(it, rule->m_parameters.begin()); it != rule->m_parameters.end(); ++it) 98 { 99 if(it->second.isPointer) 100 { 101 bool changed = it->second.gr->getGameRuleDefinition()->onCollectItem(it->second.gr,item); 102 if(!statusChanged && changed) 103 { 104 m_lastRuleStatusChanged = it->second.gr->getGameRuleDefinition(); 105 statusChanged = true; 106 } 107 } 108 } 109 return statusChanged; 110} 111 112void CompoundGameRuleDefinition::postProcessPlayer(shared_ptr<Player> player) 113{ 114 for(AUTO_VAR(it, m_children.begin()); it != m_children.end(); ++it) 115 { 116 (*it)->postProcessPlayer(player); 117 } 118}