the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 116 lines 3.8 kB view raw
1#pragma once 2 3#include <assert.h> 4 5//Note - this is meant to be a really simple wrapper round a pointer just to be able to add a length value to arrays. 6// As such, it shouldn't delete its data in a destructor as shallow copies will be made of this and we don't want to 7// free the data just because one of those has gone out of scope 8template <class T> class arrayWithLength 9{ 10public: 11 T *data; 12 unsigned int length; 13 arrayWithLength() { data = NULL; length = 0; } 14 arrayWithLength(unsigned int elements, bool bClearArray=true) { assert(elements!=0); data = new T[elements]; if(bClearArray){ memset( data,0,sizeof(T)*elements); } this->length = elements; } 15 16 // 4J Stu Added this ctor so I static init arrays in the Item derivation tree 17 arrayWithLength( T data[], unsigned int elements) { this->data = data; this->length = elements; } 18 19 //~arrayWithLength() { delete[] data; } 20 21 void resize( unsigned int elements ) 22 { 23 assert( elements > length ); 24 T *temp = new T[elements]; 25 memset( temp,0,sizeof(T)*elements); 26 27 if( data != NULL ) 28 { 29 std::copy( data, data+length, temp ); 30 31 delete[] data; 32 } 33 data = temp; 34 length = elements; 35 } 36 37 T& operator[](unsigned int i) { return data[i]; } 38 T operator[](unsigned int i) const { return data[i]; } 39}; 40 41// TODO 4J Stu - This looks right, but is it? 42template <class T> class array2DWithLength 43{ 44 typedef arrayWithLength< T >* _parrayWithLength; 45public: 46 _parrayWithLength *data; 47 unsigned int length; 48 array2DWithLength() { data = NULL; length = 0; } 49 array2DWithLength(unsigned int dimA, unsigned int dimB) 50 { 51 data = new _parrayWithLength[dimA]; 52 this->length = dimA; 53 54 for( unsigned int i = 0; i < length; i++ ) 55 data[i] = new arrayWithLength<T>(dimB); 56 } 57 58 _parrayWithLength& operator[](unsigned int i) { return data[i]; } 59 _parrayWithLength operator[](unsigned int i) const { return data[i]; } 60}; 61 62 63class Biome; 64class LevelChunk; 65class Node; 66class Item; 67class Tile; 68class Stat; 69class MobCategory; 70class File; 71class Vertex; 72class _Polygon; // Renaming as have conflict with Windows Polygon fn 73class ServerLevel; 74class MultiPlayerLevel; 75class Level; 76class LevelRenderer; 77class WeighedRandomItem; 78class WeighedTreasure; 79class Layer; 80//class Cube; 81class ModelPart; 82class Enchantment; 83class ClipChunk; 84 85typedef arrayWithLength<double> doubleArray; 86typedef array2DWithLength<double> coords2DArray; 87typedef arrayWithLength<byte> byteArray; 88typedef arrayWithLength<char> charArray; 89typedef arrayWithLength<short> shortArray; 90typedef arrayWithLength<int> intArray; 91typedef arrayWithLength<float> floatArray; 92typedef arrayWithLength<Biome *> BiomeArray; 93typedef arrayWithLength<LevelChunk *> LevelChunkArray; 94typedef array2DWithLength<LevelChunk *> LevelChunk2DArray; 95typedef arrayWithLength<Node *> NodeArray; 96typedef arrayWithLength<Item *> ItemArray; 97typedef arrayWithLength<Tile *> TileArray; 98typedef arrayWithLength<Stat *> StatArray; 99typedef arrayWithLength<MobCategory *> MobCategoryArray; 100typedef arrayWithLength<File *> FileArray; 101typedef arrayWithLength<Vertex *> VertexArray; 102typedef arrayWithLength<_Polygon *> PolygonArray; 103typedef arrayWithLength<ServerLevel *> ServerLevelArray; 104typedef arrayWithLength<MultiPlayerLevel *> MultiPlayerLevelArray; 105typedef arrayWithLength<Level *> LevelArray; 106typedef arrayWithLength<LevelRenderer *> LevelRendererArray; 107typedef arrayWithLength<WeighedRandomItem *> WeighedRandomItemArray; 108typedef arrayWithLength<WeighedTreasure *> WeighedTreasureArray; 109typedef arrayWithLength< shared_ptr<Layer> > LayerArray; 110//typedef arrayWithLength<Cube *> CubeArray; 111typedef arrayWithLength<ModelPart *> ModelPartArray; 112typedef arrayWithLength<Enchantment *> EnchantmentArray; 113typedef arrayWithLength<ClipChunk> ClipChunkArray; 114 115#include "ItemInstance.h" 116typedef arrayWithLength<shared_ptr<ItemInstance> > ItemInstanceArray;