00001
00008 #ifndef BUILDING_H
00009 #define BUILDING_H
00010
00011 class cBuilding;
00012
00013 #include "cObject.h"
00014 #include "cWeapon.h"
00015
00019 class cBuilding : public cObject {
00020 protected:
00021 static int sInstances;
00022 static long sTextures[4];
00023 protected:
00024 bool mDirtybase;
00025 float mBase[16];
00026 cExplosion mExplosion;
00027 float mRooms[3];
00028 public:
00029 cBuilding(int x, int y, int z, int rooms_x, int rooms_y, int rooms_z);
00030
00031 virtual rImpact* damageByBeam(float* a, float* dir, float radius, float damage, bool all);
00032 virtual void damageByParticle(float* localpos, float damage);
00033 virtual float constrainParticle(float* worldpos, float radius = 0.0f, float* localpos = NULL);
00034
00035 virtual void onSpawn();
00036
00037 virtual void animate(float spf);
00038 virtual void transform();
00039 virtual void drawSolid();
00040 virtual void drawEffect();
00041 };
00042
00043
00047 class cTile : public cObject {
00048 public:
00050 enum Kinds {
00051 KIND_CONCRETE,
00052 KIND_ROAD_EASTWEST,
00053 KIND_ROAD_NORTHSOUTH,
00054 KIND_ROAD_JUNKTION,
00055
00056 MAX_KINDS
00057 };
00058 protected:
00060 static int sInstances;
00062 static long sTextures[MAX_KINDS];
00063
00064 static long sDisplaylists[MAX_KINDS*2];
00065 protected:
00067 int mKind;
00068 public:
00069
00071 cTile(int x, int y, int z, int kind);
00072 virtual rImpact* damageByBeam(float* a, float* dir, float radius, float damage, bool all);
00073 virtual void drawSolid();
00074 };
00075
00076
00077 class cPadmap : public cObject {
00078 float mHeights[16*16];
00079 public:
00080 cPadmap(float x, float z);
00081 virtual float constrainParticle(float* worldpos, float radius = 0.0f, float* localpos = NULL);
00082 virtual void drawSolid();
00083 };
00084
00085 class cHeightmap : public cObject {
00086 int mDims[2];
00087 float* mHeights;
00088 float* mPlanes;
00089 public:
00090 cHeightmap(float x, float z);
00091 virtual float constrainParticle(float* worldpos, float radius = 0.0f, float* localpos = NULL);
00092 virtual void drawSolid();
00093 };
00094
00095 #endif