Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/weapons/src/orxonox/objects/worldentities/pawns/Pawn.h @ 2912

Last change on this file since 2912 was 2912, checked in by landauf, 15 years ago

Several small adjustments in the weaponsystem (like additional const keyword, includes moved from .h to .cc where possible, …)

Firemode is now an unsigned int instead of an Enum. Instead of "fire" and "altFire" use "fire 0" and "fire 1"

  • Property svn:eol-style set to native
File size: 5.2 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29#ifndef _Pawn_H__
30#define _Pawn_H__
31
32#include "OrxonoxPrereqs.h"
33#include "objects/pickup/ShipEquipment.h"
34#include "objects/worldentities/ControllableEntity.h"
35#include "objects/RadarViewable.h"
36
37namespace orxonox
38{
39    class _OrxonoxExport Pawn : public ControllableEntity, public RadarViewable
40    {
41        friend class WeaponSystem;
42
43        public:
44            Pawn(BaseObject* creator);
45            virtual ~Pawn();
46
47            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
48            virtual void tick(float dt);
49            void registerVariables();
50
51            virtual void setPlayer(PlayerInfo* player);
52            virtual void removePlayer();
53
54            inline bool isAlive() const
55                { return this->bAlive_; }
56
57            virtual void setHealth(float health);
58            inline void addHealth(float health)
59                { this->setHealth(this->health_ + health); }
60            inline void removeHealth(float health)
61                { this->setHealth(this->health_ - health); }
62            inline float getHealth() const
63                { return this->health_; }
64
65            inline void setMaxHealth(float maxhealth)
66                { this->maxHealth_ = maxhealth; this->setHealth(this->health_); }
67            inline float getMaxHealth() const
68                { return this->maxHealth_; }
69
70            inline void setInitialHealth(float initialhealth)
71                { this->initialHealth_ = initialhealth; this->setHealth(initialhealth); }
72            inline float getInitialHealth() const
73                { return this->initialHealth_; }
74
75            inline ControllableEntity* getLastHitOriginator() const
76                { return this->lastHitOriginator_; }
77
78            virtual void damage(float damage, Pawn* originator = 0);
79            virtual void hit(Pawn* originator, const Vector3& force, float damage);
80            virtual void kill();
81
82            virtual void fire(unsigned int firemode);
83            virtual void postSpawn();
84
85            void addWeaponSlot(WeaponSlot * wSlot);
86            WeaponSlot * getWeaponSlot(unsigned int index) const;
87            void addWeaponPack(WeaponPack * wPack);
88            WeaponPack * getWeaponPack(unsigned int firemode) const;
89            void addWeaponSet(WeaponSet * wSet);
90            WeaponSet * getWeaponSet(unsigned int index) const;
91
92            inline const WorldEntity* getWorldEntity() const
93                { return const_cast<Pawn*>(this); }
94
95            inline void setSpawnParticleSource(const std::string& source)
96                { this->spawnparticlesource_ = source; }
97            inline const std::string& getSpawnParticleSource() const
98                { return this->spawnparticlesource_; }
99
100            inline void setSpawnParticleDuration(float duration)
101                { this->spawnparticleduration_ = duration; }
102            inline float getSpawnParticleDuration() const
103                { return this->spawnparticleduration_; }
104
105            inline void setExplosionChunks(unsigned int chunks)
106                { this->numexplosionchunks_ = chunks; }
107            inline unsigned int getExplosionChunks() const
108                { return this->numexplosionchunks_; }
109
110            inline ShipEquipment& getPickUp()
111                {return this->pickUp;}
112
113            virtual void dropItems();
114
115        protected:
116            virtual void death();
117            virtual void deatheffect();
118            virtual void spawneffect();
119
120            ShipEquipment pickUp;
121            bool bAlive_;
122
123
124            float health_;
125            float maxHealth_;
126            float initialHealth_;
127
128            Pawn* lastHitOriginator_;
129
130            WeaponSystem* weaponSystem_;
131            unsigned int fire_;
132            unsigned int firehack_;
133
134            std::string spawnparticlesource_;
135            float spawnparticleduration_;
136            unsigned int numexplosionchunks_;
137
138        private:
139            inline void setWeaponSystem(WeaponSystem* weaponsystem)
140                { this->weaponSystem_ = weaponsystem; }
141    };
142
143    class _OrxonoxExport PawnListener : virtual public OrxonoxClass
144    {
145        friend class Pawn;
146
147        public:
148            PawnListener();
149            virtual ~PawnListener() {}
150
151        protected:
152            virtual void destroyedPawn(Pawn* pawn) = 0;
153    };
154}
155
156#endif /* _Pawn_H__ */
Note: See TracBrowser for help on using the repository browser.