Fix a lag issue with auto walking

* Auto walking on unwalkable objects was still being processed
  by the findPath algorithm. Ed, if this algorithm shouldn't be causing
  lag spikes for the client, perhaps I should find the cause in findPath.
  For now this will fix the issue however.
master
BeniS 11 years ago
parent 0b29a4b466
commit 725a16e38e

@ -66,14 +66,6 @@ function UIGameMap:onMouseRelease(mousePosition, mouseButton)
-- happens when clicking outside of map boundaries
if not autoWalkPos then return false end
local localPlayerPos = g_game.getLocalPlayer():getPosition()
if autoWalkPos.z ~= localPlayerPos.z then
local dz = autoWalkPos.z - localPlayerPos.z
autoWalkPos.x = autoWalkPos.x + dz
autoWalkPos.y = autoWalkPos.y + dz
autoWalkPos.z = localPlayerPos.z
end
local lookThing
local useThing
local creatureThing
@ -84,6 +76,18 @@ function UIGameMap:onMouseRelease(mousePosition, mouseButton)
lookThing = tile:getTopLookThing()
useThing = tile:getTopUseThing()
creatureThing = tile:getTopCreature()
if tile:isWalkable() then
local localPlayerPos = g_game.getLocalPlayer():getPosition()
if autoWalkPos.z ~= localPlayerPos.z then
local dz = autoWalkPos.z - localPlayerPos.z
autoWalkPos.x = autoWalkPos.x + dz
autoWalkPos.y = autoWalkPos.y + dz
autoWalkPos.z = localPlayerPos.z
end
else
autoWalkPos = nil
end
end
local ret = modules.game_interface.processMouseAction(mousePosition, mouseButton, autoWalkPos, lookThing, useThing, creatureThing)

@ -515,6 +515,7 @@ void Client::registerLuaFunctions()
g_lua.bindClassMemberFunction<Tile>("hasCreature", &Tile::hasCreature);
g_lua.bindClassMemberFunction<Tile>("isEmpty", &Tile::isEmpty);
g_lua.bindClassMemberFunction<Tile>("isClickable", &Tile::isClickable);
g_lua.bindClassMemberFunction<Tile>("isPathable", &Tile::isPathable);
g_lua.bindClassMemberFunction<Tile>("overwriteMinimapColor", &Tile::overwriteMinimapColor);
g_lua.registerClass<UIItem, UIWidget>();

Loading…
Cancel
Save