the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 97 lines 2.2 kB view raw
1#include "stdafx.h" 2#include "ConsoleGameRules.h" 3 4GameRule::GameRule(GameRuleDefinition *definition, Connection *connection) 5{ 6 m_definition = definition; 7 m_connection = connection; 8} 9 10GameRule::~GameRule() 11{ 12 for(AUTO_VAR(it, m_parameters.begin()); it != m_parameters.end(); ++it) 13 { 14 if(it->second.isPointer) 15 { 16 delete it->second.gr; 17 } 18 } 19} 20 21GameRule::ValueType GameRule::getParameter(const wstring &parameterName) 22{ 23 if(m_parameters.find(parameterName) == m_parameters.end()) 24 { 25#ifndef _CONTENT_PACKAGE 26 wprintf(L"WARNING: Parameter %ls was not set before being fetched\n", parameterName.c_str()); 27 __debugbreak(); 28#endif 29 } 30 return m_parameters[parameterName]; 31} 32 33void GameRule::setParameter(const wstring &parameterName,ValueType value) 34{ 35 if(m_parameters.find(parameterName) == m_parameters.end()) 36 { 37#ifndef _CONTENT_PACKAGE 38 wprintf(L"Adding parameter %ls to GameRule\n", parameterName.c_str()); 39#endif 40 } 41 else 42 { 43#ifndef _CONTENT_PACKAGE 44 wprintf(L"Setting parameter %ls for GameRule\n", parameterName.c_str()); 45#endif 46 } 47 m_parameters[parameterName] = value; 48} 49 50GameRuleDefinition *GameRule::getGameRuleDefinition() 51{ 52 return m_definition; 53} 54 55void GameRule::onUseTile(int tileId, int x, int y, int z) { m_definition->onUseTile(this,tileId,x,y,z); } 56void GameRule::onCollectItem(shared_ptr<ItemInstance> item) { m_definition->onCollectItem(this,item); } 57 58void GameRule::write(DataOutputStream *dos) 59{ 60 // Find required parameters. 61 dos->writeInt(m_parameters.size()); 62 for (AUTO_VAR(it, m_parameters.begin()); it != m_parameters.end(); it++) 63 { 64 wstring pName = (*it).first; 65 ValueType vType = (*it).second; 66 67 dos->writeUTF( (*it).first ); 68 dos->writeBoolean( vType.isPointer ); 69 70 if (vType.isPointer) 71 vType.gr->write(dos); 72 else 73 dos->writeLong( vType.i64 ); 74 } 75} 76 77void GameRule::read(DataInputStream *dis) 78{ 79 int savedParams = dis->readInt(); 80 for (int i = 0; i < savedParams; i++) 81 { 82 wstring pNames = dis->readUTF(); 83 84 ValueType vType = getParameter(pNames); 85 86 if (dis->readBoolean()) 87 { 88 vType.gr->read(dis); 89 } 90 else 91 { 92 vType.isPointer = false; 93 vType.i64 = dis->readLong(); 94 setParameter(pNames, vType); 95 } 96 } 97}