[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