world hopper: allow selecting multiple region filters
This commit is contained in:
@@ -24,16 +24,13 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.worldhopper;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.runelite.http.api.worlds.WorldRegion;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public enum RegionFilterMode
|
||||
@RequiredArgsConstructor
|
||||
enum RegionFilterMode
|
||||
{
|
||||
NONE,
|
||||
AUSTRALIA(WorldRegion.AUSTRALIA),
|
||||
GERMANY(WorldRegion.GERMANY),
|
||||
UNITED_KINGDOM(WorldRegion.UNITED_KINGDOM)
|
||||
@@ -54,5 +51,22 @@ public enum RegionFilterMode
|
||||
};
|
||||
|
||||
@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.KeyEvent;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
import net.runelite.client.config.Config;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
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",
|
||||
position = 3
|
||||
)
|
||||
default RegionFilterMode quickHopRegionFilter()
|
||||
default Set<RegionFilterMode> quickHopRegionFilter()
|
||||
{
|
||||
return RegionFilterMode.NONE;
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
@@ -142,9 +144,9 @@ public interface WorldHopperConfig extends Config
|
||||
description = "Restrict sidebar worlds to one region",
|
||||
position = 8
|
||||
)
|
||||
default RegionFilterMode regionFilter()
|
||||
default Set<RegionFilterMode> regionFilter()
|
||||
{
|
||||
return RegionFilterMode.NONE;
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
|
||||
@@ -36,6 +36,7 @@ import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
@@ -533,6 +534,8 @@ public class WorldHopperPlugin extends Plugin
|
||||
int worldIdx = worlds.indexOf(currentWorld);
|
||||
int totalLevel = client.getTotalLevel();
|
||||
|
||||
final Set<RegionFilterMode> regionFilter = config.quickHopRegionFilter();
|
||||
|
||||
World world;
|
||||
do
|
||||
{
|
||||
@@ -564,7 +567,7 @@ public class WorldHopperPlugin extends Plugin
|
||||
world = worlds.get(worldIdx);
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.SwingUtilities;
|
||||
@@ -68,7 +69,7 @@ class WorldSwitcherPanel extends PluginPanel
|
||||
@Setter(AccessLevel.PACKAGE)
|
||||
private SubscriptionFilterMode subscriptionFilterMode;
|
||||
@Setter(AccessLevel.PACKAGE)
|
||||
private RegionFilterMode regionFilterMode;
|
||||
private Set<RegionFilterMode> regionFilterMode;
|
||||
|
||||
WorldSwitcherPanel(WorldHopperPlugin plugin)
|
||||
{
|
||||
@@ -249,7 +250,7 @@ class WorldSwitcherPanel extends PluginPanel
|
||||
break;
|
||||
}
|
||||
|
||||
if (regionFilterMode.getRegion() != null && !regionFilterMode.getRegion().equals(world.getRegion()))
|
||||
if (!regionFilterMode.isEmpty() && !regionFilterMode.contains(RegionFilterMode.of(world.getRegion())))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user