quest list plugin: use progress script to trigger hiding quests

This commit is contained in:
trimbe
2019-04-20 22:49:46 -04:00
parent 529fe18123
commit caa4569d45
2 changed files with 49 additions and 44 deletions

View File

@@ -36,12 +36,11 @@ import net.runelite.api.SpriteID;
import net.runelite.api.VarClientInt;
import net.runelite.api.Varbits;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.VarClientIntChanged;
import net.runelite.api.events.VarbitChanged;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetPositionMode;
import net.runelite.api.widgets.WidgetType;
@@ -104,10 +103,13 @@ public class QuestListPlugin extends Plugin
}
@Subscribe
public void onWidgetLoaded(WidgetLoaded widgetLoaded)
public void onScriptCallbackEvent(ScriptCallbackEvent event)
{
if (widgetLoaded.getGroupId() == WidgetID.QUESTLIST_GROUP_ID)
if (!event.getEventName().equals("questProgressUpdated"))
{
return;
}
Widget header = client.getWidget(WidgetInfo.QUESTLIST_BOX);
if (header != null)
{
@@ -139,13 +141,9 @@ public class QuestListPlugin extends Plugin
questSet = new EnumMap<>(QuestContainer.class);
if (!header.isHidden())
{
updateFilter();
}
}
}
}
@Subscribe
public void onVarbitChanged(VarbitChanged varbitChanged)
@@ -259,21 +257,26 @@ public class QuestListPlugin extends Plugin
int y = miniList.getRelativeY() + miniList.getHeight() + 10;
int newHeight = 0;
int newHeight;
if (container.getScrollHeight() > 0)
{
newHeight = (container.getScrollY() * y) / container.getScrollHeight();
}
else
{
newHeight = 0;
}
container.setScrollHeight(y);
container.revalidateScroll();
clientThread.invokeLater(() ->
client.runScript(
ScriptID.UPDATE_SCROLLBAR,
WidgetInfo.QUESTLIST_SCROLLBAR.getId(),
WidgetInfo.QUESTLIST_CONTAINER.getId(),
newHeight
);
));
}
private void updateList(QuestContainer questContainer, String filter)
@@ -309,7 +312,7 @@ public class QuestListPlugin extends Plugin
// Find all of the widgets that we care about, sorting by their Y value
quests = Arrays.stream(list.getDynamicChildren())
.sorted(Comparator.comparing(Widget::getRelativeY))
.filter(w -> !w.isSelfHidden() && !QUEST_HEADERS.contains(w.getText()))
.filter(w -> !QUEST_HEADERS.contains(w.getText()))
.map(w -> new QuestWidget(w, Text.removeTags(w.getText()).toLowerCase()))
.collect(Collectors.toList());
questSet.put(questContainer, quests);

View File

@@ -193,4 +193,6 @@ LABEL155:
istore 5
jump LABEL112
LABEL160:
sconst "questProgressUpdated"
runelite_callback
return