the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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}*/