fishing plugin: add trawler timer

Co-authored-by: Adam <Adam@sigterm.info>
This commit is contained in:
Elliott
2019-04-23 17:38:13 -04:00
committed by Ganom
parent 48d428edf5
commit 62d99c1d3e
4 changed files with 87 additions and 1 deletions

View File

@@ -121,6 +121,7 @@ public class WidgetID
public static final int MINIGAME_TAB_ID = 76; public static final int MINIGAME_TAB_ID = 76;
public static final int SPELLBOOK_GROUP_ID = 218; public static final int SPELLBOOK_GROUP_ID = 218;
public static final int PVP_GROUP_ID = 90; public static final int PVP_GROUP_ID = 90;
public static final int FISHING_TRAWLER_GROUP_ID = 366;
public static final int ZEAH_MESS_HALL_GROUP_ID = 235; public static final int ZEAH_MESS_HALL_GROUP_ID = 235;
public static final int KOUREND_FAVOUR_GROUP_ID = 246; public static final int KOUREND_FAVOUR_GROUP_ID = 246;
public static final int LOOTING_BAG_GROUP_ID = 81; public static final int LOOTING_BAG_GROUP_ID = 81;

View File

@@ -420,6 +420,8 @@ public enum WidgetInfo
EXPERIENCE_TRACKER_WIDGET(WidgetID.EXPERIENCE_TRACKER_GROUP_ID, WidgetID.ExperienceTracker.WIDGET), EXPERIENCE_TRACKER_WIDGET(WidgetID.EXPERIENCE_TRACKER_GROUP_ID, WidgetID.ExperienceTracker.WIDGET),
EXPERIENCE_TRACKER_BOTTOM_BAR(WidgetID.EXPERIENCE_TRACKER_GROUP_ID, WidgetID.ExperienceTracker.BOTTOM_BAR), EXPERIENCE_TRACKER_BOTTOM_BAR(WidgetID.EXPERIENCE_TRACKER_GROUP_ID, WidgetID.ExperienceTracker.BOTTOM_BAR),
FISHING_TRAWLER_TIMER(WidgetID.FISHING_TRAWLER_GROUP_ID, 37),
TITHE_FARM(WidgetID.TITHE_FARM_GROUP_ID, 1), TITHE_FARM(WidgetID.TITHE_FARM_GROUP_ID, 1),
BARROWS_INFO(WidgetID.BARROWS_GROUP_ID, 0), BARROWS_INFO(WidgetID.BARROWS_GROUP_ID, 0),

View File

@@ -118,4 +118,15 @@ public interface FishingConfig extends Config
{ {
return true; return true;
} }
@ConfigItem(
position = 8,
keyName = "trawlerTimer",
name = "Trawler timer in MM:SS",
description = "Trawler Timer will display a more accurate timer in MM:SS format."
)
default boolean trawlerTimer()
{
return true;
}
} }

View File

@@ -57,6 +57,10 @@ import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.NpcSpawned;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
@@ -78,9 +82,11 @@ public class FishingPlugin extends Plugin
{ {
private static final int TRAWLER_SHIP_REGION_NORMAL = 7499; private static final int TRAWLER_SHIP_REGION_NORMAL = 7499;
private static final int TRAWLER_SHIP_REGION_SINKING = 8011; private static final int TRAWLER_SHIP_REGION_SINKING = 8011;
private static final int TRAWLER_TIME_LIMIT_IN_SECONDS = 614;
private static final int TRAWLER_ACTIVITY_THRESHOLD = Math.round(0.15f * 255); private static final int TRAWLER_ACTIVITY_THRESHOLD = Math.round(0.15f * 255);
private Instant trawlerStartTime;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final FishingSession session = new FishingSession(); private final FishingSession session = new FishingSession();
@@ -142,6 +148,7 @@ public class FishingPlugin extends Plugin
minnowSpots.clear(); minnowSpots.clear();
trawlerNotificationSent = false; trawlerNotificationSent = false;
currentSpot = null; currentSpot = null;
trawlerStartTime = null;
} }
@Subscribe @Subscribe
@@ -296,6 +303,11 @@ public class FishingPlugin extends Plugin
} }
} }
} }
if (config.trawlerTimer())
{
updateTrawlerTimer();
}
} }
@Subscribe @Subscribe
@@ -351,6 +363,66 @@ public class FishingPlugin extends Plugin
} }
} }
@Subscribe
public void onWidgetLoaded(WidgetLoaded event)
{
if (event.getGroupId() == WidgetID.FISHING_TRAWLER_GROUP_ID)
{
trawlerStartTime = Instant.now();
}
}
/**
* Changes the Fishing Trawler timer widget from minutes to minutes and seconds
*/
private void updateTrawlerTimer()
{
if (trawlerStartTime == null)
{
return;
}
int regionID = client.getLocalPlayer().getWorldLocation().getRegionID();
if (regionID != TRAWLER_SHIP_REGION_NORMAL && regionID != TRAWLER_SHIP_REGION_SINKING)
{
log.debug("Trawler session ended");
return;
}
Widget trawlerTimerWidget = client.getWidget(WidgetInfo.FISHING_TRAWLER_TIMER);
if (trawlerTimerWidget == null)
{
return;
}
long timeLeft = TRAWLER_TIME_LIMIT_IN_SECONDS - Duration.between(trawlerStartTime, Instant.now()).getSeconds();
int minutes = (int) timeLeft / 60;
int seconds = (int) timeLeft % 60;
final StringBuilder trawlerText = new StringBuilder();
trawlerText.append("Time Left: ");
if (minutes > 0)
{
trawlerText.append(minutes);
}
else
{
trawlerText.append("00");
}
trawlerText.append(':');
if (seconds < 10)
{
trawlerText.append("0");
}
trawlerText.append(seconds);
trawlerTimerWidget.setText(trawlerText.toString());
}
private void inverseSortSpotDistanceFromPlayer() private void inverseSortSpotDistanceFromPlayer()
{ {
final LocalPoint cameraPoint = new LocalPoint(client.getCameraX(), client.getCameraY()); final LocalPoint cameraPoint = new LocalPoint(client.getCameraX(), client.getCameraY());