Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/presentationHS15/src/orxonox/weaponsystem/WeaponSystem.h @ 11079

Last change on this file since 11079 was 10961, checked in by maxima, 10 years ago

Merged presentation and fabiens branch. Had to modify hoverHUD and invaderHUD, because the text of the healthbar wasn't correctly displayed and the weapon settings of the hovership.

  • Property svn:eol-style set to native
File size: 3.8 KB
RevLine 
[2106]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 *      Martin Polak
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29
30#ifndef _WeaponSystem_H__
31#define _WeaponSystem_H__
32
33#include "OrxonoxPrereqs.h"
34
[3196]35#include <map>
[2912]36#include <set>
[2915]37#include <vector>
[2106]38#include "core/BaseObject.h"
39
40namespace orxonox
41{
[10650]42    /**
43    @brief
44        An @ref orxonox::Pawn that is able to fire weapons always need to have a WeaponSystem. The WeaponSystem manages all the @ref orxonox::WeaponSet, @ref orxonox::WeaponPack and @ref orxonox::WeaponSlot classes.
45       
46    */       
[2106]47    class _OrxonoxExport WeaponSystem : public BaseObject
48    {
49        public:
[9667]50            WeaponSystem(Context* context);
[2106]51            virtual ~WeaponSystem();
52
[2914]53            // adding and removing WeaponSlots
54            void addWeaponSlot(WeaponSlot * wSlot);
55            void removeWeaponSlot(WeaponSlot * wSlot);
[2912]56            WeaponSlot * getWeaponSlot(unsigned int index) const;
[2106]57
[2914]58            // adding and removing WeaponSets
59            bool addWeaponSet(WeaponSet * wSet);
60            bool addWeaponSet(WeaponSet * wSet, unsigned int firemode);
61            void removeWeaponSet(WeaponSet * wSet);
[2912]62            WeaponSet * getWeaponSet(unsigned int index) const;
[2106]63
[2914]64            // adding and removing WeaponPacks
65            bool canAddWeaponPack(WeaponPack * wPack);
66            bool addWeaponPack(WeaponPack * wPack);
67            void removeWeaponPack(WeaponPack * wPack);
[2912]68            WeaponPack * getWeaponPack(unsigned int index) const;
[10961]69            std::vector<WeaponPack *> * getAllWeaponPacks();
[2106]70
[2914]71            // configure slots and firemodes
72            bool swapWeaponSlots(WeaponSlot * wSlot1, WeaponSlot * wSlot2);
73            void changeWeaponmode(WeaponPack * wPack, WeaponSet * wSet, unsigned int weaponmode);
74
[2912]75            void fire(unsigned int firemode);
[2918]76            void reload();
[2912]77
[2918]78            Munition * getMunition(SubclassIdentifier<Munition> * identifier);
[10961]79            void addMunition(Munition* munition);
[2914]80
[2912]81            inline void setPawn(Pawn * pawn)
82                { this->pawn_ = pawn; }
83            inline Pawn * getPawn() const
84                { return this->pawn_; }
85
86            inline int getWeaponSlotSize() const
[2662]87                { return this->weaponSlots_.size(); }
[2106]88
[2914]89            static inline unsigned int getFiremodeMask(unsigned int firemode)
[2912]90                { return (0x1 << firemode); }
91
[2914]92            static const unsigned int MAX_FIRE_MODES = 8;
[3301]93            static const unsigned int FIRE_MODE_UNASSIGNED = static_cast<unsigned int>(-1);
[2914]94
95            static const unsigned int MAX_WEAPON_MODES = 8;
[3301]96            static const unsigned int WEAPON_MODE_UNASSIGNED = static_cast<unsigned int>(-1);
[2914]97
[2106]98        private:
[10961]99            void updateMunition();
100           
[2912]101            std::map<unsigned int, WeaponSet *> weaponSets_;
[2915]102            std::vector<WeaponSlot *> weaponSlots_;
[6417]103            std::vector<WeaponPack *> weaponPacks_;
[2918]104            std::map<Identifier *, Munition *> munitions_;
[2912]105            Pawn * pawn_;
[2106]106    };
107}
108
109#endif /* _WeaponSystem_H__ */
Note: See TracBrowser for help on using the repository browser.