diff options
author | Bertram <bertram@cegetel.net> | 2010-02-09 01:42:50 +0100 |
---|---|---|
committer | Bertram <bertram@cegetel.net> | 2010-02-09 01:42:50 +0100 |
commit | 56f501c8148b1061a02547d37b20eeeeb64029db (patch) | |
tree | 718e48289066706bc3851830f3c6b03150e66b97 /src/net/manaserv | |
parent | 8b4d9f9b5eaf175baf0c4209c312133bb457742c (diff) | |
download | mana-56f501c8148b1061a02547d37b20eeeeb64029db.tar.gz mana-56f501c8148b1061a02547d37b20eeeeb64029db.tar.bz2 mana-56f501c8148b1061a02547d37b20eeeeb64029db.tar.xz mana-56f501c8148b1061a02547d37b20eeeeb64029db.zip |
Made the Beings' logic be able to handle any tile height/width.
This is the First step to get rid of most hardcoded 32 values.
Diffstat (limited to 'src/net/manaserv')
-rw-r--r-- | src/net/manaserv/beinghandler.cpp | 31 | ||||
-rw-r--r-- | src/net/manaserv/beinghandler.h | 4 | ||||
-rw-r--r-- | src/net/manaserv/playerhandler.cpp | 2 | ||||
-rw-r--r-- | src/net/manaserv/playerhandler.h | 2 |
4 files changed, 33 insertions, 6 deletions
diff --git a/src/net/manaserv/beinghandler.cpp b/src/net/manaserv/beinghandler.cpp index 3cafe706..02f136af 100644 --- a/src/net/manaserv/beinghandler.cpp +++ b/src/net/manaserv/beinghandler.cpp @@ -91,10 +91,35 @@ void BeingHandler::handleMessage(Net::MessageIn &msg) } } -float BeingHandler::giveSpeedInPixelsPerTicks(float speedInTilesPerSeconds) +Vector BeingHandler::giveSpeedInPixelsPerTicks(float speedInTilesPerSeconds) { - return (speedInTilesPerSeconds * (float)DEFAULT_TILE_SIDE_LENGTH) - / 1000 * (float)MILLISECONDS_IN_A_TICK; + Vector speedInTicks; + Game *game = Game::instance(); + Map *map = 0; + if (game) + { + map = game->getCurrentMap(); + if (map) + { + speedInTicks.x = speedInTilesPerSeconds + * (float)map->getTileWidth() + / 1000 * (float)MILLISECONDS_IN_A_TICK; + speedInTicks.y = speedInTilesPerSeconds + * (float)map->getTileHeight() + / 1000 * (float)MILLISECONDS_IN_A_TICK; + } + } + + if (!game || !map) + { + speedInTicks.x = speedInTicks.y = speedInTilesPerSeconds + * (float)DEFAULT_TILE_SIDE_LENGTH + / 1000 * (float)MILLISECONDS_IN_A_TICK; + } + // We don't use z for now. + speedInTicks.z = 0; + + return speedInTicks; } static void handleLooks(Player *being, Net::MessageIn &msg) diff --git a/src/net/manaserv/beinghandler.h b/src/net/manaserv/beinghandler.h index 1d01de22..6de9a2aa 100644 --- a/src/net/manaserv/beinghandler.h +++ b/src/net/manaserv/beinghandler.h @@ -23,6 +23,8 @@ #define NET_MANASERV_BEINGHANDLER_H #include "net/manaserv/messagehandler.h" +#include "vector.h" +#include "map.h" namespace ManaServ { @@ -39,7 +41,7 @@ class BeingHandler : public MessageHandler * Used to optimize Being::logic() calls. * @see MILLISECONDS_IN_A_TICKS */ - static float giveSpeedInPixelsPerTicks(float speedInTilesPerSeconds); + static Vector giveSpeedInPixelsPerTicks(float speedInTilesPerSeconds); private: void handleBeingAttackMessage(Net::MessageIn &msg); diff --git a/src/net/manaserv/playerhandler.cpp b/src/net/manaserv/playerhandler.cpp index 9dbd3027..007aa93f 100644 --- a/src/net/manaserv/playerhandler.cpp +++ b/src/net/manaserv/playerhandler.cpp @@ -432,7 +432,7 @@ int PlayerHandler::getJobLocation() return -1; } -float PlayerHandler::getDefaultWalkSpeed() +Vector PlayerHandler::getDefaultWalkSpeed() { // Return translation in pixels per ticks. return ManaServ::BeingHandler::giveSpeedInPixelsPerTicks(6.0f); diff --git a/src/net/manaserv/playerhandler.h b/src/net/manaserv/playerhandler.h index edcc5905..6edc96bb 100644 --- a/src/net/manaserv/playerhandler.h +++ b/src/net/manaserv/playerhandler.h @@ -73,7 +73,7 @@ class PlayerHandler : public MessageHandler, public Net::PlayerHandler int getJobLocation(); - float getDefaultWalkSpeed(); + Vector getDefaultWalkSpeed(); private: void handleMapChangeMessage(Net::MessageIn &msg); |