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 javax.inject.Inject;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
import net.runelite.api.Client;
|
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.Varbits;
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.api.events.ItemContainerChanged;
|
|
||||||
import net.runelite.api.events.VarbitChanged;
|
import net.runelite.api.events.VarbitChanged;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
@@ -115,13 +110,38 @@ public class BarbarianAssaultPlugin extends Plugin
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onWidgetLoaded(WidgetLoaded event)
|
public void onWidgetLoaded(WidgetLoaded event)
|
||||||
{
|
{
|
||||||
if (event.getGroupId() == WidgetID.BA_REWARD_GROUP_ID)
|
switch (event.getGroupId())
|
||||||
{
|
{
|
||||||
Widget rewardWidget = client.getWidget(WidgetInfo.BA_REWARD_TEXT);
|
case WidgetID.BA_REWARD_GROUP_ID:
|
||||||
|
|
||||||
if (config.waveTimes() && rewardWidget != null && rewardWidget.getText().contains(ENDGAME_REWARD_NEEDLE_TEXT) && gameTime != null)
|
|
||||||
{
|
{
|
||||||
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
|
@Subscribe
|
||||||
public void onVarbitChanged(VarbitChanged event)
|
public void onVarbitChanged(VarbitChanged event)
|
||||||
{
|
{
|
||||||
@@ -205,6 +187,19 @@ public class BarbarianAssaultPlugin extends Plugin
|
|||||||
inGameBit = inGame;
|
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)
|
private void announceTime(String preText, String time)
|
||||||
{
|
{
|
||||||
final String chatMessage = new ChatMessageBuilder()
|
final String chatMessage = new ChatMessageBuilder()
|
||||||
|
|||||||
Reference in New Issue
Block a user