diff options
Diffstat (limited to 'src/game.cpp')
-rw-r--r-- | src/game.cpp | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/src/game.cpp b/src/game.cpp index 683ba418b..14a988700 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -2,7 +2,7 @@ * The ManaPlus Client * Copyright (C) 2004-2009 The Mana World Development Team * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011 The ManaPlus Developers + * Copyright (C) 2011-2012 The ManaPlus Developers * * This file is part of The ManaPlus Client. * @@ -216,7 +216,9 @@ static void createGuiWindows() minimap = new Minimap; helpWindow = new HelpWindow; debugWindow = new DebugWindow; - itemShortcutWindow = new ShortcutWindow("ItemShortcut", "items.xml"); + itemShortcutWindow = new ShortcutWindow( + "ItemShortcut", "items.xml", 83, 460); + for (int f = 0; f < SHORTCUT_TABS; f ++) { itemShortcutWindow->addTab(toString(f + 1), @@ -551,9 +553,9 @@ void Game::logic() if (Client::getState() != STATE_ERROR) { - errorMessage = _("The connection to the server was lost."); if (!disconnectedDialog) { + errorMessage = _("The connection to the server was lost."); disconnectedDialog = new OkDialog(_("Network Error"), errorMessage, false); disconnectedDialog->addActionListener(&errorListener); @@ -561,14 +563,20 @@ void Game::logic() } } - if (viewport) + if (viewport && !errorMessage.empty()) { Map *map = viewport->getCurrentMap(); if (map) + { + logger->log("state: %d", Client::getState()); map->saveExtraLayer(); + } } closeDialogs(); Client::setFramerate(config.getIntValue("fpslimit")); + mNextAdjustTime = cur_time + adjustDelay; + if (Client::getState() != STATE_ERROR) + errorMessage = ""; } else { @@ -598,7 +606,10 @@ void Game::adjustPerfomance() return; } - int maxFps = config.getIntValue("fpslimit"); + int maxFps = Client::getFramerate(); + if (maxFps != config.getIntValue("fpslimit")) + return; + if (!maxFps) maxFps = 30; else if (maxFps < 10) @@ -1087,6 +1098,7 @@ bool Game::handleSwitchKeys(SDL_Event &event, bool &used) gcn::Window *requestedWindow = nullptr; if (!NpcDialog::isAnyInputFocused() + && !InventoryWindow::isAnyInputFocused() && !keyboard.isKeyActive(keyboard.KEY_TARGET) && !keyboard.isKeyActive(keyboard.KEY_UNTARGET)) { @@ -1507,8 +1519,7 @@ void Game::handleMoveAndAttack(SDL_Event &event, bool wasDown) } // Talk to the nearest NPC if 't' pressed - if (event.type == SDL_KEYDOWN && - keyboard.getKeyIndex(event.key.keysym.sym) + if (wasDown && keyboard.getKeyIndex(event.key.keysym.sym) == KeyboardConfig::KEY_TALK && !keyboard.isKeyActive(keyboard.KEY_EMOTE)) { @@ -1574,7 +1585,6 @@ void Game::handleActive(SDL_Event &event) player_node->setHalfAway(true); } } - Client::setFramerate(fpsLimit); } if (player_node) player_node->updateName(); @@ -1584,19 +1594,22 @@ void Game::handleActive(SDL_Event &event) if (event.active.state & SDL_APPMOUSEFOCUS) Client::setMouseFocused(event.active.gain); - if (player_node && player_node->getAway()) + if (!fpsLimit) { - if (Client::getInputFocused() || Client::getMouseFocused()) - fpsLimit = config.getIntValue("fpslimit"); + if (player_node && player_node->getAway()) + { + if (Client::getInputFocused() || Client::getMouseFocused()) + fpsLimit = config.getIntValue("fpslimit"); + else + fpsLimit = config.getIntValue("altfpslimit"); + } else - fpsLimit = config.getIntValue("altfpslimit"); - Client::setFramerate(fpsLimit); - } - else - { - fpsLimit = config.getIntValue("fpslimit"); - Client::setFramerate(fpsLimit); + { + fpsLimit = config.getIntValue("fpslimit"); + } } + Client::setFramerate(fpsLimit); + mNextAdjustTime = cur_time + adjustDelay; } /** |