From 0b09ca081745a8d6dd07cb456d0e83cefc6f14bb Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 10 Feb 2018 15:14:41 -0500 Subject: [PATCH] Improved shuffle command for dedicated server --- core/assets/version.properties | 4 +- core/src/io/anuke/mindustry/io/Maps.java | 8 ++++ .../anuke/mindustry/server/ServerControl.java | 47 ++++++++----------- 3 files changed, 29 insertions(+), 30 deletions(-) diff --git a/core/assets/version.properties b/core/assets/version.properties index 1575a1b4b8..66c2fb978a 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Sat Feb 10 12:37:44 EST 2018 +#Sat Feb 10 12:55:55 EST 2018 version=beta -androidBuildCode=153 +androidBuildCode=155 name=Mindustry code=3.3 build=custom build diff --git a/core/src/io/anuke/mindustry/io/Maps.java b/core/src/io/anuke/mindustry/io/Maps.java index d4e80ec4b9..7d583a6174 100644 --- a/core/src/io/anuke/mindustry/io/Maps.java +++ b/core/src/io/anuke/mindustry/io/Maps.java @@ -38,6 +38,14 @@ public class Maps implements Disposable{ return defaultMaps; } + public Array getCustomMaps(){ + array.clear(); + for(Map map : list()){ + if(map.custom) array.add(map); + } + return array; + } + public Array getAllMaps(){ array.clear(); for(Map map : list()){ diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index cd7fa113a5..f5f8e74ffb 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -15,10 +15,7 @@ import io.anuke.mindustry.net.Packets.ChatPacket; import io.anuke.mindustry.net.Packets.KickReason; import io.anuke.mindustry.ui.fragments.DebugFragment; import io.anuke.mindustry.world.Map; -import io.anuke.ucore.core.Effects; -import io.anuke.ucore.core.Events; -import io.anuke.ucore.core.Sounds; -import io.anuke.ucore.core.Timers; +import io.anuke.ucore.core.*; import io.anuke.ucore.modules.Module; import io.anuke.ucore.util.CommandHandler; import io.anuke.ucore.util.CommandHandler.Command; @@ -37,10 +34,12 @@ import static io.anuke.ucore.util.Log.*; public class ServerControl extends Module { private final CommandHandler handler = new CommandHandler(""); - private boolean shuffle = true; - private boolean shuffleCustom = false; + private ShuffleMode mode = ShuffleMode.both; public ServerControl(){ + Settings.defaults("shufflemode", "normal"); + mode = ShuffleMode.valueOf(Settings.getString("shufflemode")); + Effects.setScreenShakeProvider((a, b) -> {}); Effects.setEffectProvider((a, b, c, d, e) -> {}); Sounds.setHeadless(true); @@ -72,8 +71,10 @@ public class ServerControl extends Module { state.set(State.menu); Net.closeServer(); - if(shuffle) { - Array maps = shuffleCustom ? world.maps().getAllMaps() : world.maps().getDefaultMaps(); + if(mode != ShuffleMode.off) { + Array maps = mode == ShuffleMode.both ? world.maps().getAllMaps() : + mode == ShuffleMode.normal ? world.maps().getDefaultMaps() : world.maps().getCustomMaps(); + Map previous = world.getMap(); Map map = previous; while(map == previous || !map.visible) map = maps.random(); @@ -213,27 +214,13 @@ public class ServerControl extends Module { } }); - handler.register("shuffle", " ", "Enable or disable automatic random map shuffling after gameovers.", arg -> { - String s = arg[0]; - String custom = arg[1]; - if(s.equalsIgnoreCase("on")){ - shuffle = true; - info("Map shuffling enabled."); - }else if(s.equalsIgnoreCase("off")){ - shuffle = false; - info("Map shuffling disabled."); - }else{ - err("Incorrect enable/disable usage."); - } + handler.register("shuffle", "", "Set map shuffling.", arg -> { - if(custom.equalsIgnoreCase("on")){ - shuffleCustom = true; - info("Custom map shuffling enabled."); - }else if(custom.equalsIgnoreCase("off")){ - shuffleCustom = false; - info("Custom map shuffling disabled."); - }else{ - err("Incorrect enable/disable custom map usage."); + try{ + mode = ShuffleMode.valueOf(arg[0]); + info("Shuffle mode set to '{0}'.", arg[0]); + }catch (Exception e){ + err("Unknown shuffle mode '{0}'.", arg[0]); } }); @@ -349,4 +336,8 @@ public class ServerControl extends Module { state.set(State.menu); } } + + enum ShuffleMode{ + normal, custom, both, off + } }