[Orxonox-commit 1262] r5980 - in code/trunk: data/overlays src/modules/overlays src/modules/overlays/stats src/orxonox/overlays

scheusso at orxonox.net scheusso at orxonox.net
Wed Oct 21 16:06:50 CEST 2009


Author: scheusso
Date: 2009-10-21 16:06:50 +0200 (Wed, 21 Oct 2009)
New Revision: 5980

Modified:
   code/trunk/data/overlays/hudtemplates3.oxo
   code/trunk/src/modules/overlays/GUIOverlay.cc
   code/trunk/src/modules/overlays/stats/CreateLines.cc
   code/trunk/src/modules/overlays/stats/CreateLines.h
   code/trunk/src/modules/overlays/stats/Scoreboard.cc
   code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc
   code/trunk/src/orxonox/overlays/OrxonoxOverlay.h
   code/trunk/src/orxonox/overlays/OverlayGroup.cc
Log:
fixed a logical error in OverlayGroup/OrxonoxOverlay (visibility of overlays in a overlaygroup could not be configured individually)
changed Scoreboard/CreateLines accordingly
set initial visibility of QuestGUI to false


Modified: code/trunk/data/overlays/hudtemplates3.oxo
===================================================================
--- code/trunk/data/overlays/hudtemplates3.oxo	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/data/overlays/hudtemplates3.oxo	2009-10-21 14:06:50 UTC (rev 5980)
@@ -98,6 +98,7 @@
     <GUIOverlay
       name = "QuestGUI"
       guiname = "QuestGUI"
+      visible = "false"
     />
 
   </OverlayGroup>

Modified: code/trunk/src/modules/overlays/GUIOverlay.cc
===================================================================
--- code/trunk/src/modules/overlays/GUIOverlay.cc	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/src/modules/overlays/GUIOverlay.cc	2009-10-21 14:06:50 UTC (rev 5980)
@@ -61,9 +61,10 @@
     void GUIOverlay::changedVisibility()
     {
         SUPER(GUIOverlay, changedVisibility);
-
+        
         //Setting player now.
-        GUIManager::getInstance().setPlayer(this->guiName_, (orxonox_cast<ControllableEntity*>(this->getOwner()))->getPlayer());
+        if( this->getOwner() )
+            GUIManager::getInstance().setPlayer(this->guiName_, (orxonox_cast<ControllableEntity*>(this->getOwner()))->getPlayer());
 
         if (this->isVisible())
         {

Modified: code/trunk/src/modules/overlays/stats/CreateLines.cc
===================================================================
--- code/trunk/src/modules/overlays/stats/CreateLines.cc	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/src/modules/overlays/stats/CreateLines.cc	2009-10-21 14:06:50 UTC (rev 5980)
@@ -86,6 +86,21 @@
         this->playerNameText_->setVisible(visible);
         this->background_->setVisible(visible);
     }
+    void CreateLines::changedVisibility()
+    {
+        this->scoreText_->changedVisibility();
+        this->deathsText_->changedVisibility();
+        this->playerNameText_->changedVisibility();
+        this->background_->changedVisibility();
+    }
+    
+    void CreateLines::setOverlayGroup( OverlayGroup* group )
+    {
+        this->scoreText_->setOverlayGroup( group );
+        this->deathsText_->setOverlayGroup( group );
+        this->playerNameText_->setOverlayGroup( group );
+        this->background_->setOverlayGroup( group );
+    }
 
     /**
         @brief Ensures that the number of OverlayElements is equal to numberOfColumns.

Modified: code/trunk/src/modules/overlays/stats/CreateLines.h
===================================================================
--- code/trunk/src/modules/overlays/stats/CreateLines.h	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/src/modules/overlays/stats/CreateLines.h	2009-10-21 14:06:50 UTC (rev 5980)
@@ -43,6 +43,8 @@
         void setDeaths(const std::string&);
 
         void setVisibility(bool);
+        void changedVisibility();
+        void setOverlayGroup( OverlayGroup* group );
 
         //void setNumberOfColumns(unsigned int numberOfColumns, unsigned int lineIndex);
         //void alignColumn(int columnIndex, float leftOffset, float topOffset);

Modified: code/trunk/src/modules/overlays/stats/Scoreboard.cc
===================================================================
--- code/trunk/src/modules/overlays/stats/Scoreboard.cc	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/src/modules/overlays/stats/Scoreboard.cc	2009-10-21 14:06:50 UTC (rev 5980)
@@ -68,7 +68,7 @@
         SUPER(Scoreboard, changedVisibility);
 
         for (unsigned int i = 0; i < this->lines_.size(); ++i)
-            this->lines_[i]->setVisibility(this->isVisible());
+            this->lines_[i]->changedVisibility();
     }
 
     /**
@@ -88,6 +88,7 @@
             // create new lines
             CreateLines* lines = new CreateLines(leftOffset, topOffset + (distance + height) * lines_.size(), width, height);
             lines->setVisibility(this->isVisible());
+            lines->setOverlayGroup( this->getOverlayGroup() );
             this->lines_.push_back(lines);
         }
         while (playerList.size() < this->lines_.size())

Modified: code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc	2009-10-21 14:06:50 UTC (rev 5980)
@@ -47,6 +47,8 @@
 #include "core/XMLPort.h"
 #include "core/ConsoleCommand.h"
 
+#include "OverlayGroup.h"
+
 namespace orxonox
 {
     unsigned int OrxonoxOverlay::hudOverlayCounter_s = 0;
@@ -164,10 +166,13 @@
     //! Called by BaseObject when visibility has changed.
     void OrxonoxOverlay::changedVisibility()
     {
+        SUPER( OrxonoxOverlay, changedVisibility );
+        
         if (!this->overlay_)
             return;
 
-        if (this->isVisible())
+        // only set to visible if corresponding OverlayGroup is also visible
+        if (this->isVisible() && (!this->getOverlayGroup() || this->getOverlayGroup()->isVisible()) )
             this->overlay_->show();
         else
             this->overlay_->hide();

Modified: code/trunk/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/trunk/src/orxonox/overlays/OrxonoxOverlay.h	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/src/orxonox/overlays/OrxonoxOverlay.h	2009-10-21 14:06:50 UTC (rev 5980)
@@ -178,7 +178,8 @@
         }
         inline OverlayGroup* getOverlayGroup() const
             { return this->group_; }
-        virtual void changedOverlayGroup() {}
+        virtual void changedOverlayGroup() 
+            { this->changedVisibility(); }
 
     protected:
         virtual void angleChanged();

Modified: code/trunk/src/orxonox/overlays/OverlayGroup.cc
===================================================================
--- code/trunk/src/orxonox/overlays/OverlayGroup.cc	2009-10-21 13:41:56 UTC (rev 5979)
+++ code/trunk/src/orxonox/overlays/OverlayGroup.cc	2009-10-21 14:06:50 UTC (rev 5980)
@@ -104,7 +104,7 @@
     void OverlayGroup::addElement(OrxonoxOverlay* element)
     {
         hudElements_.insert(element);
-        element->setVisible(this->isVisible());
+        element->setOverlayGroup( this );
         if (this->owner_)
             element->setOwner(this->owner_);
     }
@@ -141,8 +141,10 @@
     //! Changes the visibility of all elements
     void OverlayGroup::changedVisibility()
     {
+        SUPER( OverlayGroup, changedVisibility );
+        
         for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->setVisible(this->isVisible());
+            (*it)->changedVisibility(); //inform all Child Overlays that our visibility has changed
     }
 
     void OverlayGroup::setOwner(BaseObject* owner)




More information about the Orxonox-commit mailing list