示例#1
0
        protected override DrawOp GetDrawOp(DrawArgs dArgs)
        {
            LineDrawOp line = new LineDrawOp();

            if (dArgs.Mode == DrawMode.wire)
            {
                dArgs.Player.Message("%HIn connected lines mode, endpoint of each line also forms the " +
                                     "start point of next line. Use %T/Abort %Hto stop drawing");
            }

            line.WallsMode = dArgs.Mode == DrawMode.walls;
            string msg = dArgs.Message;

            if (msg.IndexOf(' ') == -1 || dArgs.Mode == DrawMode.normal)
            {
                return(line);
            }

            string arg = msg.Substring(msg.LastIndexOf(' ') + 1);
            ushort len;

            if (ushort.TryParse(arg, out len))
            {
                line.MaxLength = len;
            }
            return(line);
        }
示例#2
0
        void FindNext(Vec3U16 lookedAt, ref Vec3U16 pos, List <Vec3S32> buffer)
        {
            LineDrawOp.DrawLine(pos.X, pos.Y, pos.Z, 2, lookedAt.X, lookedAt.Y, lookedAt.Z, buffer);
            Vec3U16 end = (Vec3U16)buffer[buffer.Count - 1];

            pos.X = end.X; pos.Y = end.Y; pos.Z = end.Z;
            buffer.Clear();
        }
示例#3
0
        void Line(Vec3S32 p1, Vec3S32 p2, TreeOutput output)
        {
            LineDrawOp.DrawLine(p1.X, p1.Y, p1.Z, 10000, p2.X, p2.Y, p2.Z, branch);

            foreach (Vec3S32 P in branch)
            {
                output((ushort)P.X, (ushort)P.Y, (ushort)P.Z, Block.Log);
            }
            branch.Clear();
        }
示例#4
0
        protected override void GetBrush(DrawArgs dArgs)
        {
            LineDrawOp line     = (LineDrawOp)dArgs.Op;
            int        endCount = 0;

            if (line.MaxLength != int.MaxValue)
            {
                endCount++;
            }
            dArgs.BrushArgs = dArgs.Message.Splice(dArgs.ModeArgsCount, endCount);
        }
示例#5
0
        protected override string GetBrush(Player p, DrawArgs dArgs, ref int offset)
        {
            LineDrawOp line = (LineDrawOp)dArgs.Op;

            offset = dArgs.Mode == DrawMode.normal ? 0 : 1;

            if (line.MaxLength != int.MaxValue)
            {
                offset++;
            }
            return(p.BrushName);
        }
示例#6
0
        protected override void Blockchange2(Player p, ushort x, ushort y, ushort z, byte type, byte extType)
        {
            RevertAndClearState(p, x, y, z);
            CatchPos cpos = (CatchPos)p.blockchangeObject;

            GetRealBlock(type, extType, p, ref cpos);

            if (cpos.mode == DrawMode.straight)
            {
                int dx = Math.Abs(cpos.x - x), dy = Math.Abs(cpos.y - y), dz = Math.Abs(cpos.z - z);

                if (dx > dy && dx > dz)
                {
                    y = cpos.y; z = cpos.z;
                }
                else if (dy > dx && dy > dz)
                {
                    x = cpos.x; z = cpos.z;
                }
                else if (dz > dy && dz > dx)
                {
                    y = cpos.y; x = cpos.x;
                }
            }

            LineDrawOp drawOp = new LineDrawOp();

            drawOp.WallsMode = cpos.mode == DrawMode.walls;
            int brushOffset = cpos.mode == DrawMode.normal ? 0 : 1;

            if (cpos.data != null)
            {
                drawOp.MaxLength = (ushort)cpos.data; brushOffset++;
            }
            Brush brush = GetBrush(p, cpos, brushOffset);

            if (brush == null)
            {
                return;
            }

            if (!DrawOp.DoDrawOp(drawOp, brush, p, cpos.x, cpos.y, cpos.z, x, y, z))
            {
                return;
            }
            if (p.staticCommands)
            {
                p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1);
            }
        }
示例#7
0
        protected override DrawOp GetDrawOp(DrawArgs dArgs)
        {
            LineDrawOp line = new LineDrawOp();

            line.WallsMode = dArgs.Mode == DrawMode.walls;
            string msg = dArgs.Message;

            if (msg.IndexOf(' ') == -1 || dArgs.Mode == DrawMode.normal)
            {
                return(line);
            }

            string arg = msg.Substring(msg.LastIndexOf(' ') + 1);
            ushort len;

            if (ushort.TryParse(arg, out len))
            {
                line.MaxLength = len;
            }
            return(line);
        }