Changeset 6417 for code/trunk/src/orxonox/overlays
- Timestamp:
- Dec 25, 2009, 10:23:58 PM (15 years ago)
- Location:
- code/trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
-
code/trunk/src/orxonox/overlays/InGameConsole.cc
r6105 r6417 44 44 #include "util/Convert.h" 45 45 #include "util/Math.h" 46 #include "util/ UTFStringConversions.h"46 #include "util/DisplayStringConversions.h" 47 47 #include "core/CoreIncludes.h" 48 48 #include "core/ConfigValueIncludes.h" … … 61 61 SetConsoleCommand(InGameConsole, closeConsole, true); 62 62 63 InGameConsole* InGameConsole::singletonPtr_s = 0;64 63 ManageScopedSingleton(InGameConsole, ScopeID::Graphics, false); 65 64 … … 68 67 */ 69 68 InGameConsole::InGameConsole() 70 : shell_(new Shell("InGameConsole", true, true)) 69 : shell_(new Shell("InGameConsole", true)) 70 , bShowCursor_(false) 71 71 , consoleOverlay_(0) 72 72 , consoleOverlayContainer_(0) … … 218 218 font->addCodePointRange(Ogre::Font::CodePointRange(161, 255)); 219 219 220 // create noise 221 this->consoleOverlayNoise_ = static_cast<Ogre::PanelOverlayElement*>(ovMan->createOverlayElement("Panel", "InGameConsoleNoise")); 222 this->consoleOverlayNoise_->setMetricsMode(Ogre::GMM_PIXELS); 223 this->consoleOverlayNoise_->setPosition(5,0); 224 this->consoleOverlayNoise_->setMaterialName("ConsoleNoiseSmall"); 225 // comment following line to disable noise 226 this->consoleOverlayBorder_->addChild(this->consoleOverlayNoise_); 227 220 228 // create the text lines 221 229 this->consoleOverlayTextAreas_ = new Ogre::TextAreaOverlayElement*[LINES]; … … 229 237 this->consoleOverlayTextAreas_[i]->setLeft(8); 230 238 this->consoleOverlayTextAreas_[i]->setCaption(""); 231 this->consoleOverlay Container_->addChild(this->consoleOverlayTextAreas_[i]);239 this->consoleOverlayNoise_->addChild(this->consoleOverlayTextAreas_[i]); 232 240 } 233 241 … … 240 248 this->consoleOverlayCursor_->setLeft(7); 241 249 this->consoleOverlayCursor_->setCaption(std::string(this->cursorSymbol_, 1)); 242 this->consoleOverlayContainer_->addChild(this->consoleOverlayCursor_); 243 244 // create noise 245 this->consoleOverlayNoise_ = static_cast<Ogre::PanelOverlayElement*>(ovMan->createOverlayElement("Panel", "InGameConsoleNoise")); 246 this->consoleOverlayNoise_->setMetricsMode(Ogre::GMM_PIXELS); 247 this->consoleOverlayNoise_->setPosition(5,0); 248 this->consoleOverlayNoise_->setMaterialName("ConsoleNoiseSmall"); 249 // comment following line to disable noise 250 this->consoleOverlayContainer_->addChild(this->consoleOverlayNoise_); 250 this->consoleOverlayNoise_->addChild(this->consoleOverlayCursor_); 251 251 252 252 this->windowResized(this->getWindowWidth(), this->getWindowWidth()); … … 268 268 void InGameConsole::linesChanged() 269 269 { 270 std::list<std::string>::const_iterator it = this->shell_->getNewestLineIterator();270 Shell::LineList::const_iterator it = this->shell_->getNewestLineIterator(); 271 271 int max = 0; 272 272 for (int i = 1; i < LINES; ++i) … … 282 282 283 283 for (int i = LINES - 1; i > max; --i) 284 this->print("", i, true);284 this->print("", Shell::None, i, true); 285 285 286 286 for (int i = max; i >= 1; --i) 287 287 { 288 288 --it; 289 this->print( *it, i, true);289 this->print(it->first, it->second, i, true); 290 290 } 291 291 } … … 297 297 { 298 298 if (LINES > 1) 299 this->print( *this->shell_->getNewestLineIterator(), 1);299 this->print(this->shell_->getNewestLineIterator()->first, this->shell_->getNewestLineIterator()->second, 1); 300 300 } 301 301 … … 316 316 { 317 317 if (LINES > 0) 318 this->print(this->shell_->getInput(), 0);319 320 if (this->shell_->getInput() == "" || this->shell_->getInput().size() == 0)318 this->print(this->shell_->getInput(), Shell::Input, 0); 319 320 if (this->shell_->getInput().empty()) 321 321 this->inputWindowStart_ = 0; 322 322 } … … 340 340 void InGameConsole::executed() 341 341 { 342 this->shell_->addOutput Line(this->shell_->getInput());342 this->shell_->addOutput(this->shell_->getInput() + '\n', Shell::Command); 343 343 } 344 344 … … 358 358 @brief Used to control the actual scrolling and the cursor. 359 359 */ 360 void InGameConsole:: update(const Clock& time)360 void InGameConsole::preUpdate(const Clock& time) 361 361 { 362 362 if (this->scroll_ != 0) … … 456 456 @param s String to be printed 457 457 */ 458 void InGameConsole::print(const std::string& text, int index, bool alwaysShift) 459 { 460 char level = 0; 461 if (text.size() > 0) 462 level = text[0]; 463 458 void InGameConsole::print(const std::string& text, Shell::LineType type, int index, bool alwaysShift) 459 { 464 460 std::string output = text; 465 466 if (level >= -1 && level <= 5)467 output.erase(0, 1);468 469 461 if (LINES > index) 470 462 { 471 this->colourLine( level, index);463 this->colourLine(type, index); 472 464 473 465 if (index > 0) … … 477 469 { 478 470 ++linesUsed; 479 this->consoleOverlayTextAreas_[index]->setCaption(multi_cast<Ogre:: UTFString>(output.substr(0, this->maxCharsPerLine_)));471 this->consoleOverlayTextAreas_[index]->setCaption(multi_cast<Ogre::DisplayString>(output.substr(0, this->maxCharsPerLine_))); 480 472 output.erase(0, this->maxCharsPerLine_); 481 473 output.insert(0, 1, ' '); 482 474 if (linesUsed > numLinesShifted_ || alwaysShift) 483 475 this->shiftLines(); 484 this->colourLine( level, index);476 this->colourLine(type, index); 485 477 } 486 this->consoleOverlayTextAreas_[index]->setCaption(multi_cast<Ogre:: UTFString>(output));478 this->consoleOverlayTextAreas_[index]->setCaption(multi_cast<Ogre::DisplayString>(output)); 487 479 this->displayedText_ = output; 488 480 this->numLinesShifted_ = linesUsed; … … 502 494 this->inputWindowStart_ = 0; 503 495 this->displayedText_ = output; 504 this->consoleOverlayTextAreas_[index]->setCaption(multi_cast<Ogre:: UTFString>(output));496 this->consoleOverlayTextAreas_[index]->setCaption(multi_cast<Ogre::DisplayString>(output)); 505 497 } 506 498 } … … 559 551 } 560 552 561 void InGameConsole::colourLine(int colourcode, int index) 562 { 563 if (colourcode == -1) 564 { 565 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.90, 0.90, 0.90, 1.00)); 566 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 1.00, 1.00, 1.00)); 567 } 568 else if (colourcode == 1) 569 { 570 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.95, 0.25, 0.25, 1.00)); 571 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.50, 0.50, 1.00)); 572 } 573 else if (colourcode == 2) 574 { 575 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.95, 0.50, 0.20, 1.00)); 576 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.70, 0.50, 1.00)); 577 } 578 else if (colourcode == 3) 579 { 580 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.50, 0.50, 0.95, 1.00)); 581 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.80, 1.00, 1.00)); 582 } 583 else if (colourcode == 4) 584 { 585 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.65, 0.48, 0.44, 1.00)); 586 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.90, 0.90, 1.00)); 587 } 588 else if (colourcode == 5) 589 { 590 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.40, 0.20, 0.40, 1.00)); 591 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.60, 0.80, 1.00)); 592 } 593 else 594 { 595 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.21, 0.69, 0.21, 1.00)); 596 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 1.00, 0.80, 1.00)); 597 } 553 void InGameConsole::colourLine(Shell::LineType type, int index) 554 { 555 ColourValue colourTop, colourBottom; 556 switch (type) 557 { 558 case Shell::Error: colourTop = ColourValue(0.95, 0.25, 0.25, 1.00); 559 colourBottom = ColourValue(1.00, 0.50, 0.50, 1.00); break; 560 561 case Shell::Warning: colourTop = ColourValue(0.95, 0.50, 0.20, 1.00); 562 colourBottom = ColourValue(1.00, 0.70, 0.50, 1.00); break; 563 564 case Shell::Info: colourTop = ColourValue(0.50, 0.50, 0.95, 1.00); 565 colourBottom = ColourValue(0.80, 0.80, 1.00, 1.00); break; 566 567 case Shell::Debug: colourTop = ColourValue(0.65, 0.48, 0.44, 1.00); 568 colourBottom = ColourValue(1.00, 0.90, 0.90, 1.00); break; 569 570 case Shell::Verbose: colourTop = ColourValue(0.40, 0.20, 0.40, 1.00); 571 colourBottom = ColourValue(0.80, 0.60, 0.80, 1.00); break; 572 573 case Shell::Ultra: colourTop = ColourValue(0.21, 0.69, 0.21, 1.00); 574 colourBottom = ColourValue(0.80, 1.00, 0.80, 1.00); break; 575 576 case Shell::Command: colourTop = ColourValue(0.80, 0.80, 0.80, 1.00); 577 colourBottom = ColourValue(0.90, 0.90, 0.90, 0.90); break; 578 579 case Shell::Hint: colourTop = ColourValue(0.80, 0.80, 0.80, 1.00); 580 colourBottom = ColourValue(0.90, 0.90, 0.90, 1.00); break; 581 582 default: colourTop = ColourValue(0.90, 0.90, 0.90, 1.00); 583 colourBottom = ColourValue(1.00, 1.00, 1.00, 1.00); break; 584 } 585 586 this->consoleOverlayTextAreas_[index]->setColourTop (colourTop); 587 this->consoleOverlayTextAreas_[index]->setColourBottom(colourBottom); 598 588 } 599 589 -
code/trunk/src/orxonox/overlays/InGameConsole.h
r6105 r6417 52 52 void setConfigValues(); 53 53 54 void update(const Clock& time);54 void preUpdate(const Clock& time); 55 55 56 56 static void openConsole(); … … 72 72 73 73 void shiftLines(); 74 void colourLine( int colourcode, int index);74 void colourLine(Shell::LineType type, int index); 75 75 void setCursorPosition(unsigned int pos); 76 void print(const std::string& text, int index, bool alwaysShift = false);76 void print(const std::string& text, Shell::LineType type, int index, bool alwaysShift = false); 77 77 78 78 void windowResized(unsigned int newWidth, unsigned int newHeight); -
code/trunk/src/orxonox/overlays/Map.cc
r5929 r6417 49 49 #include <OgreViewport.h> 50 50 51 #include "util/StringUtils.h" 51 52 #include "core/ConsoleCommand.h" 52 53 #include "core/CoreIncludes.h" … … 94 95 95 96 //Getting Scene Manager (Hack) 96 if( !sManager_ ) 97 { 98 ObjectList<Scene>::iterator it = ObjectList<Scene>::begin(); 99 this->sManager_ = it->getSceneManager(); 100 } 97 ObjectList<Scene>::iterator it = ObjectList<Scene>::begin(); 98 this->sManager_ = it->getSceneManager(); 101 99 if( !Map::getMapSceneManager() ) 102 100 { -
code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc
r6057 r6417 39 39 #include <OgrePanelOverlayElement.h> 40 40 #include <OgreRenderWindow.h> 41 #include <OgreMaterialManager.h> 42 #include <OgreTechnique.h> 43 #include <OgrePass.h> 41 44 42 45 #include "util/Convert.h" 43 46 #include "util/Exception.h" 44 #include "util/StringUtils.h"45 47 #include "core/GameMode.h" 46 48 #include "core/CoreIncludes.h" … … 83 85 // Get aspect ratio from the render window. Later on, we get informed automatically 84 86 this->windowAspectRatio_ = static_cast<float>(this->getWindowWidth()) / this->getWindowHeight(); 85 this->sizeCorrectionChanged(); 86 87 this-> changedVisibility();88 89 setSize(Vector2(1.0f, 1.0f));90 setPickPoint(Vector2(0.0f, 0.0f));91 setPosition(Vector2(0.0f, 0.0f));92 setRotation(Degree(0.0));93 setAspectCorrection(false); 87 88 this->size_ = Vector2(1.0f, 1.0f); 89 this->pickPoint_= Vector2(0.0f, 0.0f); 90 this->position_ = Vector2(0.0f, 0.0f); 91 this->angle_ = Degree(0.0); 92 this->bCorrectAspect_ = false; 93 this->rotState_ = Horizontal; 94 this->angleChanged(); // updates all other values as well 95 94 96 setBackgroundMaterial(""); 95 97 } … … 143 145 144 146 if (OrxonoxOverlay::overlays_s.find(this->getName()) != OrxonoxOverlay::overlays_s.end()) 145 COUT(1) << "Overlay names should be unique or you cannnot access them via console. Name: \"" << this->getName() << "\""<< std::endl;147 COUT(1) << "Overlay names should be unique or you cannnot access them via console. Name: \"" << this->getName() << '"' << std::endl; 146 148 147 149 OrxonoxOverlay::overlays_s[this->getName()] = this; … … 151 153 void OrxonoxOverlay::setBackgroundMaterial(const std::string& material) 152 154 { 153 if (this->background_ && material != "")155 if (this->background_ && !material.empty()) 154 156 this->background_->setMaterialName(material); 155 157 } … … 168 170 { 169 171 SUPER( OrxonoxOverlay, changedVisibility ); 170 172 171 173 if (!this->overlay_) 172 174 return; … … 309 311 std::map<std::string, OrxonoxOverlay*>::const_iterator it = overlays_s.find(name); 310 312 if (it != overlays_s.end()) 311 (*it).second->scale(Vector2(scale, scale));313 it->second->scale(Vector2(scale, scale)); 312 314 } 313 315 … … 324 326 if (it != overlays_s.end()) 325 327 { 326 OrxonoxOverlay* overlay= (*it).second;328 OrxonoxOverlay* overlay= it->second; 327 329 if(overlay->isVisible()) 328 330 overlay->hide(); … … 343 345 std::map<std::string, OrxonoxOverlay*>::const_iterator it = overlays_s.find(name); 344 346 if (it != overlays_s.end()) 345 (*it).second->scroll(scroll);347 it->second->scroll(scroll); 346 348 } 347 349 … … 357 359 std::map<std::string, OrxonoxOverlay*>::const_iterator it = overlays_s.find(name); 358 360 if (it != overlays_s.end()) 359 (*it).second->rotate(angle);361 it->second->rotate(angle); 360 362 } 361 363 … … 370 372 } 371 373 } 374 375 void OrxonoxOverlay::setBackgroundAlpha(float alpha) { 376 Ogre::MaterialPtr ptr = this->background_->getMaterial(); 377 Ogre::TextureUnitState* tempTx = ptr->getTechnique(0)->getPass(0)->getTextureUnitState(0); 378 tempTx->setAlphaOperation(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, alpha); 379 } 372 380 } -
code/trunk/src/orxonox/overlays/OrxonoxOverlay.h
r6057 r6417 155 155 static void rotateOverlay(const std::string& name, const Degree& angle); 156 156 157 void setBackgroundMaterial(const std::string& material); 158 const std::string& getBackgroundMaterial() const; 159 160 void setBackgroundAlpha(float alpha); 161 157 162 virtual void changedVisibility(); 158 163 … … 172 177 inline OverlayGroup* getOverlayGroup() const 173 178 { return this->group_; } 174 virtual void changedOverlayGroup() 179 virtual void changedOverlayGroup() 175 180 { this->changedVisibility(); } 176 181 … … 180 185 virtual void sizeChanged(); 181 186 virtual void positionChanged(); 182 183 void setBackgroundMaterial(const std::string& material);184 const std::string& getBackgroundMaterial() const;185 187 186 188 Ogre::Overlay* overlay_; //!< The overlay the entire class is about. … … 205 207 BaseObject* owner_; 206 208 OverlayGroup* group_; 209 Ogre::Pass* backgroundAlphaPass_; 207 210 }; 208 211 -
code/trunk/src/orxonox/overlays/OverlayGroup.cc
r6054 r6417 144 144 { 145 145 SUPER( OverlayGroup, changedVisibility ); 146 146 147 147 for (std::set< SmartPtr<OrxonoxOverlay> >::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it) 148 148 (*it)->changedVisibility(); //inform all Child Overlays that our visibility has changed
Note: See TracChangeset
for help on using the changeset viewer.