examine: fix examining ground items
Remove support for examining npcs/objects which has been unused for a long time. All examines I see go through this examine_item script, so we can assume the ITEM_EXAMINE chat message type is used for all examines.
This commit is contained in:
@@ -1,71 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.plugins.examine;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
class CacheKey
|
||||
{
|
||||
private final ExamineType type;
|
||||
private final int id;
|
||||
|
||||
public CacheKey(ExamineType type, int id)
|
||||
{
|
||||
this.type = type;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 3;
|
||||
hash = 23 * hash + Objects.hashCode(this.type);
|
||||
hash = 23 * hash + this.id;
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (this == obj)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
final CacheKey other = (CacheKey) obj;
|
||||
if (this.id != other.id)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return this.type == other.type;
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,6 @@
|
||||
package net.runelite.client.plugins.examine;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Deque;
|
||||
import javax.inject.Inject;
|
||||
@@ -52,7 +51,6 @@ import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.util.QuantityFormatter;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Examine",
|
||||
@@ -82,18 +80,18 @@ public class ExaminePlugin extends Plugin
|
||||
@Subscribe
|
||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||
{
|
||||
if (!Text.removeTags(event.getMenuOption()).equals("Examine"))
|
||||
if (!event.getMenuOption().equals("Examine"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ExamineType type;
|
||||
final ChatMessageType type;
|
||||
int id, quantity = -1;
|
||||
switch (event.getMenuAction())
|
||||
{
|
||||
case EXAMINE_ITEM:
|
||||
{
|
||||
type = ExamineType.ITEM;
|
||||
type = ChatMessageType.ITEM_EXAMINE;
|
||||
id = event.getId();
|
||||
|
||||
int widgetId = event.getParam1();
|
||||
@@ -120,12 +118,12 @@ public class ExaminePlugin extends Plugin
|
||||
break;
|
||||
}
|
||||
case EXAMINE_ITEM_GROUND:
|
||||
type = ExamineType.ITEM;
|
||||
type = ChatMessageType.ITEM_EXAMINE;
|
||||
id = event.getId();
|
||||
break;
|
||||
case CC_OP_LOW_PRIORITY:
|
||||
{
|
||||
type = ExamineType.IF3_ITEM;
|
||||
type = ChatMessageType.ITEM_EXAMINE; // these are spoofed by us from a [proc,examine_item] script edit
|
||||
int[] qi = findItemFromWidget(event.getParam1(), event.getParam0());
|
||||
if (qi == null)
|
||||
{
|
||||
@@ -136,66 +134,35 @@ public class ExaminePlugin extends Plugin
|
||||
id = qi[1];
|
||||
break;
|
||||
}
|
||||
case EXAMINE_OBJECT:
|
||||
type = ExamineType.OBJECT;
|
||||
id = event.getId();
|
||||
break;
|
||||
case EXAMINE_NPC:
|
||||
type = ExamineType.NPC;
|
||||
id = event.getId();
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
PendingExamine pendingExamine = new PendingExamine();
|
||||
pendingExamine.setType(type);
|
||||
pendingExamine.setResponseType(type);
|
||||
pendingExamine.setId(id);
|
||||
pendingExamine.setQuantity(quantity);
|
||||
pendingExamine.setCreated(Instant.now());
|
||||
pending.push(pendingExamine);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage event)
|
||||
{
|
||||
ExamineType type;
|
||||
switch (event.getType())
|
||||
{
|
||||
case OBJECT_EXAMINE:
|
||||
type = ExamineType.OBJECT;
|
||||
break;
|
||||
case NPC_EXAMINE:
|
||||
type = ExamineType.NPC;
|
||||
break;
|
||||
case GAMEMESSAGE:
|
||||
case ITEM_EXAMINE: // these are spoofed by us from a [proc,examine_item] script edit
|
||||
type = ExamineType.IF3_ITEM;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (pending.isEmpty())
|
||||
{
|
||||
log.debug("Got examine without a pending examine?");
|
||||
return;
|
||||
}
|
||||
|
||||
PendingExamine pendingExamine = pending.pop();
|
||||
|
||||
if (pendingExamine.getType() != type)
|
||||
PendingExamine pendingExamine = pending.poll();
|
||||
if (pendingExamine.getResponseType() != event.getType())
|
||||
{
|
||||
log.debug("Type mismatch for pending examine: {} != {}", pendingExamine.getType(), type);
|
||||
log.debug("Type mismatch for pending examine: {} != {}", pendingExamine.getResponseType(), event.getType());
|
||||
pending.clear(); // eh
|
||||
return;
|
||||
}
|
||||
|
||||
log.debug("Got examine for {} {}: {}", pendingExamine.getType(), pendingExamine.getId(), event.getMessage());
|
||||
log.debug("Got examine type {} {}: {}", pendingExamine.getResponseType(), pendingExamine.getId(), event.getMessage());
|
||||
|
||||
// If it is an item, show the price of it
|
||||
if (pendingExamine.getType() == ExamineType.ITEM || pendingExamine.getType() == ExamineType.IF3_ITEM)
|
||||
{
|
||||
final int itemId = pendingExamine.getId();
|
||||
final int itemQuantity = pendingExamine.getQuantity();
|
||||
|
||||
@@ -207,7 +174,6 @@ public class ExaminePlugin extends Plugin
|
||||
final ItemComposition itemComposition = itemManager.getItemComposition(itemId);
|
||||
getItemPrice(itemComposition.getId(), itemComposition, itemQuantity);
|
||||
}
|
||||
}
|
||||
|
||||
private int[] findItemFromWidget(int widgetId, int childIdx)
|
||||
{
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.plugins.examine;
|
||||
|
||||
enum ExamineType
|
||||
{
|
||||
ITEM,
|
||||
IF3_ITEM,
|
||||
NPC,
|
||||
OBJECT;
|
||||
}
|
||||
@@ -26,12 +26,12 @@ package net.runelite.client.plugins.examine;
|
||||
|
||||
import java.time.Instant;
|
||||
import lombok.Data;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
|
||||
@Data
|
||||
class PendingExamine
|
||||
{
|
||||
private ExamineType type;
|
||||
private ChatMessageType responseType;
|
||||
private int id;
|
||||
private int quantity;
|
||||
private Instant created;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user