summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp78
1 files changed, 73 insertions, 5 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 82750dac..f1df57cc 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -58,6 +58,7 @@
#include "gui/ministatus.h"
#include "gui/npcdialog.h"
#include "gui/okdialog.h"
+#include "gui/outfitwindow.h"
#include "gui/sdlinput.h"
#include "gui/sell.h"
#include "gui/setup.h"
@@ -139,6 +140,7 @@ HelpWindow *helpWindow;
DebugWindow *debugWindow;
ShortcutWindow *itemShortcutWindow;
ShortcutWindow *emoteShortcutWindow;
+OutfitWindow *outfitWindow;
BeingManager *beingManager = NULL;
FloorItemManager *floorItemManager = NULL;
@@ -233,6 +235,7 @@ static void createGuiWindows()
new ItemShortcutContainer);
emoteShortcutWindow = new ShortcutWindow("EmoteShortcut",
new EmoteShortcutContainer);
+ outfitWindow = new OutfitWindow();
localChatTab = new ChatTab(_("General"));
@@ -278,6 +281,7 @@ static void destroyGuiWindows()
delete itemShortcutWindow;
delete emoteShortcutWindow;
delete storageWindow;
+ delete outfitWindow;
}
Game::Game():
@@ -610,6 +614,65 @@ void Game::handleInput()
}
}
+ if (event.key.keysym.mod & KMOD_RCTRL && !chatWindow->isInputFocused())
+ {
+ switch (event.key.keysym.sym)
+ {
+ case SDLK_1:
+ outfitWindow->wearOutfit(0);
+ used = true;
+ break;
+
+ case SDLK_2:
+ outfitWindow->wearOutfit(1);
+ used = true;
+ break;
+
+ case SDLK_3:
+ outfitWindow->wearOutfit(2);
+ used = true;
+ break;
+
+ case SDLK_4:
+ outfitWindow->wearOutfit(3);
+ used = true;
+ break;
+
+ case SDLK_5:
+ outfitWindow->wearOutfit(4);
+ used = true;
+ break;
+
+ case SDLK_6:
+ outfitWindow->wearOutfit(5);
+ used = true;
+ break;
+
+ case SDLK_7:
+ outfitWindow->wearOutfit(6);
+ used = true;
+ break;
+
+ case SDLK_8:
+ outfitWindow->wearOutfit(7);
+ used = true;
+ break;
+
+ case SDLK_9:
+ outfitWindow->wearOutfit(8);
+ used = true;
+ break;
+
+ case SDLK_0:
+ outfitWindow->wearOutfit(9);
+ used = true;
+ break;
+
+ default:
+ break;
+ }
+ }
+
const int tKey = keyboard.getKeyIndex(event.key.keysym.sym);
switch (tKey)
{
@@ -669,7 +732,7 @@ void Game::handleInput()
default:
break;
}
- if (keyboard.isEnabled() &&
+ if (keyboard.isEnabled() &&
!chatWindow->isInputFocused() && !npcDialog->isInputFocused())
{
const int tKey = keyboard.getKeyIndex(event.key.keysym.sym);
@@ -786,6 +849,9 @@ void Game::handleInput()
case KeyboardConfig::KEY_WINDOW_EMOTE_SHORTCUT:
requestedWindow = emoteShortcutWindow;
break;
+ case KeyboardConfig::KEY_WINDOW_OUTFIT:
+ requestedWindow = outfitWindow;
+ break;
case KeyboardConfig::KEY_SCREENSHOT:
// Screenshot (picture, hence the p)
saveScreenshot();
@@ -926,7 +992,7 @@ void Game::handleInput()
}
#else
player_node->setWalkingDir(direction);
-
+#endif
// Attacking monsters
if (keyboard.isKeyActive(keyboard.KEY_ATTACK) ||
(joystick && joystick->buttonPressed(0)))
@@ -943,7 +1009,11 @@ void Game::handleInput()
// A set target has highest priority
if (!player_node->getTarget())
{
+#ifdef TMWSERV_SUPPORT
+ Uint16 targetX = x / 32, targetY = y / 32;
+#else
Uint16 targetX = x, targetY = y;
+#endif
// Only auto target Monsters
target = beingManager->findNearestLivingBeing(targetX, targetY,
20, Being::MONSTER);
@@ -951,8 +1021,6 @@ void Game::handleInput()
player_node->attack(target, newTarget);
}
-#endif
-
// Target the nearest player/monster/npc
if ((keyboard.isKeyActive(keyboard.KEY_TARGET_PLAYER) ||
keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) ||
@@ -996,7 +1064,7 @@ void Game::handleInput()
}
// Stop attacking if the right key is pressed
- if (!keyboard.isKeyActive(keyboard.KEY_ATTACK)
+ if (!keyboard.isKeyActive(keyboard.KEY_ATTACK)
&& keyboard.isKeyActive(keyboard.KEY_TARGET))
{
player_node->stopAttack();