bool DoHighlightArea(Player p, Vec3S32[] marks, object state, BlockID block) { HighlightAreaArgs args = (HighlightAreaArgs)state; HighlightPlayer(p, args.delta, args.who, args.ids, marks); return(false); }
public override void Use(Player p, string message, CommandData data) { TimeSpan delta = TimeSpan.Zero; bool area = message.CaselessStarts("area "); if (area) message = message.Substring("area ".Length); if (message.Length == 0) message = p.name; string[] parts = message.SplitSpaces(); if (parts.Length >= 2) { if (!CommandParser.GetTimespan(p, parts[1], ref delta, "highlight the past", "s")) return; } else { delta = TimeSpan.FromMinutes(30); } parts[0] = PlayerDB.MatchNames(p, parts[0]); if (parts[0] == null) return; int[] ids = NameConverter.FindIds(parts[0]); if (!area) { Vec3S32[] marks = new Vec3S32[] { Vec3U16.MinVal, Vec3U16.MaxVal }; HighlightPlayer(p, delta, parts[0], ids, marks); } else { p.Message("Place or break two blocks to determine the edges."); HighlightAreaArgs args = new HighlightAreaArgs(); args.ids = ids; args.who = parts[0]; args.delta = delta; p.MakeSelection(2, "Selecting region for %SHighlight", args, DoHighlightArea); } }