00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_Napalmh_INCLUDE__)
00022 #define __INCLUDE_Napalmh_INCLUDE__
00023
00024 #include <engine/ActionReferenced.h>
00025 #include <weapons/WeaponNapalm.h>
00026 #include <common/Counter.h>
00027 #include <landscapemap/DeformLandscape.h>
00028 #include <list>
00029 #include <vector>
00030 #include <set>
00031
00032 class GLTextureSet;
00033 class Napalm : public ActionReferenced
00034 {
00035 public:
00036 struct NapalmEntry
00037 {
00038 NapalmEntry(int x, int y, int o, int p) :
00039 offset(o), posX(x), posY(y), pset(p) {}
00040
00041 int pset;
00042 int offset;
00043 int posX, posY;
00044 };
00045
00046 Napalm(int x, int y, Weapon *weapon, NapalmParams *params,
00047 WeaponFireContext &weaponContext);
00048 virtual ~Napalm();
00049
00050 virtual void init();
00051 virtual void simulate(fixed frameTime, bool &remove);
00052 virtual std::string getActionDetails();
00053
00054 unsigned int getPlayerId() { return weaponContext_.getPlayerId(); }
00055 NapalmParams *getParams() { return params_; }
00056
00057 protected:
00058 WeaponFireContext weaponContext_;
00059 NapalmParams *params_;
00060 Weapon *weapon_;
00061 Counter counter_;
00062 GLTextureSet *set_;
00063
00064
00065 int particleSet_;
00066 int startX_, startY_;
00067 fixed totalTime_, hurtTime_;
00068 fixed napalmTime_;
00069 std::set<unsigned int> edgePoints_;
00070 std::map<unsigned int, int> napalmPointsCount_;
00071 std::list<NapalmEntry *> napalmPoints_;
00072 std::vector<NapalmEntry *> napalmRANDPoints_;
00073
00074 fixed getHeight(int x, int y);
00075 void simulateAddStep();
00076 void simulateAddEdge(int x, int y);
00077 void simulateRmStep();
00078 void simulateDamage();
00079
00080 };
00081
00082 #endif