ba: update to no longer use icons to determine role
The recent game update removed icons. Instead use the interface to determine the player's role. Co-authored-by: jacoblairm <jacoblairm@gmail.com>
This commit is contained in:
@@ -31,13 +31,8 @@ import java.awt.Image;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.EquipmentInventorySlot;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemID;
|
||||
import net.runelite.api.Varbits;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.ItemContainerChanged;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.api.events.WidgetLoaded;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
@@ -115,13 +110,38 @@ public class BarbarianAssaultPlugin extends Plugin
|
||||
@Subscribe
|
||||
public void onWidgetLoaded(WidgetLoaded event)
|
||||
{
|
||||
if (event.getGroupId() == WidgetID.BA_REWARD_GROUP_ID)
|
||||
switch (event.getGroupId())
|
||||
{
|
||||
Widget rewardWidget = client.getWidget(WidgetInfo.BA_REWARD_TEXT);
|
||||
|
||||
if (config.waveTimes() && rewardWidget != null && rewardWidget.getText().contains(ENDGAME_REWARD_NEEDLE_TEXT) && gameTime != null)
|
||||
case WidgetID.BA_REWARD_GROUP_ID:
|
||||
{
|
||||
announceTime("Game finished, duration: ", gameTime.getTime(false));
|
||||
Widget rewardWidget = client.getWidget(WidgetInfo.BA_REWARD_TEXT);
|
||||
|
||||
if (config.waveTimes() && rewardWidget != null && rewardWidget.getText().contains(ENDGAME_REWARD_NEEDLE_TEXT) && gameTime != null)
|
||||
{
|
||||
announceTime("Game finished, duration: ", gameTime.getTime(false));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case WidgetID.BA_ATTACKER_GROUP_ID:
|
||||
{
|
||||
setOverlayRound(Role.ATTACKER);
|
||||
break;
|
||||
}
|
||||
case WidgetID.BA_DEFENDER_GROUP_ID:
|
||||
{
|
||||
setOverlayRound(Role.DEFENDER);
|
||||
break;
|
||||
}
|
||||
case WidgetID.BA_HEALER_GROUP_ID:
|
||||
{
|
||||
setOverlayRound(Role.HEALER);
|
||||
break;
|
||||
}
|
||||
case WidgetID.BA_COLLECTOR_GROUP_ID:
|
||||
{
|
||||
setOverlayRound(Role.COLLECTOR);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,44 +166,6 @@ public class BarbarianAssaultPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onItemContainerChanged(final ItemContainerChanged event)
|
||||
{
|
||||
if (event.getItemContainer() != client.getItemContainer(InventoryID.EQUIPMENT))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (overlay.getCurrentRound() != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final Item[] items = event.getItemContainer().getItems();
|
||||
|
||||
// Check that the local player is wearing enough items to be wearing a cape.
|
||||
if (items == null || items.length <= EquipmentInventorySlot.CAPE.getSlotIdx())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (items[EquipmentInventorySlot.CAPE.getSlotIdx()].getId())
|
||||
{
|
||||
case ItemID.ATTACKER_ICON:
|
||||
overlay.setCurrentRound(new Round(Role.ATTACKER));
|
||||
break;
|
||||
case ItemID.COLLECTOR_ICON:
|
||||
overlay.setCurrentRound(new Round(Role.COLLECTOR));
|
||||
break;
|
||||
case ItemID.DEFENDER_ICON:
|
||||
overlay.setCurrentRound(new Round(Role.DEFENDER));
|
||||
break;
|
||||
case ItemID.HEALER_ICON:
|
||||
overlay.setCurrentRound(new Round(Role.HEALER));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onVarbitChanged(VarbitChanged event)
|
||||
{
|
||||
@@ -205,6 +187,19 @@ public class BarbarianAssaultPlugin extends Plugin
|
||||
inGameBit = inGame;
|
||||
}
|
||||
|
||||
private void setOverlayRound(Role role)
|
||||
{
|
||||
// Prevent changing roles when a role is already set, as widgets can be
|
||||
// loaded multiple times in game from eg. opening and closing the horn
|
||||
// of glory.
|
||||
if (overlay.getCurrentRound() != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
overlay.setCurrentRound(new Round(role));
|
||||
}
|
||||
|
||||
private void announceTime(String preText, String time)
|
||||
{
|
||||
final String chatMessage = new ChatMessageBuilder()
|
||||
|
||||
Reference in New Issue
Block a user