the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 193 lines 4.5 kB view raw
1#include "stdafx.h" 2 3#include "GameRules.h" 4 5// 4J: GameRules isn't in use anymore, just routes any requests to app game host options, kept things commented out for context 6 7const int GameRules::RULE_DOFIRETICK = 0; 8const int GameRules::RULE_MOBGRIEFING = 1; 9const int GameRules::RULE_KEEPINVENTORY = 2; 10const int GameRules::RULE_DOMOBSPAWNING = 3; 11const int GameRules::RULE_DOMOBLOOT = 4; 12const int GameRules::RULE_DOTILEDROPS = 5; 13//const int GameRules::RULE_COMMANDBLOCKOUTPUT = 6; 14const int GameRules::RULE_NATURAL_REGENERATION = 7; 15const int GameRules::RULE_DAYLIGHT = 8; 16 17GameRules::GameRules() 18{ 19 /*registerRule(RULE_DOFIRETICK, L"1"); 20 registerRule(RULE_MOBGRIEFING, L"1"); 21 registerRule(RULE_KEEPINVENTORY, L"0"); 22 registerRule(RULE_DOMOBSPAWNING, L"1"); 23 registerRule(RULE_DOMOBLOOT, L"1"); 24 registerRule(RULE_DOTILEDROPS, L"1"); 25 registerRule(RULE_COMMANDBLOCKOUTPUT, L"1"); 26 registerRule(RULE_NATURAL_REGENERATION, L"1"); 27 registerRule(RULE_DAYLIGHT, L"1");*/ 28} 29 30GameRules::~GameRules() 31{ 32 /*for(AUTO_VAR(it,rules.begin()); it != rules.end(); ++it) 33 { 34 delete it->second; 35 }*/ 36} 37 38bool GameRules::getBoolean(const int rule) 39{ 40 switch(rule) 41 { 42 case GameRules::RULE_DOFIRETICK: 43 return app.GetGameHostOption(eGameHostOption_FireSpreads); 44 case GameRules::RULE_MOBGRIEFING: 45 return app.GetGameHostOption(eGameHostOption_MobGriefing); 46 case GameRules::RULE_KEEPINVENTORY: 47 return app.GetGameHostOption(eGameHostOption_KeepInventory); 48 case GameRules::RULE_DOMOBSPAWNING: 49 return app.GetGameHostOption(eGameHostOption_DoMobSpawning); 50 case GameRules::RULE_DOMOBLOOT: 51 return app.GetGameHostOption(eGameHostOption_DoMobLoot); 52 case GameRules::RULE_DOTILEDROPS: 53 return app.GetGameHostOption(eGameHostOption_DoTileDrops); 54 case GameRules::RULE_NATURAL_REGENERATION: 55 return app.GetGameHostOption(eGameHostOption_NaturalRegeneration); 56 case GameRules::RULE_DAYLIGHT: 57 return app.GetGameHostOption(eGameHostOption_DoDaylightCycle); 58 default: 59 assert(0); 60 return false; 61 } 62} 63 64/* 65void GameRules::registerRule(const wstring &name, const wstring &startValue) 66{ 67 rules[name] = new GameRule(startValue); 68} 69 70void GameRules::set(const wstring &ruleName, const wstring &newValue) 71{ 72 AUTO_VAR(it, rules.find(ruleName)); 73 if(it != rules.end() ) 74 { 75 GameRule *gameRule = it->second; 76 gameRule->set(newValue); 77 } 78 else 79 { 80 registerRule(ruleName, newValue); 81 } 82} 83 84wstring GameRules::get(const wstring &ruleName) 85{ 86 AUTO_VAR(it, rules.find(ruleName)); 87 if(it != rules.end() ) 88 { 89 GameRule *gameRule = it->second; 90 return gameRule->get(); 91 } 92 return L""; 93} 94 95int GameRules::getInt(const wstring &ruleName) 96{ 97 AUTO_VAR(it, rules.find(ruleName)); 98 if(it != rules.end() ) 99 { 100 GameRule *gameRule = it->second; 101 return gameRule->getInt(); 102 } 103 return 0; 104} 105 106double GameRules::getDouble(const wstring &ruleName) 107{ 108 AUTO_VAR(it, rules.find(ruleName)); 109 if(it != rules.end() ) 110 { 111 GameRule *gameRule = it->second; 112 return gameRule->getDouble(); 113 } 114 return 0; 115} 116 117CompoundTag *GameRules::createTag() 118{ 119 CompoundTag *result = new CompoundTag(L"GameRules"); 120 121 for(AUTO_VAR(it,rules.begin()); it != rules.end(); ++it) 122 { 123 GameRule *gameRule = it->second; 124 result->putString(it->first, gameRule->get()); 125 } 126 127 return result; 128} 129 130void GameRules::loadFromTag(CompoundTag *tag) 131{ 132 vector<Tag *> *allTags = tag->getAllTags(); 133 for (AUTO_VAR(it, allTags->begin()); it != allTags->end(); ++it) 134 { 135 Tag *ruleTag = *it; 136 wstring ruleName = ruleTag->getName(); 137 wstring value = tag->getString(ruleTag->getName()); 138 139 set(ruleName, value); 140 } 141 delete allTags; 142} 143 144// Need to delete returned vector. 145vector<wstring> *GameRules::getRuleNames() 146{ 147 vector<wstring> *out = new vector<wstring>(); 148 for (AUTO_VAR(it, rules.begin()); it != rules.end(); it++) out->push_back(it->first); 149 return out; 150} 151 152bool GameRules::contains(const wstring &rule) 153{ 154 AUTO_VAR(it, rules.find(rule)); 155 return it != rules.end(); 156} 157 158GameRules::GameRule::GameRule(const wstring &startValue) 159{ 160 value = L""; 161 booleanValue = false; 162 intValue = 0; 163 doubleValue = 0.0; 164 set(startValue); 165} 166 167void GameRules::GameRule::set(const wstring &newValue) 168{ 169 value = newValue; 170 booleanValue = _fromString<bool>(newValue); 171 intValue = _fromString<int>(newValue); 172 doubleValue = _fromString<double>(newValue); 173} 174 175wstring GameRules::GameRule::get() 176{ 177 return value; 178} 179 180bool GameRules::GameRule::getBoolean() 181{ 182 return booleanValue; 183} 184 185int GameRules::GameRule::getInt() 186{ 187 return intValue; 188} 189 190double GameRules::GameRule::getDouble() 191{ 192 return doubleValue; 193}*/