Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }