00001 #ifndef UMPASSEMBLY_H_ 00002 #define UMPASSEMBLY_H_ 00003 00004 #include <string> 00005 #include <sstream> 00006 #include <vector> 00007 00008 namespace map 00009 { 00010 namespace ump 00011 { 00013 struct TileAndAmount 00014 { 00015 private: 00016 00017 std::string _tileName; 00018 00019 int _min; 00020 00021 int _max; 00022 00023 bool _fix; 00024 00025 public: 00026 // Constructor 00027 TileAndAmount (const std::string& tileName, const int min, const int max, bool fix = false) : 00028 _tileName(tileName), _min(min), _max(max), _fix(fix) 00029 { 00030 } 00031 00032 const std::string toString () const 00033 { 00034 std::stringstream os; 00035 os << _tileName << "\t" << "\"" << _min << " " << _max << "\"" << std::endl; 00036 return os.str(); 00037 } 00038 00039 const std::string getTileName () const 00040 { 00041 return _tileName; 00042 } 00043 const int getMinAmount () const 00044 { 00045 return _min; 00046 } 00047 const int getMaxAmount () const 00048 { 00049 return _max; 00050 } 00051 const bool isFix () const 00052 { 00053 return _fix; 00054 } 00055 }; 00056 00057 class UMPAssembly 00058 { 00059 private: 00063 int _gridWidth; 00064 int _gridHeight; 00065 00069 int _width; 00070 int _height; 00071 00074 std::string _title; 00075 00078 std::string _name; 00079 00080 std::vector<TileAndAmount> _tiles; 00081 typedef std::vector<TileAndAmount>::iterator TileAndAmountIterator; 00082 typedef std::vector<TileAndAmount>::const_iterator TileAndAmountConstIterator; 00083 00084 public: 00085 UMPAssembly (); 00086 00087 virtual ~UMPAssembly (); 00088 00089 const std::string toString () const; 00090 }; 00091 } 00092 } 00093 00094 #endif /* UMPASSEMBLY_H_ */