Changeset 2908 for code/branches/questsystem5/src/orxonox/overlays
- Timestamp:
- Apr 8, 2009, 12:58:47 AM (16 years ago)
- Location:
- code/branches/questsystem5
- Files:
-
- 2 deleted
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/questsystem5
- Property svn:mergeinfo changed
-
code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.cc
r2907 r2908 39 39 #include <OgreOverlayManager.h> 40 40 #include <OgrePanelOverlayElement.h> 41 #include <OgreRenderWindow.h>42 43 41 #include "util/Convert.h" 44 42 #include "util/Exception.h" 45 43 #include "util/String.h" 46 #include "core/ GameMode.h"44 #include "core/Core.h" 47 45 #include "core/CoreIncludes.h" 48 46 #include "core/XMLPort.h" 49 47 #include "core/ConsoleCommand.h" 50 #include "GraphicsManager.h"51 48 52 49 namespace orxonox … … 67 64 this->group_ = 0; 68 65 69 if (! GameMode::showsGraphics())66 if (!Core::showsGraphics()) 70 67 ThrowException(NoGraphics, "Can't create OrxonoxOverlay, graphics engine not initialized"); 71 68 … … 80 77 this->overlay_->add2D(this->background_); 81 78 82 // Get aspect ratio from the render window. Later on, we get informed automatically83 Ogre::RenderWindow* defaultWindow = GraphicsManager::getInstance().getRenderWindow();84 this->windowAspectRatio_ = (float)defaultWindow->getWidth() / defaultWindow->getHeight();79 // We'll have to set the aspect ratio to a default value first. 80 // GSGraphics gets informed about our construction here and can update us in the next tick. 81 this->windowAspectRatio_ = 1.0; 85 82 this->sizeCorrectionChanged(); 86 83 … … 178 175 /** 179 176 @brief 180 Called by the Graphics Managerwhenever the window size changes.177 Called by the GraphicsEngine whenever the window size changes. 181 178 Calculates the aspect ratio only. 182 179 */ 183 void OrxonoxOverlay::windowResized( unsigned int newWidth, unsignedint newHeight)180 void OrxonoxOverlay::windowResized(int newWidth, int newHeight) 184 181 { 185 182 this->windowAspectRatio_ = newWidth/(float)newHeight; -
code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.h
r2907 r2908 154 154 virtual void changedVisibility(); 155 155 156 inline void setOwner( BaseObject* owner)156 inline void setOwner(ControllableEntity* owner) 157 157 { 158 158 if (this->owner_ != owner) … … 162 162 } 163 163 } 164 inline BaseObject* getOwner() const164 inline ControllableEntity* getOwner() const 165 165 { return this->owner_; } 166 166 virtual void changedOwner() {} … … 200 200 201 201 private: 202 void windowResized( unsigned int newWidth, unsignedint newHeight);202 void windowResized(int newWidth, int newHeight); 203 203 204 204 static unsigned int hudOverlayCounter_s; //!< Static counter for hud elements … … 206 206 We could also use the ObjectList, but that doesn't guarantee XMLPort(.) was called and is slower. */ 207 207 static std::map<std::string, OrxonoxOverlay*> overlays_s; 208 BaseObject* owner_;208 ControllableEntity* owner_; 209 209 OverlayGroup* group_; 210 210 }; -
code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.cc
r2907 r2908 63 63 OverlayGroup::~OverlayGroup() 64 64 { 65 for (std:: set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)66 delete (*it);65 for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it) 66 delete it->second; 67 67 } 68 68 … … 83 83 } 84 84 85 //! Scales every element in the set.85 //! Scales every element in the map. 86 86 void OverlayGroup::setScale(const Vector2& scale) 87 87 { 88 for (std:: set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)89 (*it) ->scale(scale / this->scale_);88 for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it) 89 (*it).second->scale(scale / this->scale_); 90 90 this->scale_ = scale; 91 91 } 92 92 93 //! Scrolls every element in the set.93 //! Scrolls every element in the map. 94 94 void OverlayGroup::setScroll(const Vector2& scroll) 95 95 { 96 for (std:: set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)97 (*it) ->scroll(scroll - this->scroll_);96 for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it) 97 (*it).second->scroll(scroll - this->scroll_); 98 98 this->scroll_ = scroll; 99 99 } … … 101 101 /** 102 102 @brief 103 Adds an element to the set(used when loading with XMLPort).103 Adds an element to the map (used when loading with XMLPort). 104 104 @remarks 105 105 The names of the OrxonoxOverlays have to be unique! … … 107 107 void OverlayGroup::addElement(OrxonoxOverlay* element) 108 108 { 109 hudElements_.insert(element); 110 element->setVisible(this->isVisible()); 111 if (this->owner_) 112 element->setOwner(this->owner_); 113 } 114 115 /** 109 this->insertElement(element, element->getName()); 110 } 111 112 /** 113 @brief 114 Adds an element to the map. 115 @param element 116 The element to be added. 117 @param name 118 The name of the element. 119 @remarks 120 The names of the OrxonoxOverlays have to be unique! 121 */ 122 void OverlayGroup::insertElement(OrxonoxOverlay* element, const std::string & name) 123 { 124 element->setName(name); 125 if (hudElements_.find(name) != hudElements_.end()) 126 { 127 COUT(1) << "Ambiguous names encountered while load the HUD overlays" << std::endl; 128 } 129 else 130 { 131 hudElements_[name] = element; 132 element->setVisible(this->isVisible()); 133 if (this->owner_) 134 element->setOwner(this->owner_); 135 } 136 } 137 138 /** 116 139 @brief 117 140 Removes an element from the map. 118 @param element119 The element that is to beremoved.141 @param name 142 The name of the element that is removed. 120 143 @return 121 144 Returns true if there was such an element to remove, false if not. 122 145 */ 123 bool OverlayGroup::removeElement( OrxonoxOverlay* element)124 { 125 if(this->hudElements_.erase( element) == 0)146 bool OverlayGroup::removeElement(const std::string & name) 147 { 148 if(this->hudElements_.erase(name) == 0) 126 149 return false; 127 150 return true; … … 133 156 if (index < this->hudElements_.size()) 134 157 { 135 std:: set<OrxonoxOverlay*>::const_iterator it = hudElements_.begin();158 std::map<std::string, OrxonoxOverlay*>::const_iterator it = hudElements_.begin(); 136 159 for (unsigned int i = 0; i != index; ++it, ++i) 137 160 ; 138 return (*it) ;161 return (*it).second; 139 162 } 140 163 else … … 145 168 void OverlayGroup::changedVisibility() 146 169 { 147 for (std:: set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)148 (*it) ->setVisible(this->isVisible());149 } 150 151 void OverlayGroup::setOwner( BaseObject* owner)170 for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it) 171 (*it).second->setVisible(this->isVisible()); 172 } 173 174 void OverlayGroup::setOwner(ControllableEntity* owner) 152 175 { 153 176 this->owner_ = owner; 154 177 155 for (std:: set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)156 (*it) ->setOwner(owner);178 for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it) 179 (*it).second->setOwner(owner); 157 180 } 158 181 -
code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.h
r2907 r2908 37 37 #include "OrxonoxPrereqs.h" 38 38 39 #include <set> 40 #include <string> 39 #include <map> 41 40 #include <OgrePrerequisites.h> 42 41 #include "core/BaseObject.h" … … 65 64 static void scrollGroup(const std::string& name, const Vector2& scroll); 66 65 67 inline const std:: set<OrxonoxOverlay*>& getOverlays() const66 inline const std::map<std::string, OrxonoxOverlay*>& getOverlays() const 68 67 { return this->hudElements_; } 69 68 70 69 void changedVisibility(); 71 70 72 void setOwner( BaseObject* owner);73 inline BaseObject* getOwner() const71 void setOwner(ControllableEntity* owner); 72 inline ControllableEntity* getOwner() const 74 73 { return this->owner_; } 75 74 … … 87 86 88 87 void addElement(OrxonoxOverlay* element); 89 bool removeElement(OrxonoxOverlay* element); 88 void insertElement(OrxonoxOverlay* element, const std::string & name); 89 bool removeElement(const std::string & name); 90 90 OrxonoxOverlay* getElement(unsigned int index); 91 91 92 92 private: 93 std:: set<OrxonoxOverlay*> hudElements_; //!< Contains all the OrxonoxOverlays of the this group.94 Vector2 scale_; //!< Current scale (independent of the elements).95 Vector2 scroll_; //!< Current scrolling offset.96 BaseObject* owner_;//!< The owner of this OverlayGroup93 std::map<std::string, OrxonoxOverlay*> hudElements_; //!< Contains all the OrxonoxOverlays of the this group. 94 Vector2 scale_; //!< Current scale (independent of the elements). 95 Vector2 scroll_; //!< Current scrolling offset. 96 ControllableEntity* owner_; //!< The owner of this OverlayGroup 97 97 }; 98 98 } -
code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.cc
r2907 r2908 42 42 #include "util/Convert.h" 43 43 #include "util/Debug.h" 44 #include "core/Clock.h"45 44 #include "core/CoreIncludes.h" 46 45 #include "core/ConfigValueIncludes.h" … … 173 172 { 174 173 // create the corresponding input state 175 inputState_ = InputManager::getInstance().createInputState<SimpleInputState>("console", false, false, InputStatePriority::Console);174 inputState_ = InputManager::getInstance().createInputState<SimpleInputState>("console", 40); 176 175 inputState_->setKeyHandler(Shell::getInstance().getInputBuffer()); 177 176 bHidesAllInputChanged(); … … 348 347 @brief Used to control the actual scrolling and the cursor. 349 348 */ 350 void InGameConsole:: update(const Clock& time)349 void InGameConsole::tick(float dt) 351 350 { 352 351 if (this->scroll_ != 0) … … 359 358 // enlarge oldTop a little bit so that this exponential function 360 359 // reaches 0 before infinite time has passed... 361 float deltaScroll = (oldTop - 0.01) * time.getDeltaTime()* this->scrollSpeed_;360 float deltaScroll = (oldTop - 0.01) * dt * this->scrollSpeed_; 362 361 if (oldTop - deltaScroll >= 0) 363 362 { … … 374 373 // scrolling up 375 374 // note: +0.01 for the same reason as when scrolling down 376 float deltaScroll = (1.2 * this->relativeHeight + 0.01 + oldTop) * time.getDeltaTime()* this->scrollSpeed_;375 float deltaScroll = (1.2 * this->relativeHeight + 0.01 + oldTop) * dt * this->scrollSpeed_; 377 376 if (oldTop - deltaScroll <= -1.2 * this->relativeHeight) 378 377 { … … 389 388 if (this->bActive_) 390 389 { 391 this->cursor_ += time.getDeltaTime();390 this->cursor_ += dt; 392 391 if (this->cursor_ >= this->blinkTime) 393 392 { … … 410 409 @brief Resizes the console elements. Call if window size changes. 411 410 */ 412 void InGameConsole::windowResized( unsigned int newWidth, unsignedint newHeight)411 void InGameConsole::windowResized(int newWidth, int newHeight) 413 412 { 414 413 this->windowW_ = newWidth; -
code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.h
r2907 r2908 53 53 void setConfigValues(); 54 54 55 v oid update(const Clock& time);55 virtual void tick(float dt); 56 56 57 57 static InGameConsole& getInstance() { assert(singletonRef_s); return *singletonRef_s; } … … 81 81 void print(const std::string& text, int index, bool alwaysShift = false); 82 82 83 void windowResized( unsigned int newWidth, unsignedint newHeight);83 void windowResized(int newWidth, int newHeight); 84 84 85 85 // config value related -
code/branches/questsystem5/src/orxonox/overlays/debug/DebugFPSText.cc
r2907 r2908 30 30 #include "DebugFPSText.h" 31 31 #include <OgreTextAreaOverlayElement.h> 32 #include "core/CoreIncludes.h" 33 #include "GraphicsEngine.h" 32 34 #include "util/Convert.h" 33 #include "core/CoreIncludes.h"34 #include "core/Game.h"35 35 36 36 namespace orxonox … … 51 51 SUPER(DebugFPSText, tick, dt); 52 52 53 float fps = G ame::getInstance().getAvgFPS();53 float fps = GraphicsEngine::getInstance().getAverageFramesPerSecond(); 54 54 this->setCaption(convertToString(fps)); 55 55 } -
code/branches/questsystem5/src/orxonox/overlays/debug/DebugRTRText.cc
r2907 r2908 32 32 #include "core/CoreIncludes.h" 33 33 #include "util/Convert.h" 34 #include " core/Game.h"34 #include "GraphicsEngine.h" 35 35 36 36 namespace orxonox … … 51 51 SUPER(DebugRTRText, tick, dt); 52 52 53 float rtr = G ame::getInstance().getAvgTickTime();53 float rtr = GraphicsEngine::getInstance().getAverageTickTime(); 54 54 this->setCaption(convertToString(rtr)); 55 55 } -
code/branches/questsystem5/src/orxonox/overlays/hud/CMakeLists.txt
r2907 r2908 7 7 ChatOverlay.cc 8 8 GametypeStatus.cc 9 PongScore.cc10 9 ) -
code/branches/questsystem5/src/orxonox/overlays/hud/HUDRadar.cc
r2907 r2908 94 94 void HUDRadar::displayObject(RadarViewable* object, bool bIsMarked) 95 95 { 96 if (object == static_cast<RadarViewable*>(this->owner_))96 if (object == (RadarViewable*)this->owner_) 97 97 return; 98 98 -
code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.cc
r2907 r2908 410 410 this->containers_.insert(container); 411 411 this->overlays_[notification] = container; 412 this-> addElement(container->overlay);412 this->insertElement(container->overlay, container->name); 413 413 this->size_= this->size_+1; 414 414 … … 429 429 return false; 430 430 431 this->removeElement(container-> overlay);431 this->removeElement(container->name); 432 432 this->containers_.erase(container); 433 433 this->overlays_.erase(container->notification);
Note: See TracChangeset
for help on using the changeset viewer.