Orxonox  0.0.5 Codename: Arcturus
OverlayGroup.h
Go to the documentation of this file.
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 
34 #ifndef _OverlayGroup_H__
35 #define _OverlayGroup_H__
36 
37 #include "OrxonoxPrereqs.h"
38 
39 #include <set>
40 #include "util/Math.h"
41 #include "util/OgreForwardRefs.h"
42 #include "core/BaseObject.h"
43 
44 namespace orxonox
45 {
54  {
55  public:
56  OverlayGroup(Context* context);
58  ~OverlayGroup();
59 
60  virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
61 
62  static void toggleVisibility(const std::string& name);
63  static void show(const std::string& name);
64  static void scaleGroup(const std::string& name, float scale);
65  static void scrollGroup(const std::string& name, const Vector2& scroll);
66 
67  inline const std::set<StrongPtr<OrxonoxOverlay>>& getOverlays() const
68  { return this->hudElements_; }
69 
70  virtual void changedVisibility() override;
71 
72  void setOwner(BaseObject* owner);
73  inline BaseObject* getOwner() const
74  { return this->owner_; }
75 
77  void scale(const Vector2& scale) { this->setScale(scale * this->scale_); }
78  void setScale(const Vector2& scale);
80  Vector2 getScale() const { return this->scale_; }
81 
83  void scroll(const Vector2& scroll) { this->setScroll(scroll + this->scroll_); }
84  void setScroll(const Vector2& scroll);
86  Vector2 getScroll() const { return this->scale_; }
87 
88  void addElement(OrxonoxOverlay* element);
89  bool removeElement(OrxonoxOverlay* element);
90  OrxonoxOverlay* getElement(unsigned int index);
91 
92  private:
93  std::set<StrongPtr<OrxonoxOverlay>> hudElements_;
94  Vector2 scale_;
95  Vector2 scroll_;
97  };
98 }
99 
100 #endif /* _OverlayGroup_H__ */
The BaseObject is the parent of all classes representing an instance in the game. ...
Definition: BaseObject.h:63
void scroll(const Vector2 &scroll)
Scrolls each OrxonoxOverlay individually by scroll.
Definition: OverlayGroup.h:83
::std::string string
Definition: gtest-port.h:756
const std::set< StrongPtr< OrxonoxOverlay > > & getOverlays() const
Definition: OverlayGroup.h:67
Vector2 getScale() const
Returns the current size of the group.
Definition: OverlayGroup.h:80
Vector2 scroll_
Current scrolling offset.
Definition: OverlayGroup.h:95
xmlelement
Definition: Super.h:519
Declaration and implementation of several math-functions, typedefs of some Ogre::Math classes to the ...
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
Mode
Definition: CorePrereqs.h:102
Shared library macros, enums, constants and forward declarations for the orxonox library ...
Declaration of BaseObject, the base class of all objects in Orxonox.
Definition: Context.h:45
std::set< StrongPtr< OrxonoxOverlay > > hudElements_
Contains all the OrxonoxOverlays of the this group.
Definition: OverlayGroup.h:93
Base class to display content directly onto the screen.
Definition: OrxonoxOverlay.h:72
#define _OrxonoxExport
Definition: OrxonoxPrereqs.h:60
OverlayGroup does almost exactly what it says: It groups OrxonoxOverlays together.
Definition: OverlayGroup.h:53
Vector2 scale_
Current scale (independent of the elements).
Definition: OverlayGroup.h:94
BaseObject * owner_
The owner of this OverlayGroup.
Definition: OverlayGroup.h:96
Vector2 getScroll() const
Returns the current scrolling offset of the group.
Definition: OverlayGroup.h:86
void scale(const Vector2 &scale)
Scales each OrxonoxOverlay individually by scale.
Definition: OverlayGroup.h:77
BaseObject * getOwner() const
Definition: OverlayGroup.h:73