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

View File

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