Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/cpp11_v2/src/modules/overlays/hud/HUDNavigation.h @ 10915

Last change on this file since 10915 was 10845, checked in by landauf, 10 years ago

always use 'virtual' in the declaration of virtual functions even if they are inherited

  • Property svn:eol-style set to native
File size: 5.6 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 *      Felix Schulthess
24 *   Co-authors:
25 *      Reto Grieder
26 *      Matthias Spalinger
27 *
28 */
29
30#ifndef _HUDNavigation_H__
31#define _HUDNavigation_H__
32
33#include "overlays/OverlaysPrereqs.h"
34
35#include <map>
36#include <string>
37
38#include "util/OgreForwardRefs.h"
39#include "tools/interfaces/Tickable.h"
40#include "interfaces/RadarListener.h"
41#include "overlays/OrxonoxOverlay.h"
42
43namespace orxonox
44{
45    class _OverlaysExport HUDNavigation : public OrxonoxOverlay, public Tickable, public RadarListener
46    {
47        public:
48            HUDNavigation(Context* context);
49            virtual ~HUDNavigation();
50
51            void setConfigValues();
52
53            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
54            virtual void tick(float dt) override;
55
56            // RadarListener interface
57            virtual void addObject(RadarViewable* object) override;
58            virtual void removeObject(RadarViewable* viewable) override;
59            virtual void objectChanged(RadarViewable* viewable) override;
60
61            virtual void changedOwner() override;
62            virtual void sizeChanged() override;
63            virtual void angleChanged() override { }
64            virtual void positionChanged() override { }
65            virtual void radarTick(float dt) override {}
66
67            virtual inline float getRadarSensitivity() const override
68                { return 1.0f; }
69
70            inline unsigned int getMarkerLimit() const
71                { return this->markerLimit_; }
72
73            static void selectClosestTarget();
74            static void selectNextTarget();
75
76        private:
77            struct ObjectInfo
78            {
79
80
81
82                Ogre::PanelOverlayElement* health_;
83                Ogre::PanelOverlayElement* healthLevel_;
84                Ogre::PanelOverlayElement* panel_;
85                Ogre::PanelOverlayElement* target_;
86                Ogre::TextAreaOverlayElement* text_;
87                bool outOfView_;
88                bool wasOutOfView_;
89                bool selected_;
90            };
91
92            bool showObject(RadarViewable* rv);
93
94            // XMLPort accessors
95            inline void setHealthMarkerSize(float size)
96                        {
97                            this->healthMarkerSize_ = size;
98                            this->sizeChanged();
99                        }
100            inline float getHealthMarkerSize() const
101                            { return healthMarkerSize_; }
102
103            inline void setHealthLevelMarkerSize(float size)
104                                    {
105                                        this->healthLevelMarkerSize_ = size;
106                                        this->sizeChanged();
107                                    }
108                        inline float getHealthLevelMarkerSize() const
109                                        { return healthLevelMarkerSize_; }
110
111            inline void setNavMarkerSize(float size)
112            {
113                this->navMarkerSize_ = size;
114                this->sizeChanged();
115            }
116            inline float getNavMarkerSize() const
117                { return navMarkerSize_; }
118            inline void setAimMarkerSize(float size)
119            {
120                this->aimMarkerSize_ = size;
121                this->sizeChanged();
122            }
123
124            inline float getAimMarkerSize() const
125                { return aimMarkerSize_; }
126            inline void setDetectionLimit(float limit)
127                { this->detectionLimit_ = limit; }
128            inline float getDetectionLimit() const
129                { return this->detectionLimit_; }
130
131            void setTextSize(float size);
132            float getTextSize() const;
133
134            void setFont(const std::string& font);
135            const std::string& getFont() const;
136
137            float getArrowSizeX(int dist) const;
138            float getArrowSizeY(int dist) const;
139
140            Vector3 toAimPosition(RadarViewable* target) const;
141
142            std::map<RadarViewable*, ObjectInfo> activeObjectList_;
143            std::list<std::pair<RadarViewable*, unsigned int>> sortedObjectList_;
144
145            float healthMarkerSize_;
146            float healthLevelMarkerSize_;
147            float navMarkerSize_;
148            float aimMarkerSize_;
149            std::string fontName_;
150            float textSize_;
151            bool showDistance_;
152
153            RadarViewable* selectedTarget_;
154
155            bool closestTarget_;
156            bool nextTarget_;
157
158            static HUDNavigation* localHUD_s; //!< This is used as a filter. Only the local HUD should be influenced by the static Console Command functions.
159
160
161            float currentMunitionSpeed_;
162
163            unsigned int markerLimit_;
164            float detectionLimit_; //!< Objects that are more far away than detectionLimit_ are not displayed on the HUD. 10000.0f is the default value.
165    };
166}
167
168#endif /* _HUDNavigation_H__ */
Note: See TracBrowser for help on using the repository browser.