summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-04-11 14:38:02 +0200
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-04-16 00:18:31 +0200
commitb57af96f94c19bc6064ac158a6996f0a01c86d68 (patch)
treeaf4bff8033c54de67b645db1b8d213cd624af655 /src/game.cpp
parent0b1ea91fcc77961913af35b89751171327656fb1 (diff)
downloadmana-client-b57af96f94c19bc6064ac158a6996f0a01c86d68.tar.gz
mana-client-b57af96f94c19bc6064ac158a6996f0a01c86d68.tar.bz2
mana-client-b57af96f94c19bc6064ac158a6996f0a01c86d68.tar.xz
mana-client-b57af96f94c19bc6064ac158a6996f0a01c86d68.zip
Introduced the Being::lookAt() function.
We're now using it when picking up items. Also, de-overnested the Game::handleInput() function when handling pickups.
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp71
1 files changed, 35 insertions, 36 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 206be6c5..c54f7abe 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -398,6 +398,40 @@ void Game::logic()
}
/**
+ * handle item pick up case.
+ */
+static void handleItemPickUp()
+{
+ int x = player_node->getTileX();
+ int y = player_node->getTileY();
+
+ // Let's look for items around until you find one.
+ bool found = false;
+ for (int xX = x - 1; xX < x + 2; ++xX)
+ {
+ for (int yY = y - 1; yY < y + 2; ++yY)
+ {
+ FloorItem *item = actorSpriteManager->findItem(xX, yY);
+ if (item)
+ {
+ found = true;
+ player_node->pickUp(item);
+
+ // We found it, so set the player
+ // direction accordingly,
+ player_node->lookAt(
+ player_node->getMap()->getTileCenter(xX, yY));
+
+ // Get out of the loops
+ break;
+ }
+ }
+ if (found)
+ break;
+ }
+}
+
+/**
* The huge input handling method.
*/
void Game::handleInput()
@@ -629,42 +663,7 @@ void Game::handleInput()
{
case KeyboardConfig::KEY_PICKUP:
{
- int x = player_node->getTileX();
- int y = player_node->getTileY();
- // Let's look for items around until you find one.
- bool found = false;
- for (int xX = x - 1; xX < x + 2; ++xX)
- {
- for (int yY = y - 1; yY < y + 2; ++yY)
- {
- FloorItem *item =
- actorSpriteManager->findItem(xX, yY);
- if (item)
- {
- found = true;
- player_node->pickUp(item);
- // We found it, so set the player
- // direction accordingly,
- Uint8 dir = 0;
- if (xX < x)
- dir |= Being::LEFT;
- else if (xX > x)
- dir |= Being::RIGHT;
- if (yY < y)
- dir |= Being::UP;
- else if (yY > y)
- dir |= Being::DOWN;
-
- if (dir)
- player_node->setDirection(dir);
-
- // Get out of the loops
- break;
- }
- }
- if (found)
- break;
- }
+ handleItemPickUp();
used = true;
}