worldhopper: allow selecting multiple region filters
This commit is contained in:
@@ -24,16 +24,13 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.worldhopper;
|
package net.runelite.client.plugins.worldhopper;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import net.runelite.http.api.worlds.WorldRegion;
|
import net.runelite.http.api.worlds.WorldRegion;
|
||||||
|
|
||||||
@NoArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@AllArgsConstructor
|
enum RegionFilterMode
|
||||||
public enum RegionFilterMode
|
|
||||||
{
|
{
|
||||||
NONE,
|
|
||||||
AUSTRALIA(WorldRegion.AUSTRALIA),
|
AUSTRALIA(WorldRegion.AUSTRALIA),
|
||||||
GERMANY(WorldRegion.GERMANY),
|
GERMANY(WorldRegion.GERMANY),
|
||||||
UNITED_KINGDOM(WorldRegion.UNITED_KINGDOM)
|
UNITED_KINGDOM(WorldRegion.UNITED_KINGDOM)
|
||||||
@@ -54,5 +51,22 @@ public enum RegionFilterMode
|
|||||||
};
|
};
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private WorldRegion region;
|
private final WorldRegion region;
|
||||||
|
|
||||||
|
static RegionFilterMode of(WorldRegion region)
|
||||||
|
{
|
||||||
|
switch (region)
|
||||||
|
{
|
||||||
|
case UNITED_STATES_OF_AMERICA:
|
||||||
|
return UNITED_STATES;
|
||||||
|
case UNITED_KINGDOM:
|
||||||
|
return UNITED_KINGDOM;
|
||||||
|
case AUSTRALIA:
|
||||||
|
return AUSTRALIA;
|
||||||
|
case GERMANY:
|
||||||
|
return GERMANY;
|
||||||
|
default:
|
||||||
|
throw new IllegalStateException();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ package net.runelite.client.plugins.worldhopper;
|
|||||||
|
|
||||||
import java.awt.event.InputEvent;
|
import java.awt.event.InputEvent;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Set;
|
||||||
import net.runelite.client.config.Config;
|
import net.runelite.client.config.Config;
|
||||||
import net.runelite.client.config.ConfigGroup;
|
import net.runelite.client.config.ConfigGroup;
|
||||||
import net.runelite.client.config.ConfigItem;
|
import net.runelite.client.config.ConfigItem;
|
||||||
@@ -76,9 +78,9 @@ public interface WorldHopperConfig extends Config
|
|||||||
description = "Limit quick-hopping to worlds of a specific region",
|
description = "Limit quick-hopping to worlds of a specific region",
|
||||||
position = 3
|
position = 3
|
||||||
)
|
)
|
||||||
default RegionFilterMode quickHopRegionFilter()
|
default Set<RegionFilterMode> quickHopRegionFilter()
|
||||||
{
|
{
|
||||||
return RegionFilterMode.NONE;
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
@@ -142,9 +144,9 @@ public interface WorldHopperConfig extends Config
|
|||||||
description = "Restrict sidebar worlds to one region",
|
description = "Restrict sidebar worlds to one region",
|
||||||
position = 8
|
position = 8
|
||||||
)
|
)
|
||||||
default RegionFilterMode regionFilter()
|
default Set<RegionFilterMode> regionFilter()
|
||||||
{
|
{
|
||||||
return RegionFilterMode.NONE;
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import java.util.EnumSet;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
@@ -355,7 +356,7 @@ public class WorldHopperPlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int componentId = event.getParam1();
|
final int componentId = event.getActionParam1();
|
||||||
int groupId = WidgetInfo.TO_GROUP(componentId);
|
int groupId = WidgetInfo.TO_GROUP(componentId);
|
||||||
String option = event.getOption();
|
String option = event.getOption();
|
||||||
|
|
||||||
@@ -401,7 +402,7 @@ public class WorldHopperPlugin extends Plugin
|
|||||||
hopTo.setTarget(event.getTarget());
|
hopTo.setTarget(event.getTarget());
|
||||||
hopTo.setType(MenuAction.RUNELITE.getId());
|
hopTo.setType(MenuAction.RUNELITE.getId());
|
||||||
hopTo.setParam0(event.getActionParam0());
|
hopTo.setParam0(event.getActionParam0());
|
||||||
hopTo.setParam1(event.getParam1());
|
hopTo.setParam1(event.getActionParam1());
|
||||||
|
|
||||||
insertMenuEntry(hopTo, client.getMenuEntries(), after);
|
insertMenuEntry(hopTo, client.getMenuEntries(), after);
|
||||||
}
|
}
|
||||||
@@ -533,6 +534,8 @@ public class WorldHopperPlugin extends Plugin
|
|||||||
int worldIdx = worlds.indexOf(currentWorld);
|
int worldIdx = worlds.indexOf(currentWorld);
|
||||||
int totalLevel = client.getTotalLevel();
|
int totalLevel = client.getTotalLevel();
|
||||||
|
|
||||||
|
final Set<RegionFilterMode> regionFilter = config.quickHopRegionFilter();
|
||||||
|
|
||||||
World world;
|
World world;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@@ -564,7 +567,7 @@ public class WorldHopperPlugin extends Plugin
|
|||||||
world = worlds.get(worldIdx);
|
world = worlds.get(worldIdx);
|
||||||
|
|
||||||
// Check world region if filter is enabled
|
// Check world region if filter is enabled
|
||||||
if (config.quickHopRegionFilter() != RegionFilterMode.NONE && world.getRegion() != config.quickHopRegionFilter().getRegion())
|
if (!regionFilter.isEmpty() && !regionFilter.contains(RegionFilterMode.of(world.getRegion())))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import java.awt.event.MouseEvent;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
@@ -68,7 +69,7 @@ class WorldSwitcherPanel extends PluginPanel
|
|||||||
@Setter(AccessLevel.PACKAGE)
|
@Setter(AccessLevel.PACKAGE)
|
||||||
private SubscriptionFilterMode subscriptionFilterMode;
|
private SubscriptionFilterMode subscriptionFilterMode;
|
||||||
@Setter(AccessLevel.PACKAGE)
|
@Setter(AccessLevel.PACKAGE)
|
||||||
private RegionFilterMode regionFilterMode;
|
private Set<RegionFilterMode> regionFilterMode;
|
||||||
|
|
||||||
WorldSwitcherPanel(WorldHopperPlugin plugin)
|
WorldSwitcherPanel(WorldHopperPlugin plugin)
|
||||||
{
|
{
|
||||||
@@ -249,7 +250,7 @@ class WorldSwitcherPanel extends PluginPanel
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (regionFilterMode.getRegion() != null && !regionFilterMode.getRegion().equals(world.getRegion()))
|
if (!regionFilterMode.isEmpty() && !regionFilterMode.contains(RegionFilterMode.of(world.getRegion())))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user