git-svn-id: https://scorched3d.svn.sourceforge.net/svnroot/scorched3d/trunk/scorched...
[scorched3d/parasti.git] / src / common / actions / Napalm.h
blob9de134a9ed699491382ab48717c5ab27d526dda2
1 ////////////////////////////////////////////////////////////////////////////////
2 // Scorched3D (c) 2000-2009
3 //
4 // This file is part of Scorched3D.
5 //
6 // Scorched3D is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
11 // Scorched3D is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with Scorched3D; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 ////////////////////////////////////////////////////////////////////////////////
21 #if !defined(__INCLUDE_Napalmh_INCLUDE__)
22 #define __INCLUDE_Napalmh_INCLUDE__
24 #include <engine/ActionReferenced.h>
25 #include <weapons/WeaponNapalm.h>
26 #include <common/Counter.h>
27 #include <landscapemap/DeformLandscape.h>
28 #include <list>
29 #include <vector>
30 #include <set>
32 class GLTextureSet;
33 class Napalm : public ActionReferenced
35 public:
36 struct NapalmEntry
38 NapalmEntry(int x, int y, int o, int p) :
39 offset(o), posX(x), posY(y), pset(p) {}
41 int pset;
42 int offset;
43 int posX, posY;
46 Napalm(int x, int y, Weapon *weapon, NapalmParams *params,
47 WeaponFireContext &weaponContext);
48 virtual ~Napalm();
50 virtual void init();
51 virtual void simulate(fixed frameTime, bool &remove);
52 virtual std::string getActionDetails();
54 unsigned int getPlayerId() { return weaponContext_.getPlayerId(); }
55 NapalmParams *getParams() { return params_; }
57 protected:
58 WeaponFireContext weaponContext_;
59 NapalmParams *params_;
60 Weapon *weapon_;
61 Counter counter_;
62 GLTextureSet *set_;
64 // Not sent by wire
65 int particleSet_;
66 int startX_, startY_;
67 fixed totalTime_, hurtTime_;
68 fixed napalmTime_;
69 std::set<unsigned int> edgePoints_;
70 std::map<unsigned int, int> napalmPointsCount_;
71 std::list<NapalmEntry *> napalmPoints_;
72 std::vector<NapalmEntry *> napalmRANDPoints_;
74 fixed getHeight(int x, int y);
75 void simulateAddStep();
76 void simulateAddEdge(int x, int y);
77 void simulateRmStep();
78 void simulateDamage();
82 #endif