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:
Adam
2019-06-01 19:28:54 -04:00
committed by Adam
parent 82711a6d35
commit 35625f4bba

View File

@@ -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()