private static List <Line> CreatePoly(IMinecraftCommandService commandService, string[] commandArgs, Position position, List <SavedPosition> savedPositions) { IPolygonOptions poly = new Options { Fill = false }; var location = position; commandArgs = ProcessFillArgument(commandArgs, (Options)poly); if (commandArgs.Count() > 3) { poly.StartingAngle = commandArgs[1].ToInt(); poly.Sides = commandArgs[2].ToInt(); poly.Steps = commandArgs[3].ToInt(); } commandArgs = commandArgs.Skip(4).ToArray(); switch (commandArgs.Length) { case 2: // radius block @ current position & height=1 poly.Block = commandArgs[1]; poly.Radius = commandArgs[0].ToInt(); poly.Height = 1; break; case 3: // radius height(Y) block @ current position poly.Block = commandArgs[2]; poly.Radius = commandArgs[0].ToInt(); poly.Height = commandArgs[1].ToInt(); break; case 4: // radius height(Y) block savedposition case 6: // radius height(Y) block x y z poly.Radius = commandArgs[0].ToInt(); poly.Height = commandArgs[1].ToInt(); poly.Block = commandArgs[2]; location = location.GetAbsolutePosition(commandArgs.Skip(3).Take(3), savedPositions); break; default: commandService.Status("\nCREATE POLY\n" + "create poly [fill] startingAngle sides steps radius block\n" + "create poly [fill] startingAngle sides steps radius height(Y) block - current position\n" + "create poly [fill] startingAngle sides steps radius height(Y) block [named position]\n" + "create poly [fill] startingAngle sides steps radius height(Y) block x y z"); return(new List <Line>()); } poly.Start = location.ToPoint(); IGenerator generator = new PolygonGenerator(); return(generator.Run((Options)poly)); }
private static List <Line> CreateTriangle(IMinecraftCommandService commandService, string[] commandArgs, Position position, List <SavedPosition> savedPositions) { IPolygonOptions triangle = new Options { Fill = false }; var location = position; commandArgs = ProcessFillArgument(commandArgs, (Options)triangle); switch (commandArgs.Length) { case 3: // radius block @ current position & height=1 triangle.Radius = commandArgs[1].ToInt() / 2; triangle.Block = commandArgs[2]; triangle.Height = 1; break; case 4: // radius height(Y) block @ current position triangle.Radius = commandArgs[1].ToInt() / 2; triangle.Height = commandArgs[2].ToInt(); triangle.Block = commandArgs[3]; break; case 5: // radius height(Y) block savedposition case 7: // radius height(Y) block x y z triangle.Radius = commandArgs[1].ToInt() / 2; triangle.Height = commandArgs[2].ToInt(); triangle.Block = commandArgs[3]; location = location.GetAbsolutePosition(commandArgs.Skip(4).Take(3), savedPositions); break; default: commandService.Status("\nCREATE TRIANGLE\n" + "create triangle [fill] radius block\n" + "create triangle [fill] radius height(Y) block - current position\n" + "create triangle [fill] radius height(Y) block [named position]\n" + "create triangle [fill] radius height(Y) block x y z"); return(new List <Line>()); } triangle.Start = location.ToPoint(); triangle.Sides = 3; triangle.Steps = 3; triangle.StartingAngle = 0; IGenerator generator = new PolygonGenerator(); return(generator.Run((Options)triangle)); }