Changeset 1416
- Timestamp:
- May 25, 2008, 1:11:51 AM (17 years ago)
- Location:
- code/branches/console/src
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/console/src/core/ArgumentCompletionFunctions.cc
r1402 r1416 35 35 namespace autocompletion 36 36 { 37 const std::list<std::pair<std::string, std::string> >&fallback()37 std::list<std::pair<std::string, std::string> > fallback() 38 38 { 39 std::cout << "5_1\n"; 40 static std::list<std::pair<std::string, std::string> > list; 41 std::cout << "5_2\n"; 39 static std::list<std::pair<std::string, std::string> > list(1, std::pair<std::string, std::string>("muh", "MUH")); 42 40 return list; 43 41 } -
code/branches/console/src/core/ArgumentCompletionFunctions.h
r1390 r1416 37 37 namespace autocompletion 38 38 { 39 const std::list<std::pair<std::string, std::string> >&fallback();39 std::list<std::pair<std::string, std::string> > fallback(); 40 40 } 41 41 } -
code/branches/console/src/core/CommandEvaluation.cc
r1402 r1416 53 53 this->listOfPossibleIdentifiers_.clear(); 54 54 this->listOfPossibleFunctions_.clear(); 55 this->listOfPossibleArguments_.clear(); 55 56 56 57 this->functionclass_ = 0; … … 114 115 std::cout << "complete: function != 0" << std::endl; 115 116 if (this->commandTokens_.size() > 1) 116 return (this->function_->getName() + " " + this->commandTokens_.subSet(1, this->commandTokens_.size() - 1).join() + " " + CommandEvaluation::getCommonBegin(this->listOfPossibleArguments_)); 117 { 118 if ((this->commandTokens_.size() - 1) >= this->function_->getParamCount()) 119 return (this->function_->getName() + " " + this->commandTokens_.subSet(1, this->commandTokens_.size()).join()); 120 else 121 return (this->function_->getName() + " " + this->commandTokens_.subSet(1, this->commandTokens_.size()).join() + " " + CommandEvaluation::getCommonBegin(this->listOfPossibleArguments_)); 122 } 117 123 else 118 124 return (this->function_->getName() + " "); … … 125 131 std::cout << "complete: function != 0" << std::endl; 126 132 if (this->commandTokens_.size() > 1) 127 return (this->function_->getName() + " " + this->commandTokens_.subSet(1, this->commandTokens_.size() - 1).join());133 return (this->function_->getName() + " " + this->commandTokens_.subSet(1, this->commandTokens_.size()).join()); 128 134 else 129 135 return (this->function_->getName()); … … 144 150 std::cout << "complete: function und functionclass != 0" << std::endl; 145 151 if (this->commandTokens_.size() > 2) 146 return (this->functionclass_->getName() + " " + this->function_->getName() + " " + this->commandTokens_.subSet(2, this->commandTokens_.size()).join() + " " + CommandEvaluation::getCommonBegin(this->listOfPossibleArguments_)); 152 { 153 if ((this->commandTokens_.size() - 2) >= this->function_->getParamCount()) 154 return (this->functionclass_->getName() + " " + this->function_->getName() + " " + this->commandTokens_.subSet(2, this->commandTokens_.size()).join()); 155 else 156 return (this->functionclass_->getName() + " " + this->function_->getName() + " " + this->commandTokens_.subSet(2, this->commandTokens_.size()).join() + " " + CommandEvaluation::getCommonBegin(this->listOfPossibleArguments_)); 157 } 147 158 else 148 159 return (this->functionclass_->getName() + " " + this->function_->getName() + " "); -
code/branches/console/src/core/CommandExecutor.cc
r1402 r1416 108 108 { 109 109 CommandExecutor::parseIfNeeded(command); 110 111 if (!CommandExecutor::getEvaluation().isNewCommand()) 112 CommandExecutor::parse(CommandExecutor::getEvaluation().getCommand(), false); 113 else 114 CommandExecutor::getEvaluation().setNewCommand(false); 115 110 116 return CommandExecutor::getEvaluation().complete(); 111 117 } … … 119 125 CommandEvaluation CommandExecutor::evaluate(const std::string& command) 120 126 { 121 CommandExecutor::parse(command , true);127 CommandExecutor::parse(command); 122 128 CommandExecutor::getEvaluation().evaluateParams(); 123 129 return CommandExecutor::getEvaluation(); … … 126 132 void CommandExecutor::parseIfNeeded(const std::string& command) 127 133 { 128 if ((CommandExecutor::getEvaluation().get Command() != command) || (CommandExecutor::getEvaluation().getState() == CS_Uninitialized))134 if ((CommandExecutor::getEvaluation().getOriginalCommand() != command) || (CommandExecutor::getEvaluation().getState() == CS_Uninitialized)) 129 135 CommandExecutor::parse(command); 130 else if (!CommandExecutor::getEvaluation().isValid())131 {132 CommandExecutor::getEvaluation().setNewCommand(false);133 CommandExecutor::parse(command, false);134 }135 136 } 136 137 … … 301 302 if (CommandExecutor::getEvaluation().getFunction()) 302 303 { 303 std::cout << "1\n";304 304 unsigned int startindex = 0; 305 305 if (CommandExecutor::getEvaluation().getState() == CS_Shortcut_Params) … … 307 307 else if (CommandExecutor::getEvaluation().getState() == CS_Function_Params) 308 308 startindex = 2; 309 std::cout << "2\n";310 309 311 310 if (CommandExecutor::argumentsGiven() >= startindex) 312 311 { 313 std::cout << "3\n"; 314 if (CommandExecutor::enoughArgumentsGiven(CommandExecutor::getEvaluation().getFunction())) 315 { 316 std::cout << "4\n"; 312 if ((CommandExecutor::argumentsGiven() == CommandExecutor::argumentsFinished() || !CommandExecutor::getEvaluation().isNewCommand()) && CommandExecutor::enoughArgumentsGiven(CommandExecutor::getEvaluation().getFunction())) 313 { 317 314 if (CommandExecutor::getEvaluation().getState() == CS_Shortcut_Params) 318 315 CommandExecutor::getEvaluation().setState(CS_Shortcut_Finished); … … 324 321 else 325 322 { 326 std::cout << "5\n";327 std::cout << "last argument: " << CommandExecutor::getLastArgument() << std::endl;328 std::cout << "function: " << CommandExecutor::getEvaluation().getFunction() << std::endl;329 std::cout << "functionname: " << CommandExecutor::getEvaluation().getFunction()->getName() << std::endl;330 std::cout << "param nr: " << CommandExecutor::getEvaluation().getTokens().size() - startindex << std::endl;331 323 CommandExecutor::createListOfPossibleArguments(CommandExecutor::getLastArgument(), CommandExecutor::getEvaluation().getFunction(), CommandExecutor::getEvaluation().getTokens().size() - startindex); 332 std::cout << "6\n";333 324 unsigned int numArguments = CommandExecutor::getEvaluation().getListOfPossibleArguments().size(); 334 325 335 326 if (numArguments == 1) 336 327 { 337 std::cout << "7\n";338 328 // There is exactly one possible argument 339 329 const std::string* possibleArgument = (*CommandExecutor::getEvaluation().getListOfPossibleArguments().begin()).second; 340 CommandExecutor::parse(CommandExecutor::getEvaluation().getTokens().subSet(0, CommandExecutor::getEvaluation().getTokens().size() - 1 - startindex).join() + " " + (*possibleArgument) + " "); 330 if (CommandExecutor::argumentsGiven() > CommandExecutor::argumentsFinished()) 331 CommandExecutor::parse(CommandExecutor::getEvaluation().getTokens().subSet(0, CommandExecutor::getEvaluation().getTokens().size() - 1).join() + " " + (*possibleArgument) + " ", false); 332 else 333 CommandExecutor::parse(CommandExecutor::getEvaluation().getTokens().subSet(0, CommandExecutor::getEvaluation().getTokens().size()).join() + " " + (*possibleArgument) + " ", false); 334 341 335 return; 342 336 } 343 337 344 std::cout << "8\n";345 338 if ((CommandExecutor::argumentsGiven() > CommandExecutor::argumentsFinished()) && (!CommandExecutor::getEvaluation().isNewCommand())) 346 339 { 347 std::cout << "9\n";348 340 // There is more than one argument, but the user wants to use this - check if there is a perfect match 349 341 const std::string* possibleArgument = CommandExecutor::getPossibleArgument(CommandExecutor::getLastArgument(), CommandExecutor::getEvaluation().getFunction(), CommandExecutor::getEvaluation().getTokens().size() - startindex); 350 342 if (possibleArgument) 351 343 { 352 std::cout << "10\n";353 344 // There is such an argument - use it 354 345 CommandExecutor::parse(command + " ", false); 355 346 return; 356 347 } 357 std::cout << "11\n";358 348 } 359 std::cout << "12\n"; 360 } 361 std::cout << "13\n"; 349 } 362 350 363 351 // Nothing to do … … 426 414 void CommandExecutor::createListOfPossibleIdentifiers(const std::string& fragment) 427 415 { 416 CommandExecutor::getEvaluation().getListOfPossibleIdentifiers().clear(); 428 417 std::string lowercase = getLowercase(fragment); 429 418 for (std::map<std::string, Identifier*>::const_iterator it = Identifier::getLowercaseIdentifierMapBegin(); it != Identifier::getLowercaseIdentifierMapEnd(); ++it) … … 437 426 void CommandExecutor::createListOfPossibleFunctions(const std::string& fragment, Identifier* identifier) 438 427 { 428 CommandExecutor::getEvaluation().getListOfPossibleFunctions().clear(); 439 429 std::string lowercase = getLowercase(fragment); 440 430 if (!identifier) … … 456 446 void CommandExecutor::createListOfPossibleArguments(const std::string& fragment, ConsoleCommand* command, unsigned int param) 457 447 { 458 std::cout << "2_1\n";448 CommandExecutor::getEvaluation().getListOfPossibleArguments().clear(); 459 449 std::string lowercase = getLowercase(fragment); 460 std::cout << "2_2\n";461 450 for (std::list<std::pair<std::string, std::string> >::const_iterator it = command->getArgumentCompletionListBegin(param); it != command->getArgumentCompletionListEnd(param); ++it) 462 {463 std::cout << "2_3\n";464 451 if ((*it).first.find(lowercase) == 0 || fragment == "") 465 {466 std::cout << "2_4\n";467 452 CommandExecutor::getEvaluation().getListOfPossibleArguments().push_back(std::pair<const std::string*, const std::string*>(&(*it).first, &(*it).second)); 468 std::cout << "2_5\n"; 469 } 470 } 471 472 std::cout << "2_6\n"; 453 473 454 CommandExecutor::getEvaluation().getListOfPossibleArguments().sort(CommandExecutor::compareStringsInList); 474 std::cout << "2_7\n";475 455 } 476 456 -
code/branches/console/src/core/ConsoleCommand.cc
r1402 r1416 41 41 } 42 42 43 ConsoleCommand& ConsoleCommand::setArgumentCompletionList(unsigned int param, const std::list<std::pair<std::string, std::string> >&(*function) (void))43 ConsoleCommand& ConsoleCommand::setArgumentCompletionList(unsigned int param, std::list<std::pair<std::string, std::string> > (*function) (void)) 44 44 { 45 45 if (param < 5) … … 52 52 } 53 53 54 const std::list<std::pair<std::string, std::string> >& ConsoleCommand::getArgumentCompletionList(unsigned int param) const54 const std::list<std::pair<std::string, std::string> >& ConsoleCommand::getArgumentCompletionList(unsigned int param) 55 55 { 56 56 if (param < 5) 57 return(*this->autocompletionFunction_[param])();57 this->argumentList_ = (*this->autocompletionFunction_[param])(); 58 58 else 59 return autocompletion::fallback(); 59 this->argumentList_ = autocompletion::fallback(); 60 61 return this->argumentList_; 60 62 } 61 63 62 std::list<std::pair<std::string, std::string> >::const_iterator ConsoleCommand::getArgumentCompletionListBegin(unsigned int param) const64 std::list<std::pair<std::string, std::string> >::const_iterator ConsoleCommand::getArgumentCompletionListBegin(unsigned int param) 63 65 { 64 std::cout << "3_1: param: " << param << "\n";65 66 if (param < 5) 66 { 67 std::cout << "3_2: >" << this->autocompletionFunction_[param] << "<\n"; 68 return (*this->autocompletionFunction_[param])().begin(); 69 } 67 this->argumentList_ = (*this->autocompletionFunction_[param])(); 70 68 else 71 { 72 std::cout << "3_3\n"; 73 return autocompletion::fallback().begin(); 74 } 69 this->argumentList_ = autocompletion::fallback(); 70 71 return this->argumentList_.begin(); 75 72 } 76 73 77 std::list<std::pair<std::string, std::string> >::const_iterator ConsoleCommand::getArgumentCompletionListEnd(unsigned int param) const74 std::list<std::pair<std::string, std::string> >::const_iterator ConsoleCommand::getArgumentCompletionListEnd(unsigned int param) 78 75 { 79 std::cout << "4_1: param: " << param << "\n";80 76 if (param < 5) 81 { 82 std::cout << "4_2: >" << this->autocompletionFunction_[param] << "<\n"; 83 return (*this->autocompletionFunction_[param])().end(); 84 } 77 this->argumentList_ = (*this->autocompletionFunction_[param])(); 85 78 else 86 { 87 std::cout << "4_3\n"; 88 return autocompletion::fallback().end(); 89 } 79 this->argumentList_ = autocompletion::fallback(); 80 81 return this->argumentList_.end(); 90 82 } 91 83 } -
code/branches/console/src/core/ConsoleCommand.h
r1390 r1416 42 42 SetConsoleCommandGeneric(classname##function##consolecommand__, classname, orxonox::createConsoleCommand(orxonox::createFunctor(&classname::function), #function), bCreateShortcut) 43 43 44 #define SetConsoleCommandGeneric(fakevariable, classname, executor, bCreateShortcut) \45 Executor& fakevariable = ClassManager<classname>::getIdentifier()->addConsoleCommand((ConsoleCommand*)executor, bCreateShortcut)44 #define SetConsoleCommandGeneric(fakevariable, classname, command, bCreateShortcut) \ 45 ConsoleCommand& fakevariable = ClassManager<classname>::getIdentifier()->addConsoleCommand((ConsoleCommand*)command, bCreateShortcut) 46 46 47 47 … … 52 52 SetConsoleCommandShortcutGeneric(function##consolecommand__, orxonox::createConsoleCommand(orxonox::createFunctor(&function), #function)) 53 53 54 #define SetConsoleCommandShortcutGeneric(fakevariable, executor) \55 Executor& fakevariable = CommandExecutor::addConsoleCommandShortcut((ConsoleCommand*)executor)54 #define SetConsoleCommandShortcutGeneric(fakevariable, command) \ 55 ConsoleCommand& fakevariable = CommandExecutor::addConsoleCommandShortcut((ConsoleCommand*)command) 56 56 57 57 … … 100 100 { return this->accessLevel_; } 101 101 102 ConsoleCommand& setArgumentCompletionList(unsigned int param, const std::list<std::pair<std::string, std::string> >&(*function) (void));102 ConsoleCommand& setArgumentCompletionList(unsigned int param, std::list<std::pair<std::string, std::string> > (*function) (void)); 103 103 104 const std::list<std::pair<std::string, std::string> >& getArgumentCompletionList(unsigned int param) const;105 std::list<std::pair<std::string, std::string> >::const_iterator getArgumentCompletionListBegin(unsigned int param) const;106 std::list<std::pair<std::string, std::string> >::const_iterator getArgumentCompletionListEnd(unsigned int param) const;104 const std::list<std::pair<std::string, std::string> >& getArgumentCompletionList(unsigned int param); 105 std::list<std::pair<std::string, std::string> >::const_iterator getArgumentCompletionListBegin(unsigned int param); 106 std::list<std::pair<std::string, std::string> >::const_iterator getArgumentCompletionListEnd(unsigned int param); 107 107 108 108 private: 109 109 AccessLevel::Level accessLevel_; 110 const std::list<std::pair<std::string, std::string> >& (*autocompletionFunction_[5]) (void); 110 std::list<std::pair<std::string, std::string> > (*autocompletionFunction_[5]) (void); 111 std::list<std::pair<std::string, std::string> > argumentList_; 111 112 }; 112 113 -
code/branches/console/src/core/Debug.h
r1089 r1416 206 206 COUT ## x 207 207 208 #if ORX_HARD_DEBUG_LEVEL >= ORX_NONE 209 #define COUT0 \ 210 if (getSoftDebugLevel() >= ORX_NONE) \ 211 COUT_EXEC(0) 212 #else 213 #define COUT0 if (ORX_NONE)\ 214 COUT_EXEC(0) 215 #endif 216 208 217 #if ORX_HARD_DEBUG_LEVEL >= ORX_ERROR 209 218 #define COUT1 \ … … 256 265 #endif /* if ORX_PRINT_DEBUG_OUTPUT */ 257 266 258 #define COUT0 \259 COUT_EXEC(0)260 267 #endif /* ifndef COUT */ 261 268 … … 274 281 CCOUT ## x 275 282 283 #if ORX_HARD_DEBUG_LEVEL >= ORX_NONE 284 #define CCOUT0 \ 285 if (getSoftDebugLevel() >= ORX_NONE) \ 286 CCOUT_EXEC(0) 287 #else 288 #define CCOUT0 if (ORX_NONE)\ 289 CCOUT_EXEC(0) 290 #endif 291 276 292 #if ORX_HARD_DEBUG_LEVEL >= ORX_ERROR 277 293 #define CCOUT1 \ … … 324 340 #endif /* if ORX_PRINT_DEBUG_OUTPUT */ 325 341 326 #define CCOUT0 \327 CCOUT_EXEC(0)328 342 #endif /* ifndef CCOUT */ 329 343 -
code/branches/console/src/core/OutputHandler.cc
r1341 r1416 38 38 namespace orxonox 39 39 { 40 SetConsoleCommandShortcutGeneric(log, create Executor(createFunctor(&OutputHandler::log), "log" ));41 SetConsoleCommandShortcutGeneric(error, create Executor(createFunctor(&OutputHandler::error), "error" ));42 SetConsoleCommandShortcutGeneric(warning, create Executor(createFunctor(&OutputHandler::warning), "warning"));43 SetConsoleCommandShortcutGeneric(info, create Executor(createFunctor(&OutputHandler::info), "info" ));44 SetConsoleCommandShortcutGeneric(debug, create Executor(createFunctor(&OutputHandler::debug), "debug" ));40 SetConsoleCommandShortcutGeneric(log, createConsoleCommand(createFunctor(&OutputHandler::log), "log" )); 41 SetConsoleCommandShortcutGeneric(error, createConsoleCommand(createFunctor(&OutputHandler::error), "error" )); 42 SetConsoleCommandShortcutGeneric(warning, createConsoleCommand(createFunctor(&OutputHandler::warning), "warning")); 43 SetConsoleCommandShortcutGeneric(info, createConsoleCommand(createFunctor(&OutputHandler::info), "info" )); 44 SetConsoleCommandShortcutGeneric(debug, createConsoleCommand(createFunctor(&OutputHandler::debug), "debug" )); 45 45 46 46 /** -
code/branches/console/src/core/TclBind.cc
r1341 r1416 39 39 namespace orxonox 40 40 { 41 SetConsoleCommandShortcutGeneric(tcl, create Executor(createFunctor(&TclBind::tcl), "tcl"));42 SetConsoleCommandShortcutGeneric(bgerror, create Executor(createFunctor(&TclBind::bgerror), "bgerror"));41 SetConsoleCommandShortcutGeneric(tcl, createConsoleCommand(createFunctor(&TclBind::tcl), "tcl")); 42 SetConsoleCommandShortcutGeneric(bgerror, createConsoleCommand(createFunctor(&TclBind::bgerror), "bgerror")); 43 43 44 44 TclBind::TclBind() -
code/branches/console/src/core/TclThreadManager.cc
r1341 r1416 48 48 namespace orxonox 49 49 { 50 SetConsoleCommandShortcutGeneric(tclexecute, create Executor(createFunctor(&TclThreadManager::execute), "tclexecute"));51 SetConsoleCommandShortcutGeneric(tclquery, create Executor(createFunctor(&TclThreadManager::query), "tclquery" ));50 SetConsoleCommandShortcutGeneric(tclexecute, createConsoleCommand(createFunctor(&TclThreadManager::execute), "tclexecute")); 51 SetConsoleCommandShortcutGeneric(tclquery, createConsoleCommand(createFunctor(&TclThreadManager::query), "tclquery" )); 52 52 SetConsoleCommand(TclThreadManager, create, false); 53 53 SetConsoleCommand(TclThreadManager, destroy, false); -
code/branches/console/src/orxonox/GraphicsEngine.cc
r1194 r1416 45 45 #include "core/Debug.h" 46 46 #include "core/TclBind.h" 47 47 #include "console/InGameConsole.h" 48 48 49 49 namespace orxonox { … … 304 304 int h = rw->getHeight(); 305 305 InputManager::getSingleton().setWindowExtents(w, h); 306 InGameConsole::getInstance().resize(); 306 307 } 307 308 -
code/branches/console/src/orxonox/console/InGameConsole.cc
r1341 r1416 43 43 #include "core/ConsoleCommand.h" 44 44 #include "core/InputManager.h" 45 #include "util/Math.h" 46 45 47 #include "GraphicsEngine.h" 46 48 47 49 #define LINES 30 50 #define CHAR_WIDTH 7.85 // fix this please - determine the char-width dynamically 48 51 49 52 namespace orxonox … … 68 71 this->cursor_ = 0.0; 69 72 this->cursorSymbol_ = '|'; 73 this->inputWindowStart_ = 0; 74 this->numLinesShifted_ = LINES - 1; 70 75 71 76 this->init(); … … 111 116 { 112 117 std::list<std::string>::const_iterator it = Shell::getInstance().getNewestLineIterator(); 113 for (int i = 1; i < LINES; i++) 118 int max = 0; 119 for (int i = 1; i < LINES; ++i) 114 120 { 115 121 if (it != Shell::getInstance().getEndIterator()) 116 122 { 117 this->print(*it, i);118 123 ++it; 124 max = i; 119 125 } 120 126 else 121 { 122 this->print("", i); 123 } 127 break; 128 } 129 130 for (int i = LINES - 1; i > max; --i) 131 this->print("", i, true); 132 133 for (int i = max; i >= 1; --i) 134 { 135 --it; 136 this->print(*it, i, true); 124 137 } 125 138 } … … 139 152 void InGameConsole::lineAdded() 140 153 { 141 for (unsigned int i = LINES - 1; i > 1; --i) 142 { 143 this->consoleOverlayTextAreas_[i]->setCaption(this->consoleOverlayTextAreas_[i - 1]->getCaption()); 144 this->consoleOverlayTextAreas_[i]->setColourTop(this->consoleOverlayTextAreas_[i - 1]->getColourTop()); 145 this->consoleOverlayTextAreas_[i]->setColourBottom(this->consoleOverlayTextAreas_[i - 1]->getColourBottom()); 146 } 147 154 this->numLinesShifted_ = 0; 155 this->shiftLines(); 148 156 this->onlyLastLineChanged(); 149 157 } … … 156 164 if (LINES > 0) 157 165 this->print(Shell::getInstance().getInput(), 0); 166 167 if (Shell::getInstance().getInput() == "" || Shell::getInstance().getInput().size() == 0) 168 this->inputWindowStart_ = 0; 158 169 } 159 170 … … 246 257 247 258 COUT(4) << "Info: InGameConsole initialized" << std::endl; 259 } 260 261 /** 262 @brief Resizes the console elements. Call if window size changes. 263 */ 264 void InGameConsole::resize() 265 { 266 this->windowW_ = GraphicsEngine::getSingleton().getWindowWidth(); 267 this->windowH_ = GraphicsEngine::getSingleton().getWindowHeight(); 268 this->consoleOverlayBorder_->setWidth((int) this->windowW_* InGameConsole::REL_WIDTH); 269 this->consoleOverlayBorder_->setHeight((int) this->windowH_ * InGameConsole::REL_HEIGHT); 270 this->consoleOverlayNoise_->setWidth((int) this->windowW_ * InGameConsole::REL_WIDTH - 10); 271 this->consoleOverlayNoise_->setHeight((int) this->windowH_ * InGameConsole::REL_HEIGHT - 5); 272 273 // now adjust the text lines... 274 this->desiredTextWidth_ = (int) (this->windowW_ * InGameConsole::REL_WIDTH) - 12; 275 276 if (LINES > 0) 277 this->maxCharsPerLine_ = max((unsigned int)10, (unsigned int) ((float)this->desiredTextWidth_ / CHAR_WIDTH)); 278 else 279 this->maxCharsPerLine_ = 10; 280 281 for (int i = 0; i < LINES; i++) 282 { 283 this->consoleOverlayTextAreas_[i]->setWidth(this->desiredTextWidth_); 284 this->consoleOverlayTextAreas_[i]->setTop((int) this->windowH_ * InGameConsole::REL_HEIGHT - 24 - 14*i); 285 } 286 287 this->linesChanged(); 248 288 } 249 289 … … 301 341 302 342 /** 303 @brief Resizes the console elements. Call if window size changes.304 */305 void InGameConsole::resize()306 {307 this->windowW_ = GraphicsEngine::getSingleton().getWindowWidth();308 this->windowH_ = GraphicsEngine::getSingleton().getWindowHeight();309 this->consoleOverlayBorder_->setWidth((int) this->windowW_* InGameConsole::REL_WIDTH);310 this->consoleOverlayBorder_->setHeight((int) this->windowH_ * InGameConsole::REL_HEIGHT);311 this->consoleOverlayNoise_->setWidth((int) this->windowW_ * InGameConsole::REL_WIDTH - 10);312 this->consoleOverlayNoise_->setHeight((int) this->windowH_ * InGameConsole::REL_HEIGHT - 5);313 // now adjust the text lines...314 for (int i = 0; i < LINES; i++)315 {316 this->consoleOverlayTextAreas_[i]->setWidth((int) this->windowW_ * InGameConsole::REL_WIDTH);317 this->consoleOverlayTextAreas_[i]->setTop((int) this->windowH_ * InGameConsole::REL_HEIGHT - 24 - 14*i);318 }319 }320 321 /**322 343 @brief Shows the InGameConsole. 323 344 */ … … 362 383 363 384 /** 385 @brief Shifts all output lines one line up 386 */ 387 void InGameConsole::shiftLines() 388 { 389 for (unsigned int i = LINES - 1; i > 1; --i) 390 { 391 this->consoleOverlayTextAreas_[i]->setCaption(this->consoleOverlayTextAreas_[i - 1]->getCaption()); 392 this->consoleOverlayTextAreas_[i]->setColourTop(this->consoleOverlayTextAreas_[i - 1]->getColourTop()); 393 this->consoleOverlayTextAreas_[i]->setColourBottom(this->consoleOverlayTextAreas_[i - 1]->getColourBottom()); 394 } 395 } 396 397 void InGameConsole::colourLine(int colourcode, int index) 398 { 399 if (colourcode == -1) 400 { 401 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.90, 0.90, 0.90, 1.00)); 402 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 1.00, 1.00, 1.00)); 403 } 404 else if (colourcode == 1) 405 { 406 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.95, 0.25, 0.25, 1.00)); 407 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.50, 0.50, 1.00)); 408 } 409 else if (colourcode == 2) 410 { 411 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.95, 0.50, 0.20, 1.00)); 412 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.70, 0.50, 1.00)); 413 } 414 else if (colourcode == 3) 415 { 416 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.50, 0.50, 0.95, 1.00)); 417 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.80, 1.00, 1.00)); 418 } 419 else if (colourcode == 4) 420 { 421 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.65, 0.48, 0.44, 1.00)); 422 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.90, 0.90, 1.00)); 423 } 424 else if (colourcode == 5) 425 { 426 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.40, 0.20, 0.40, 1.00)); 427 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.60, 0.80, 1.00)); 428 } 429 else 430 { 431 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.21, 0.69, 0.21, 1.00)); 432 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 1.00, 0.80, 1.00)); 433 } 434 } 435 436 /** 364 437 @brief Prints string to bottom line. 365 438 @param s String to be printed 366 439 */ 367 void InGameConsole::print(const std::string& text, int index )440 void InGameConsole::print(const std::string& text, int index, bool alwaysShift) 368 441 { 369 442 char level = 0; … … 378 451 if (LINES > index) 379 452 { 380 if (level == -1) 453 this->colourLine(level, index); 454 455 if (index > 0) 381 456 { 382 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.90, 0.90, 0.90, 1.00)); 383 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 1.00, 1.00, 1.00)); 384 } 385 else if (level == 1) 386 { 387 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.95, 0.25, 0.25, 1.00)); 388 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.50, 0.50, 1.00)); 389 } 390 else if (level == 2) 391 { 392 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.95, 0.50, 0.20, 1.00)); 393 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.70, 0.50, 1.00)); 394 } 395 else if (level == 3) 396 { 397 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.50, 0.50, 0.95, 1.00)); 398 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.80, 1.00, 1.00)); 399 } 400 else if (level == 4) 401 { 402 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.65, 0.48, 0.44, 1.00)); 403 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.90, 0.90, 1.00)); 404 } 405 else if (level == 5) 406 { 407 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.40, 0.20, 0.40, 1.00)); 408 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.60, 0.80, 1.00)); 457 unsigned int linesUsed = 1; 458 while (output.size() > this->maxCharsPerLine_) 459 { 460 ++linesUsed; 461 this->consoleOverlayTextAreas_[index]->setCaption(convert2UTF(output.substr(0, this->maxCharsPerLine_))); 462 output.erase(0, this->maxCharsPerLine_); 463 output.insert(0, 1, ' '); 464 if (linesUsed > numLinesShifted_ || alwaysShift) 465 this->shiftLines(); 466 this->colourLine(level, index); 467 } 468 this->consoleOverlayTextAreas_[index]->setCaption(convert2UTF(output)); 469 this->numLinesShifted_ = linesUsed; 409 470 } 410 471 else 411 472 { 412 this->consoleOverlayTextAreas_[index]->setColourTop (ColourValue(0.21, 0.69, 0.21, 1.00)); 413 this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 1.00, 0.80, 1.00)); 473 if (output.size() > this->maxCharsPerLine_) 474 { 475 if (Shell::getInstance().getInputBuffer().getCursorPosition() < this->inputWindowStart_) 476 this->inputWindowStart_ = Shell::getInstance().getInputBuffer().getCursorPosition(); 477 else if (Shell::getInstance().getInputBuffer().getCursorPosition() >= (this->inputWindowStart_ + this->maxCharsPerLine_ - 1)) 478 this->inputWindowStart_ = Shell::getInstance().getInputBuffer().getCursorPosition() - this->maxCharsPerLine_ + 1; 479 480 output = output.substr(this->inputWindowStart_, this->maxCharsPerLine_); 481 } 482 this->consoleOverlayTextAreas_[index]->setCaption(convert2UTF(output)); 414 483 } 415 416 this->consoleOverlayTextAreas_[index]->setCaption(convert2UTF(output));417 484 } 418 485 } -
code/branches/console/src/orxonox/console/InGameConsole.h
r1322 r1416 48 48 49 49 void setConfigValues(); 50 51 virtual void linesChanged();52 virtual void onlyLastLineChanged();53 virtual void lineAdded();54 virtual void inputChanged();55 virtual void cursorChanged();56 virtual void exit();57 58 50 void tick(float dt); 59 51 60 52 void activate(); 61 53 void deactivate(); 54 void resize(); 62 55 63 56 static void openConsole(); … … 69 62 ~InGameConsole(); 70 63 64 virtual void linesChanged(); 65 virtual void onlyLastLineChanged(); 66 virtual void lineAdded(); 67 virtual void inputChanged(); 68 virtual void cursorChanged(); 69 virtual void exit(); 70 71 71 void init(); 72 void resize(); 73 void print(const std::string& text, int index); 72 void shiftLines(); 73 void colourLine(int colourcode, int index); 74 void print(const std::string& text, int index, bool alwaysShift = false); 74 75 static Ogre::UTFString convert2UTF(std::string s); 75 76 … … 80 81 int windowW_; 81 82 int windowH_; 83 int desiredTextWidth_; 84 unsigned int maxCharsPerLine_; 85 unsigned int numLinesShifted_; 82 86 int scroll_; 83 87 float scrollTimer_; 84 88 float cursor_; 89 unsigned int inputWindowStart_; 85 90 char cursorSymbol_; 86 91 bool active_;
Note: See TracChangeset
for help on using the changeset viewer.