summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2012-01-21 12:30:36 +0100
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2012-01-22 11:12:17 +0100
commitc4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb (patch)
treed87655455c0a331c73bf5b762701fafaa5348688 /src/game.cpp
parent0d613d75b732c0d057acc3004f9b4322cf73d449 (diff)
downloadmana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.tar.gz
mana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.tar.bz2
mana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.tar.xz
mana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.zip
Allow resizing of the game in windowed mode
Window positions are semi-smartly corrected as a result of the resize. Not supported when using OpenGL on Windows for now. Reviewed-by: Yohann Ferreira
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 77ccfc44..1c24d5d1 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -217,8 +217,7 @@ Game::Game():
// Create the viewport
viewport = new Viewport;
- viewport->setDimension(gcn::Rectangle(0, 0, graphics->getWidth(),
- graphics->getHeight()));
+ viewport->setSize(graphics->getWidth(), graphics->getHeight());
gcn::Container *top = static_cast<gcn::Container*>(gui->getTop());
top->add(viewport);
@@ -417,8 +416,13 @@ void Game::handleInput()
{
bool used = false;
+ if (event.type == SDL_VIDEORESIZE)
+ {
+ // Let the client deal with this one (it'll pass down from there)
+ Client::instance()->resizeVideo(event.resize.w, event.resize.h);
+ }
// Keyboard events (for discontinuous keys)
- if (event.type == SDL_KEYDOWN)
+ else if (event.type == SDL_KEYDOWN)
{
gcn::Window *requestedWindow = NULL;
@@ -996,3 +1000,9 @@ int Game::getCurrentTileHeight() const
return DEFAULT_TILE_LENGTH;
}
+
+void Game::videoResized(int width, int height)
+{
+ viewport->setSize(width, height);
+ mWindowMenu->setPosition(width - 3 - mWindowMenu->getWidth(), 3);
+}