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 Adam
parent 02fa354b92
commit 50518ebe72
4 changed files with 87 additions and 1 deletions

View File

@@ -119,6 +119,7 @@ public class WidgetID
public static final int MINIGAME_TAB_ID = 76;
public static final int SPELLBOOK_GROUP_ID = 218;
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 KOUREND_FAVOUR_GROUP_ID = 246;
public static final int LOOTING_BAG_GROUP_ID = 81;

View File

@@ -404,6 +404,8 @@ public enum WidgetInfo
EXPERIENCE_TRACKER_WIDGET(WidgetID.EXPERIENCE_TRACKER_GROUP_ID, WidgetID.ExperienceTracker.WIDGET),
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),
BARROWS_INFO(WidgetID.BARROWS_GROUP_ID, 0),

View File

@@ -118,4 +118,15 @@ public interface FishingConfig extends Config
{
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.NpcSpawned;
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.config.ConfigManager;
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_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 Instant trawlerStartTime;
@Getter(AccessLevel.PACKAGE)
private final FishingSession session = new FishingSession();
@@ -142,6 +148,7 @@ public class FishingPlugin extends Plugin
minnowSpots.clear();
trawlerNotificationSent = false;
currentSpot = null;
trawlerStartTime = null;
}
@Subscribe
@@ -296,6 +303,11 @@ public class FishingPlugin extends Plugin
}
}
}
if (config.trawlerTimer())
{
updateTrawlerTimer();
}
}
@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()
{
final LocalPoint cameraPoint = new LocalPoint(client.getCameraX(), client.getCameraY());