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); }
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(); }
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(); }
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); }
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); }
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); } }
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); }