00001
00009 #ifndef BUILDING_H
00010 #define BUILDING_H
00011
00012 class cBuilding;
00013
00014 #include "cObject.h"
00015 #include "cWeapon.h"
00016
00020 class cBuilding : public cObject {
00021 protected:
00022 static int sInstances;
00023 static std::map<int,long> sTextures;
00024 protected:
00026 bool dirtyBase;
00028 float baseMatrix[16];
00030 cExplosion explosionObject;
00032 float buildingRooms[3];
00033 public:
00034 cBuilding(int x, int y, int z, int rooms_x, int rooms_y, int rooms_z);
00035
00036 virtual void damageByParticle(float* localpos, float damage, cObject* enactor = NULL);
00037 virtual float constrainParticle(float* worldpos, float radius = 0.0f, float* localpos = NULL, cObject* enactor = NULL);
00038
00039 virtual void onSpawn();
00040
00041 virtual void animate(float spf);
00042 virtual void transform();
00043 virtual void drawSolid();
00044 virtual void drawEffect();
00045 };
00046
00047 struct cParticle;
00048
00054 class cScatterfield : public cObject {
00055 protected:
00056 static int sInstances;
00057 static std::map<int,long> sTextures;
00058 public:
00059 enum CollisionType { CT_NONE, CT_CYLINDER, CT_SPHERE, CT_BOX };
00060 enum BillboardType { BT_NONE, BT_AROUND, BT_AXIS };
00061 protected:
00062 std::list<cParticle*> decalParticles;
00063 public:
00064 cScatterfield(float x, float y, float z, float radius, float density);
00065 virtual void drawEffect();
00066 };
00067
00068
00072 class cTile : public cObject {
00073 public:
00075 enum Kinds {
00076 KIND_CONCRETE,
00077 KIND_ROAD_EASTWEST,
00078 KIND_ROAD_NORTHSOUTH,
00079 KIND_ROAD_JUNKTION,
00080
00081 MAX_KINDS
00082 };
00083 protected:
00085 static int sInstances;
00087 static std::map<int,long> sTextures;
00088
00089
00090 protected:
00092 int tileKind;
00093 public:
00094
00096 cTile(int x, int y, int z, int kind);
00097 virtual void drawSolid();
00098 };
00099
00100
00101 class cPadmap : public cObject {
00102 public:
00104 enum Kinds {
00105 KIND_CONCRETE,
00106 KIND_ROAD_EASTWEST,
00107 KIND_ROAD_NORTHSOUTH,
00108 KIND_ROAD_JUNKTION,
00109
00110 MAX_KINDS
00111 };
00112 protected:
00114 static int sInstances;
00116 static std::map<int,long> sTextures;
00117 static std::vector<int> sSpiral[2];
00118 protected:
00119 int dims[2];
00120 float heights[16*16];
00121 public:
00122 cPadmap(float x, float z);
00123 virtual float constrainParticle(float* worldpos, float radius = 0.0f, float* localpos = NULL, cObject* enactor = NULL);
00124 virtual void drawSolid();
00125 };
00126
00127
00128 #endif