From 0540b25c429e20b46389c63a6f82172304294bd6 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Mon, 9 Mar 2020 14:33:50 +1100 Subject: [PATCH] Add an overload to LevelInfo.Check that outputs LevelConfig instance This avoids having to pointlessly call GetConfig a second time, which potentially be quite slow --- MCGalaxy/Commands/World/CmdCopyLVL.cs | 13 ++++++------- MCGalaxy/Commands/World/CmdDeleteLvl.cs | 9 ++++----- MCGalaxy/Commands/World/CmdRenameLvl.cs | 9 ++++----- MCGalaxy/Levels/LevelInfo.cs | 9 +++++++-- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/MCGalaxy/Commands/World/CmdCopyLVL.cs b/MCGalaxy/Commands/World/CmdCopyLVL.cs index 08085c464..473b31e84 100644 --- a/MCGalaxy/Commands/World/CmdCopyLVL.cs +++ b/MCGalaxy/Commands/World/CmdCopyLVL.cs @@ -36,24 +36,23 @@ namespace MCGalaxy.Commands.World { if (args.Length < 2) { p.Message("You did not specify the destination level name."); return; } + LevelConfig cfg; string src = Matcher.FindMaps(p, args[0]); if (src == null) return; - if (!LevelInfo.Check(p, data.Rank, src, "copy this map")) return; + if (!LevelInfo.Check(p, data.Rank, src, "copy this map", out cfg)) return; string dst = args[1]; if (!Formatter.ValidMapName(p, dst)) return; - if (!LevelActions.Copy(p, src, dst)) return; - Level ignored; - LevelConfig cfg = LevelInfo.GetConfig(src, out ignored); + if (!LevelActions.Copy(p, src, dst)) return; Chat.MessageGlobal("Map {0} %Swas copied to {1}", cfg.Color + src, cfg.Color + dst); } public override void Help(Player p) { - p.Message("%T/CopyLvl [level] [copied level]"); - p.Message("%HMakes a copy of [level] called [copied Level]."); - p.Message("%HNote: The level's BlockDB is not copied."); + p.Message("%T/CopyLvl [map] [copied map]"); + p.Message("%HMakes a copy of [map] called [copied map]."); + p.Message("%HNote: The map's BlockDB is not copied."); } } } diff --git a/MCGalaxy/Commands/World/CmdDeleteLvl.cs b/MCGalaxy/Commands/World/CmdDeleteLvl.cs index 72818432a..1200c7fa2 100644 --- a/MCGalaxy/Commands/World/CmdDeleteLvl.cs +++ b/MCGalaxy/Commands/World/CmdDeleteLvl.cs @@ -32,12 +32,11 @@ namespace MCGalaxy.Commands.World { public override void Use(Player p, string message, CommandData data) { if (message.Length == 0 || message.SplitSpaces().Length > 1) { Help(p); return; } string map = Matcher.FindMaps(p, message); + LevelConfig cfg; if (map == null) return; - if (!LevelInfo.Check(p, data.Rank, map, "delete this map")) return; - - Level ignored; - LevelConfig cfg = LevelInfo.GetConfig(map, out ignored); + if (!LevelInfo.Check(p, data.Rank, map, "delete this map",out cfg)) return; + if (!LevelActions.Delete(p, map)) return; Chat.MessageGlobal("Map {0} %Swas deleted", cfg.Color + map); } @@ -45,7 +44,7 @@ namespace MCGalaxy.Commands.World { public override void Help(Player p) { p.Message("%T/DeleteLvl [map]"); p.Message("%HCompletely deletes [map] (portals, MBs, everything)"); - p.Message("%HA backup of the map will be placed in the levels/deleted folder"); + p.Message("%HA backup of the map is made in the levels/deleted folder"); } } } diff --git a/MCGalaxy/Commands/World/CmdRenameLvl.cs b/MCGalaxy/Commands/World/CmdRenameLvl.cs index 49aca1d4d..9581f2e73 100644 --- a/MCGalaxy/Commands/World/CmdRenameLvl.cs +++ b/MCGalaxy/Commands/World/CmdRenameLvl.cs @@ -31,23 +31,22 @@ namespace MCGalaxy.Commands.World { public override void Use(Player p, string message, CommandData data) { string[] args = message.SplitSpaces(); if (args.Length != 2) { Help(p); return; } + LevelConfig cfg; string src = Matcher.FindMaps(p, args[0]); if (src == null) return; - if (!LevelInfo.Check(p, data.Rank, src, "rename this map")) return; + if (!LevelInfo.Check(p, data.Rank, src, "rename this map", out cfg)) return; string dst = args[1].ToLower(); if (!Formatter.ValidMapName(p, dst)) return; if (!LevelActions.Rename(p, src, dst)) return; - Level ignored; - LevelConfig cfg = LevelInfo.GetConfig(dst, out ignored); Chat.MessageGlobal("Map {0} %Swas renamed to {1}", cfg.Color + src, cfg.Color + dst); } public override void Help(Player p) { - p.Message("%T/RenameLvl [level] [new name]"); - p.Message("%HRenames [level] to [new name]"); + p.Message("%T/RenameLvl [map] [new name]"); + p.Message("%HRenames [map] to [new name]"); } } } diff --git a/MCGalaxy/Levels/LevelInfo.cs b/MCGalaxy/Levels/LevelInfo.cs index ceddb0d55..ac30ccdca 100644 --- a/MCGalaxy/Levels/LevelInfo.cs +++ b/MCGalaxy/Levels/LevelInfo.cs @@ -121,9 +121,9 @@ namespace MCGalaxy { return cfg; } - internal static bool Check(Player p, LevelPermission plRank, string map, string action) { + public static bool Check(Player p, LevelPermission plRank, string map, string action, out LevelConfig cfg) { + Level lvl; cfg = GetConfig(map, out lvl); if (p.IsConsole) return true; - Level lvl; LevelConfig cfg = GetConfig(map, out lvl); if (lvl != null) return Check(p, plRank, lvl, action); AccessController visit = new LevelAccessController(cfg, map, true); @@ -134,6 +134,11 @@ namespace MCGalaxy { return true; } + public static bool Check(Player p, LevelPermission plRank, string map, string action) { + LevelConfig ignored; + return Check(p, plRank, map, action, out ignored); + } + public static bool Check(Player p, LevelPermission plRank, Level lvl, string action) { if (p.IsConsole) return true; if (!lvl.VisitAccess.CheckDetailed(p, plRank) || !lvl.BuildAccess.CheckDetailed(p, plRank)) {