git-svn-id: https://scorched3d.svn.sourceforge.net/svnroot/scorched3d/trunk/scorched...
[scorched3d/parasti.git] / src / common / weapons / Shield.h
blob53ef833a9969ba02af4688fc45627c084ecdc6a8
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(AFX_SHIELD_H__F9BCDF39_FB62_4BB4_9D64_C70215669F9C__INCLUDED_)
22 #define AFX_SHIELD_H__F9BCDF39_FB62_4BB4_9D64_C70215669F9C__INCLUDED_
24 #include <weapons/AccessoryPart.h>
25 #include <common/Vector.h>
27 class Shield : public AccessoryPart
29 public:
30 enum ShieldType
32 ShieldTypeRoundNormal,
33 ShieldTypeRoundReflective,
34 ShieldTypeRoundMag,
35 ShieldTypeSquareNormal,
36 ShieldTypeSquareReflective
38 enum ShieldMovementType
40 ShieldMovementAll,
41 ShieldMovementNone,
42 ShieldMovementSame,
43 ShieldMovementTeam1,
44 ShieldMovementTeam2,
45 ShieldMovementTeam3,
46 ShieldMovementTeam4
48 enum ShieldLaserProofType
50 ShieldLaserProofNone,
51 ShieldLaserProofStop,
52 ShieldLaserProofTotal
55 Shield();
56 virtual ~Shield();
58 virtual bool parseXML(AccessoryCreateContext &context,
59 XMLNode *accessoryNode);
61 // Shield attributes
62 const char *getCollisionSound();
63 fixed getHitRemovePower() { return removePower_; }
64 fixed getHitPenetration() { return penetration_; }
65 fixed getPower() { return power_; }
66 Vector &getColor() { return color_; }
67 ShieldLaserProofType getLaserProof() { return laserProof_; }
68 ShieldMovementType getMovementProof() { return movementProof_; }
70 virtual fixed getBoundingSize() = 0;
71 virtual bool inShield(FixedVector &offset) = 0;
72 virtual bool tankInShield(FixedVector &offset) = 0;
73 virtual ShieldType getShieldType() = 0;
74 virtual bool getRound() = 0;
76 protected:
77 std::string collisionSound_;
78 Vector color_;
79 fixed removePower_;
80 fixed penetration_;
81 fixed power_;
82 ShieldLaserProofType laserProof_;
83 ShieldMovementType movementProof_;
86 #endif // !defined(AFX_SHIELD_H__F9BCDF39_FB62_4BB4_9D64_C70215669F9C__INCLUDED_)