Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5969


Ignore:
Timestamp:
Oct 20, 2009, 6:47:40 PM (15 years ago)
Author:
rgrieder
Message:

Small stuff:

  • Using a reference to the Shell in InGameConsole
  • Replaced the caller macro in the Shell with a template function
Location:
code/branches/console/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • code/branches/console/src/libraries/core/Shell.cc

    r5929 r5969  
    3535#include "Core.h"
    3636#include "ConsoleCommand.h"
    37 
    38 #define SHELL_UPDATE_LISTENERS(function) \
    39     for (std::list<ShellListener*>::iterator it = this->listeners_.begin(); it != this->listeners_.end(); ) \
    40         (*(it++))->function()
    4137
    4238namespace orxonox
     
    153149    void Shell::registerListener(ShellListener* listener)
    154150    {
    155         this->listeners_.insert(this->listeners_.end(), listener);
     151        this->listeners_.push_back(listener);
    156152    }
    157153
     
    161157        {
    162158            if ((*it) == listener)
    163                 this->listeners_.erase(it++);
     159                it = this->listeners_.erase(it);
    164160            else
    165161                ++it;
     
    170166    {
    171167        this->inputBuffer_->setCursorPosition(cursor);
    172         SHELL_UPDATE_LISTENERS(cursorChanged);
     168        this->updateListeners<&ShellListener::cursorChanged>();
    173169    }
    174170
     
    199195        this->finishedLastLine_ = true;
    200196
    201         SHELL_UPDATE_LISTENERS(linesChanged);
     197        this->updateListeners<&ShellListener::linesChanged>();
    202198    }
    203199
     
    258254                if (!this->scrollPosition_)
    259255                {
    260                     SHELL_UPDATE_LISTENERS(lineAdded);
     256                    this->updateListeners<&ShellListener::lineAdded>();
    261257                }
    262258            }
     
    265261                (*this->lines_.begin()) += output;
    266262                this->finishedLastLine_ = newline;
    267                 SHELL_UPDATE_LISTENERS(onlyLastLineChanged);
     263                this->updateListeners<&ShellListener::onlyLastLineChanged>();
    268264            }
    269265
     
    273269    void Shell::inputChanged()
    274270    {
    275         SHELL_UPDATE_LISTENERS(inputChanged);
    276         SHELL_UPDATE_LISTENERS(cursorChanged);
     271        this->updateListeners<&ShellListener::inputChanged>();
     272        this->updateListeners<&ShellListener::cursorChanged>();
    277273    }
    278274
     
    299295    {
    300296        this->inputBuffer_->removeBehindCursor();
    301         SHELL_UPDATE_LISTENERS(inputChanged);
    302         SHELL_UPDATE_LISTENERS(cursorChanged);
     297        this->updateListeners<&ShellListener::inputChanged>();
     298        this->updateListeners<&ShellListener::cursorChanged>();
    303299    }
    304300
     
    306302    {
    307303        this->inputBuffer_->removeAtCursor();
    308         SHELL_UPDATE_LISTENERS(inputChanged);
     304        this->updateListeners<&ShellListener::inputChanged>();
    309305    }
    310306
     
    313309        this->inputBuffer_->clear();
    314310        this->historyPosition_ = 0;
    315         SHELL_UPDATE_LISTENERS(inputChanged);
    316         SHELL_UPDATE_LISTENERS(cursorChanged);
     311        this->updateListeners<&ShellListener::inputChanged>();
     312        this->updateListeners<&ShellListener::cursorChanged>();
    317313    }
    318314
     
    320316    {
    321317        this->inputBuffer_->increaseCursor();
    322         SHELL_UPDATE_LISTENERS(cursorChanged);
     318        this->updateListeners<&ShellListener::cursorChanged>();
    323319    }
    324320
     
    326322    {
    327323        this->inputBuffer_->decreaseCursor();
    328         SHELL_UPDATE_LISTENERS(cursorChanged);
     324        this->updateListeners<&ShellListener::cursorChanged>();
    329325    }
    330326
     
    332328    {
    333329        this->inputBuffer_->setCursorToEnd();
    334         SHELL_UPDATE_LISTENERS(cursorChanged);
     330        this->updateListeners<&ShellListener::cursorChanged>();
    335331    }
    336332
     
    338334    {
    339335        this->inputBuffer_->setCursorToBegin();
    340         SHELL_UPDATE_LISTENERS(cursorChanged);
     336        this->updateListeners<&ShellListener::cursorChanged>();
    341337    }
    342338
     
    366362            ++this->scrollPosition_;
    367363
    368             SHELL_UPDATE_LISTENERS(linesChanged);
     364            this->updateListeners<&ShellListener::linesChanged>();
    369365        }
    370366    }
     
    377373            --this->scrollPosition_;
    378374
    379             SHELL_UPDATE_LISTENERS(linesChanged);
     375            this->updateListeners<&ShellListener::linesChanged>();
    380376        }
    381377    }
     
    393389        this->scrollIterator_ = this->lines_.begin();
    394390
    395         SHELL_UPDATE_LISTENERS(exit);
     391        this->updateListeners<&ShellListener::exit>();
    396392    }
    397393}
  • code/branches/console/src/libraries/core/Shell.h

    r5781 r5969  
    132132            void exit();
    133133
     134            template <void (ShellListener::*F)()>
     135            void updateListeners()
     136            {
     137                for (std::list<ShellListener*>::const_iterator it = this->listeners_.begin(); it != this->listeners_.end(); )
     138                    ((*(it++))->*F)();
     139            }
     140
    134141            std::list<ShellListener*> listeners_;
    135142            InputBuffer* inputBuffer_;
  • code/branches/console/src/orxonox/overlays/InGameConsole.cc

    r5929 r5969  
    6868    */
    6969    InGameConsole::InGameConsole()
    70         : consoleOverlay_(0)
     70        : shell_(Shell::getInstance())
     71        , consoleOverlay_(0)
    7172        , consoleOverlayContainer_(0)
    7273        , consoleOverlayNoise_(0)
     
    174175        // create the corresponding input state
    175176        inputState_ = InputManager::getInstance().createInputState("console", false, false, InputStatePriority::Console);
    176         inputState_->setKeyHandler(Shell::getInstance().getInputBuffer());
     177        inputState_->setKeyHandler(this->shell_.getInputBuffer());
    177178        bHidesAllInputChanged();
    178179
     
    252253        this->consoleOverlayContainer_->setTop(-1.2 * this->relativeHeight);
    253254
    254         Shell::getInstance().addOutputLevel(true);
     255        this->shell_.addOutputLevel(true);
    255256
    256257        COUT(4) << "Info: InGameConsole initialized" << std::endl;
     
    266267    void InGameConsole::linesChanged()
    267268    {
    268         std::list<std::string>::const_iterator it = Shell::getInstance().getNewestLineIterator();
     269        std::list<std::string>::const_iterator it = this->shell_.getNewestLineIterator();
    269270        int max = 0;
    270271        for (int i = 1; i < LINES; ++i)
    271272        {
    272             if (it != Shell::getInstance().getEndIterator())
     273            if (it != this->shell_.getEndIterator())
    273274            {
    274275                ++it;
     
    295296    {
    296297        if (LINES > 1)
    297             this->print(*Shell::getInstance().getNewestLineIterator(), 1);
     298            this->print(*this->shell_.getNewestLineIterator(), 1);
    298299    }
    299300
     
    314315    {
    315316        if (LINES > 0)
    316             this->print(Shell::getInstance().getInput(), 0);
    317 
    318         if (Shell::getInstance().getInput() == "" || Shell::getInstance().getInput().size() == 0)
     317            this->print(this->shell_.getInput(), 0);
     318
     319        if (this->shell_.getInput() == "" || this->shell_.getInput().size() == 0)
    319320            this->inputWindowStart_ = 0;
    320321    }
     
    325326    void InGameConsole::cursorChanged()
    326327    {
    327         unsigned int pos = Shell::getInstance().getCursorPosition() - inputWindowStart_;
     328        unsigned int pos = this->shell_.getCursorPosition() - inputWindowStart_;
    328329        if (pos > maxCharsPerLine_)
    329330            pos = maxCharsPerLine_;
     
    482483                if (output.size() > this->maxCharsPerLine_)
    483484                {
    484                     if (Shell::getInstance().getInputBuffer()->getCursorPosition() < this->inputWindowStart_)
    485                         this->inputWindowStart_ = Shell::getInstance().getInputBuffer()->getCursorPosition();
    486                     else if (Shell::getInstance().getInputBuffer()->getCursorPosition() >= (this->inputWindowStart_ + this->maxCharsPerLine_ - 1))
    487                         this->inputWindowStart_ = Shell::getInstance().getInputBuffer()->getCursorPosition() - this->maxCharsPerLine_ + 1;
     485                    if (this->shell_.getInputBuffer()->getCursorPosition() < this->inputWindowStart_)
     486                        this->inputWindowStart_ = this->shell_.getInputBuffer()->getCursorPosition();
     487                    else if (this->shell_.getInputBuffer()->getCursorPosition() >= (this->inputWindowStart_ + this->maxCharsPerLine_ - 1))
     488                        this->inputWindowStart_ = this->shell_.getInputBuffer()->getCursorPosition() - this->maxCharsPerLine_ + 1;
    488489
    489490                    output = output.substr(this->inputWindowStart_, this->maxCharsPerLine_);
     
    506507            this->bActive_ = true;
    507508            InputManager::getInstance().enterState("console");
    508             Shell::getInstance().registerListener(this);
     509            this->shell_.registerListener(this);
    509510
    510511            this->windowResized(this->windowW_, this->windowH_);
     
    528529            this->bActive_ = false;
    529530            InputManager::getInstance().leaveState("console");
    530             Shell::getInstance().unregisterListener(this);
     531            this->shell_.unregisterListener(this);
    531532
    532533            // scroll up
  • code/branches/console/src/orxonox/overlays/InGameConsole.h

    r5929 r5969  
    8181
    8282    private: // variables
     83        Shell& shell_;
    8384        bool bActive_;
    8485        int windowW_;
Note: See TracChangeset for help on using the changeset viewer.