Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/archive/Boss_FS17/src/orxonox/interfaces/RadarViewable.h

Last change on this file was 11071, checked in by landauf, 9 years ago

merged branch cpp11_v3 back to trunk

  • Property svn:eol-style set to native
File size: 5.0 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 *      Reto Grieder
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29#ifndef _RadarViewable_H__
30#define _RadarViewable_H__
31
32#include "OrxonoxPrereqs.h"
33
34#include <string>
35#include <cassert>
36
37#include "util/Math.h"
38#include "core/class/OrxonoxInterface.h"
39#include "core/object/StrongPtr.h"
40
41namespace orxonox
42{
43    class BaseObject;
44
45    /**
46    @brief Interface for receiving window events.
47    */
48    class _OrxonoxExport RadarViewable : virtual public OrxonoxInterface
49    {
50    public:
51        enum class Shape
52        {
53            Square,
54            Dot,
55            Triangle
56        };
57
58
59    public:
60        RadarViewable(BaseObject* creator, const WorldEntity* wePtr);
61        virtual ~RadarViewable();
62
63        virtual void setRadarName(const std::string& name)
64            {
65            // The following if-clause hides objects with radarname "HIDDEN"
66                if (name == "HIDDEN")
67                {
68                    this->bVisibility_ = false;
69                    this->settingsChanged();
70                }
71                if (this->radarName_ != name)
72                {
73                    this->radarName_ = name;
74                    this->settingsChanged();
75                }
76            }
77        const std::string& getRadarName() const
78            { return this->radarName_; }
79
80        inline void setRadarObjectCamouflage(float camouflage)
81            {
82                if( this->radarObjectCamouflage_ != camouflage )
83                {
84                    this->radarObjectCamouflage_ = camouflage;
85                    this->settingsChanged();
86                }
87            }
88        inline float getRadarObjectCamouflage() const
89            { return this->radarObjectCamouflage_; }
90
91        inline void setRadarObjectColour(const ColourValue& colour)
92            {
93                if(this->radarObjectColour_ != colour)
94                {
95                    this->radarObjectColour_ = colour;
96                    this->settingsChanged();
97                }
98            }
99        inline const ColourValue& getRadarObjectColour() const
100            { return this->radarObjectColour_; }
101
102//         void setRadarObjectDescription(const std::string& str);
103//         inline const std::string& getRadarObjectDescription() const
104//             { return this->radarObjectDescription_; }
105
106        inline void setRadarVisibility(bool b)
107            {
108                if(b!=this->bVisibility_)
109                {
110                    this->bVisibility_ = b;
111                    this->settingsChanged();
112                }
113            }
114        inline bool getRadarVisibility() const
115            { return this->bVisibility_; }
116
117        virtual const WorldEntity* getWorldEntity() const{ return this->wePtr_; }
118
119        const Vector3& getRVWorldPosition() const;
120        Vector3 getRVOrientedVelocity() const;
121        Vector3 getRVVelocity() const;
122
123        inline void setRadarObjectShape(Shape shape)
124            {
125                if( this->radarObjectShape_ != shape )
126                {
127                    this->radarObjectShape_ = shape;
128                    this->settingsChanged();
129                }
130            }
131        inline Shape getRadarObjectShape() const
132            { return this->radarObjectShape_; }
133
134        inline void setRadarObjectScale(float scale)
135            {
136                if(this->scale_ != scale)
137                {
138                    this->scale_ = scale;
139                    this->settingsChanged();
140                }
141            }
142        inline float getRadarObjectScale() const
143            { return this->scale_; }
144
145        void settingsChanged();
146
147
148        bool isHumanShip_;
149        inline const std::string& getUniqueId()
150        {
151            return this->uniqueId_;
152        }
153        //friend class Map;
154
155    private:
156        void validate(const WorldEntity* object) const;
157        bool bVisibility_;
158        bool bInitialized_;
159        //Map
160        std::string uniqueId_;
161
162
163        //Radar
164        const WorldEntity* wePtr_;
165        StrongPtr<Radar> radar_;
166        float radarObjectCamouflage_;
167        Shape radarObjectShape_;
168        std::string radarObjectDescription_;
169        ColourValue radarObjectColour_;
170        float scale_;
171        std::string radarName_;
172    };
173}
174
175#endif /* _RadarViewable_H__ */
Note: See TracBrowser for help on using the repository browser.