client: make appearance comparison opt in.

This commit is contained in:
Ganom
2020-10-25 17:54:40 -04:00
parent 2d251666a4
commit b7b6fa190a
3 changed files with 41 additions and 2 deletions

View File

@@ -36,6 +36,7 @@ import javax.annotation.Nullable;
import net.runelite.api.annotations.VisibleForExternalPlugins; import net.runelite.api.annotations.VisibleForExternalPlugins;
import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.PlayerAppearanceChanged;
import net.runelite.api.hooks.Callbacks; import net.runelite.api.hooks.Callbacks;
import net.runelite.api.hooks.DrawCallbacks; import net.runelite.api.hooks.DrawCallbacks;
import net.runelite.api.vars.AccountType; import net.runelite.api.vars.AccountType;
@@ -2070,6 +2071,20 @@ public interface Client extends GameShell
*/ */
void setMirrored(boolean isMirrored); void setMirrored(boolean isMirrored);
/**
* True if the client is comparing player appearance hashes.
*/
boolean isComparingAppearance();
/**
* Setting this to true will allow the client to compare
* player appearance hashes and dispatch when one changes
* via the {@link PlayerAppearanceChanged} event.
* <p>
* WARNING - THIS METHOD IS CPU-INTENSE.
*/
void setComparingAppearance(boolean comparingAppearance);
/** /**
* Sets the image to be used for the login screen, provided as SpritePixels * Sets the image to be used for the login screen, provided as SpritePixels
* If the image is larger than half the width of fixed mode, * If the image is larger than half the width of fixed mode,

View File

@@ -54,7 +54,14 @@ import net.runelite.api.InventoryID;
import net.runelite.api.ItemDefinition; import net.runelite.api.ItemDefinition;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
import net.runelite.api.MenuOpcode; import net.runelite.api.MenuOpcode;
import static net.runelite.api.MenuOpcode.*; import static net.runelite.api.MenuOpcode.PLAYER_EIGTH_OPTION;
import static net.runelite.api.MenuOpcode.PLAYER_FIFTH_OPTION;
import static net.runelite.api.MenuOpcode.PLAYER_FIRST_OPTION;
import static net.runelite.api.MenuOpcode.PLAYER_FOURTH_OPTION;
import static net.runelite.api.MenuOpcode.PLAYER_SECOND_OPTION;
import static net.runelite.api.MenuOpcode.PLAYER_SEVENTH_OPTION;
import static net.runelite.api.MenuOpcode.PLAYER_SIXTH_OPTION;
import static net.runelite.api.MenuOpcode.PLAYER_THIRD_OPTION;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.NPCDefinition; import net.runelite.api.NPCDefinition;
@@ -230,6 +237,9 @@ public abstract class RSClientMixin implements RSClient
@Inject @Inject
private boolean isMirrored = false; private boolean isMirrored = false;
@Inject
private boolean comparingAppearance = false;
@Inject @Inject
@Override @Override
public void setPrintMenuActions(boolean yes) public void setPrintMenuActions(boolean yes)
@@ -1912,6 +1922,20 @@ public abstract class RSClientMixin implements RSClient
this.isMirrored = isMirrored; this.isMirrored = isMirrored;
} }
@Inject
@Override
public boolean isComparingAppearance()
{
return comparingAppearance;
}
@Inject
@Override
public void setComparingAppearance(boolean comparingAppearance)
{
this.comparingAppearance = comparingAppearance;
}
@Inject @Inject
@Override @Override
public ObjectDefinition getObjectDefinition(int objectId) public ObjectDefinition getObjectDefinition(int objectId)

View File

@@ -297,7 +297,7 @@ public abstract class RSPlayerMixin implements RSPlayer
this.copy$read(buffer); this.copy$read(buffer);
if (getPlayerAppearance().getHash() != appearanceHash) if (client.isComparingAppearance() && getPlayerAppearance().getHash() != appearanceHash)
{ {
client.getCallbacks().post(PlayerAppearanceChanged.class, new PlayerAppearanceChanged(this)); client.getCallbacks().post(PlayerAppearanceChanged.class, new PlayerAppearanceChanged(this));
} }