diff options
author | Bertram <bertram@cegetel.net> | 2009-10-22 01:18:41 +0200 |
---|---|---|
committer | Bertram <bertram@cegetel.net> | 2009-10-22 01:18:41 +0200 |
commit | 4720134d58cd5fe0846ed911b360ed75641cb874 (patch) | |
tree | 3ac3292f26a30971f424bdbd794f4daf3159adfe /src/being.cpp | |
parent | c36ab53b35e336e21fce5943d7d609ea02f8cea9 (diff) | |
download | mana-4720134d58cd5fe0846ed911b360ed75641cb874.tar.gz mana-4720134d58cd5fe0846ed911b360ed75641cb874.tar.bz2 mana-4720134d58cd5fe0846ed911b360ed75641cb874.tar.xz mana-4720134d58cd5fe0846ed911b360ed75641cb874.zip |
Fix flipping player's direction when using keyboard to walk diagonally.
Diffstat (limited to 'src/being.cpp')
-rw-r--r-- | src/being.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/being.cpp b/src/being.cpp index d133225f..69e01dba 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -575,7 +575,13 @@ void Being::logic() // Update the player sprite direction int direction = 0; const float dx = std::abs(dir.x); - const float dy = std::abs(dir.y); + float dy = std::abs(dir.y); + + // When not using mouse for the player, we slightly prefer + // UP and DOWN position, especially when walking diagonally. + if (this == player_node && !player_node->isPathSetByMouse()) + dy = dy + 2; + if (dx > dy) direction |= (dir.x > 0) ? RIGHT : LEFT; else |