Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

structure.h

00001 /***************************************************************************
00002                           structure.h  -  description
00003         $Id: structure.h 29 2006-07-30 11:50:14Z neoneurone $
00004                              -------------------
00005     begin                : june 16th, 2003
00006     copyright            : (C) 2003-2006 by Duong-Khang NGUYEN
00007     email                : neoneurone @ users sourceforge net
00008  ***************************************************************************/
00009 
00010 /***************************************************************************
00011  *                                                                         *
00012  *   This program is free software; you can redistribute it and/or modify  *
00013  *   it under the terms of the GNU General Public License as published by  *
00014  *   the Free Software Foundation; either version 2 of the License, or     *
00015  *   any later version.                                                    *
00016  *                                                                         *
00017  ***************************************************************************/
00018 
00019 #ifndef _OPENCITY_STRUCTURE_H_
00020 #define _OPENCITY_STRUCTURE_H_ 1
00021 
00022 #include "main.h"
00023 
00024 #include "persistence.h"
00025 
00026 // structure relative attributes
00027 #define OC_STRUCTURE_X      0x00    // Unknown
00028 #define OC_STRUCTURE_R      0x01
00029 #define OC_STRUCTURE_C      0x02
00030 #define OC_STRUCTURE_I      0x04
00031 #define OC_STRUCTURE_W      0x08
00032 #define OC_STRUCTURE_E      0x10
00033 #define OC_STRUCTURE_G      0x20
00034 #define OC_STRUCTURE_P      0x40
00035 #define OC_STRUCTURE_MARK   0x80
00036 
00037 #define OC_STRUCTURE_LEVEL_START    0
00038 #define OC_STRUCTURE_LEVEL_MAX      99
00039 #define OC_STRUCTURE_LEVEL_MIN      0
00040 
00041 
00044 class Structure : public Persistence  {
00045 public:
00046    //========================================================================
00047    //                              STATIC  METHODS
00048    //========================================================================
00049 //========================================================================
00053     static const uint &
00054     GetNumber();
00055 
00056 //========================================================================
00060     static void
00061     SetNumber( const uint & rcuiNb );
00062 
00063 
00064     Structure(  );
00065     Structure( const OPENCITY_STRUCTURE_CODE enumStructCode );
00066     Structure(
00067         const OPENCITY_STRUCTURE_CODE enumStructCode,
00068         Structure* pMain );
00069 
00070 
00071     virtual ~Structure(  );
00072 
00073 
00074 //========================================================================
00081     void
00082     SaveTo( std::fstream& rfs );
00083 
00084 
00085 //========================================================================
00092     void
00093     LoadFrom( std::fstream& rfs );
00094 
00095 
00096 //========================================================================
00101     void
00102     Set(
00103         const uint wegBit );
00104 
00105     void
00106     Unset(
00107         const uint wegBit );
00108 
00109     const bool
00110     IsSet(
00111         const uint wegBit ) const;
00112 
00113 
00114 //========================================================================
00117     const OPENCITY_GRAPHIC_CODE
00118     GetGraphicCode() const;
00119 
00120 
00121 //========================================================================
00125     const OPENCITY_GRAPHIC_CODE
00126     GetBaseGraphicCode() const;
00127 
00128 
00129 //========================================================================
00132     virtual const OPENCITY_GRAPHIC_CODE
00133     GetNextLevelGraphicCode() const;
00134 
00135 
00136 //========================================================================
00139     virtual const OPENCITY_GRAPHIC_CODE
00140     GetPreviousLevelGraphicCode() const;
00141 
00142 
00143 //========================================================================
00149     const OPENCITY_STRUCTURE_CODE
00150     GetCode() const;
00151 
00152 
00153     Structure*
00154     GetMain() const;
00155 
00156 
00157     void
00158     SetMain( Structure* const pstruct );
00159 
00160 
00161     virtual const bool
00162     LevelUp();
00163 
00164     virtual const bool
00165     LevelDown();
00166 
00167 
00168     const uint
00169     GetLevel() const;
00170 
00171     void
00172     SetLevel(
00173         const uint uiLevel );
00174 
00175 
00176 //========================================================================
00179     const OPENCITY_STRUCTURE_TYPE
00180     GetType() const;
00181 
00182 
00183 protected:
00184     OPENCITY_GRAPHIC_CODE   _eGC;           
00185     OPENCITY_STRUCTURE_CODE _eSC;           
00186     OPENCITY_STRUCTURE_TYPE _eType;         
00187     uint _uiStatus;
00188     uint _uiLevel;
00189 
00194     Structure* _pstructureMain;
00195 
00196 
00197 private:
00199     static uint uiNumberStructure;
00200 
00201 };
00202 
00203 #endif
00204 
00205 
00206 
00207 
00208 
00209 
00210 
00211 
00212 
00213 
00214 
00215 
00216 
00217 
00218 
00219 
00220 
00221 
00222 
00223 
00224 
00225 
00226 
00227 
00228 
00229 
00230 
00231 
00232 

Generated on Sat Nov 11 10:21:10 2006 for OpenCity by  doxygen 1.4.2