client: fix behavior of walking where there are no tiles

This only happens with a plugin force setting checkClick. This would
cause the client to possibly incorrectly send a walk packet next tick if
viewportWalking was set, since nothing ever clears it.
This commit is contained in:
Adam
2019-06-23 20:39:15 -04:00
parent 61ea6cf217
commit a3e9b790dd
6 changed files with 27 additions and 52 deletions

View File

@@ -290,14 +290,6 @@ public abstract class RSClientMixin implements RSClient
return AccountType.NORMAL;
}
@Inject
@Override
public void setMouseCanvasHoverPosition(final Point position)
{
setMouseCanvasHoverPositionX(position.getX());
setMouseCanvasHoverPositionY(position.getY());
}
@Inject
@Override
public Tile getSelectedSceneTile()

View File

@@ -84,6 +84,16 @@ public abstract class RSSceneMixin implements RSScene
}
final boolean isGpu = client.isGpu();
final boolean checkClick = client.isCheckClick();
if (!client.isMenuOpen())
{
// Force check click to update the selected tile
client.setCheckClick(true);
final int mouseX = client.getMouseX();
final int mouseY = client.getMouseY();
client.setMouseCanvasHoverPositionX(mouseX - client.getViewportXOffset());
client.setMouseCanvasHoverPositionY(mouseY - client.getViewportYOffset());
}
if (!isGpu)
{
@@ -292,6 +302,10 @@ public abstract class RSSceneMixin implements RSScene
client.setEntitiesAtMouseCount(0);
}
client.setCheckClick(false);
if (!checkClick)
{
client.setViewportWalking(false);
}
client.getCallbacks().drawScene();
return;
}
@@ -363,6 +377,10 @@ public abstract class RSSceneMixin implements RSScene
client.setEntitiesAtMouseCount(0);
}
client.setCheckClick(false);
if (!checkClick)
{
client.setViewportWalking(false);
}
client.getCallbacks().drawScene();
return;
}
@@ -376,6 +394,12 @@ public abstract class RSSceneMixin implements RSScene
client.setEntitiesAtMouseCount(0);
}
client.setCheckClick(false);
if (!checkClick)
{
// If checkClick was false, then the selected tile wouldn't have existed next tick,
// so clear viewport walking in order to prevent it triggering a walk
client.setViewportWalking(false);
}
client.getCallbacks().drawScene();
}