diff options
author | Björn Steinbrink <B.Steinbrink@gmx.de> | 2005-07-31 15:45:33 +0000 |
---|---|---|
committer | Björn Steinbrink <B.Steinbrink@gmx.de> | 2005-07-31 15:45:33 +0000 |
commit | b7b9299ab765647807f25dc95e8b8cb57f6eb1c5 (patch) | |
tree | 7b9a68497ee4b8d19cddc226803b34172b5149fd /src | |
parent | 51bfbd368cc455b037393d3383346640113e915b (diff) | |
download | mana-b7b9299ab765647807f25dc95e8b8cb57f6eb1c5.tar.gz mana-b7b9299ab765647807f25dc95e8b8cb57f6eb1c5.tar.bz2 mana-b7b9299ab765647807f25dc95e8b8cb57f6eb1c5.tar.xz mana-b7b9299ab765647807f25dc95e8b8cb57f6eb1c5.zip |
Added check to stop scrolling at map borders. Small cleanup in the listbox drawing code.
Diffstat (limited to 'src')
-rw-r--r-- | src/engine.cpp | 16 | ||||
-rw-r--r-- | src/gui/listbox.cpp | 28 |
2 files changed, 29 insertions, 15 deletions
diff --git a/src/engine.cpp b/src/engine.cpp index c6a7a6c8..918aea7f 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -335,6 +335,22 @@ void Engine::draw() map_x = (player_node->x - 13) * 32 + get_x_offset(player_node); map_y = (player_node->y - 9) * 32 + get_y_offset(player_node); + if (map_x < 0) { + map_x = 0; + } + if (map_y < 0) { + map_y = 0; + } + + if (mCurrentMap) { + if (map_x > (mCurrentMap->getWidth() - 13) * 32) { + map_x = (mCurrentMap->getWidth() - 13) * 32; + } + if (map_y > (mCurrentMap->getHeight() - 9) * 32) { + map_y = (mCurrentMap->getHeight() - 9) * 32; + } + } + camera_x = map_x / 32; camera_y = map_y / 32; int mouseTileX = mouseX / 32 + camera_x; diff --git a/src/gui/listbox.cpp b/src/gui/listbox.cpp index 3f82fe1b..fee67cbd 100644 --- a/src/gui/listbox.cpp +++ b/src/gui/listbox.cpp @@ -44,27 +44,25 @@ void ListBox::draw(gcn::Graphics *graphics) graphics->setColor(gcn::Color(110, 160, 255)); graphics->setFont(getFont()); - int i; int fontHeight = getFont()->getHeight(); - int y = 0; - for (i = 0; i < mListModel->getNumberOfElements(); ++i) - { - if (i == mSelected) { - if (useOpenGL) { + // Draw rectangle below the selected list element + if (mSelected >= 0) { + if (useOpenGL) { #ifdef USE_OPENGL - dynamic_cast<gcn::OpenGLGraphics*>(graphics)->fillRectangle( - gcn::Rectangle(0, y, getWidth(), fontHeight)); + dynamic_cast<gcn::OpenGLGraphics*>(graphics)->fillRectangle( + gcn::Rectangle(0, fontHeight * mSelected, getWidth(), fontHeight)); #endif - } - else { - dynamic_cast<gcn::SDLGraphics*>(graphics)->fillRectangle( - gcn::Rectangle(0, y, getWidth(), fontHeight)); - } } + else { + dynamic_cast<gcn::SDLGraphics*>(graphics)->fillRectangle( + gcn::Rectangle(0, fontHeight * mSelected, getWidth(), fontHeight)); + } + } + // Draw the list elements + for (int i = 0, y = 0; i < mListModel->getNumberOfElements(); ++i, y += fontHeight) + { graphics->drawText(mListModel->getElementAt(i), 1, y); - - y += fontHeight; } } |