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,46 +103,45 @@ 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"))
{ {
Widget header = client.getWidget(WidgetInfo.QUESTLIST_BOX); return;
if (header != null) }
{
questSearchButton = header.createChild(-1, WidgetType.GRAPHIC);
questSearchButton.setSpriteId(SpriteID.GE_SEARCH);
questSearchButton.setOriginalWidth(18);
questSearchButton.setOriginalHeight(17);
questSearchButton.setXPositionMode(WidgetPositionMode.ABSOLUTE_RIGHT);
questSearchButton.setOriginalX(5);
questSearchButton.setOriginalY(0);
questSearchButton.setHasListener(true);
questSearchButton.setAction(1, MENU_OPEN);
questSearchButton.setOnOpListener((JavaScriptCallback) e -> openSearch());
questSearchButton.setName(MENU_SEARCH);
questSearchButton.revalidate();
questHideButton = header.createChild(-1, WidgetType.GRAPHIC); Widget header = client.getWidget(WidgetInfo.QUESTLIST_BOX);
redrawHideButton(); if (header != null)
{
questSearchButton = header.createChild(-1, WidgetType.GRAPHIC);
questSearchButton.setSpriteId(SpriteID.GE_SEARCH);
questSearchButton.setOriginalWidth(18);
questSearchButton.setOriginalHeight(17);
questSearchButton.setXPositionMode(WidgetPositionMode.ABSOLUTE_RIGHT);
questSearchButton.setOriginalX(5);
questSearchButton.setOriginalY(0);
questSearchButton.setHasListener(true);
questSearchButton.setAction(1, MENU_OPEN);
questSearchButton.setOnOpListener((JavaScriptCallback) e -> openSearch());
questSearchButton.setName(MENU_SEARCH);
questSearchButton.revalidate();
questHideButton.setOriginalWidth(13); questHideButton = header.createChild(-1, WidgetType.GRAPHIC);
questHideButton.setOriginalHeight(13); redrawHideButton();
questHideButton.setXPositionMode(WidgetPositionMode.ABSOLUTE_RIGHT);
questHideButton.setOriginalX(24);
questHideButton.setOriginalY(2);
questHideButton.setHasListener(true);
questHideButton.setOnOpListener((JavaScriptCallback) e -> toggleHidden());
questHideButton.setAction(1, MENU_TOGGLE);
questHideButton.revalidate();
questSet = new EnumMap<>(QuestContainer.class); questHideButton.setOriginalWidth(13);
questHideButton.setOriginalHeight(13);
questHideButton.setXPositionMode(WidgetPositionMode.ABSOLUTE_RIGHT);
questHideButton.setOriginalX(24);
questHideButton.setOriginalY(2);
questHideButton.setHasListener(true);
questHideButton.setOnOpListener((JavaScriptCallback) e -> toggleHidden());
questHideButton.setAction(1, MENU_TOGGLE);
questHideButton.revalidate();
if (!header.isHidden()) questSet = new EnumMap<>(QuestContainer.class);
{
updateFilter(); updateFilter();
}
}
} }
} }
@@ -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();
client.runScript( clientThread.invokeLater(() ->
ScriptID.UPDATE_SCROLLBAR, client.runScript(
WidgetInfo.QUESTLIST_SCROLLBAR.getId(), ScriptID.UPDATE_SCROLLBAR,
WidgetInfo.QUESTLIST_CONTAINER.getId(), WidgetInfo.QUESTLIST_SCROLLBAR.getId(),
newHeight WidgetInfo.QUESTLIST_CONTAINER.getId(),
); 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