예제 #1
0
 // The App class accepts its commands via constructor-injection
 public App(CircleCommand circleCommand, TriangleCommand triangleCommand, SquareCommand squareCommand, NoneCommand noneCommand)
 {
     _circleCommand   = circleCommand;
     _triangleCommand = triangleCommand;
     _squareCommand   = squareCommand;
     _noneCommand     = noneCommand;
 }
예제 #2
0
    public ICommand EndStroke(Transform parent, Material mat)
    {
        string stripId = System.Guid.NewGuid().ToString();
        // Reset Preview and Pass it's data to the new tube
        TriangleCommand tc = new TriangleCommand(stripId, this, _preview.Vertices, _preview.Tris, _preview.Uvs, parent, mat);

        _preview.Reset();
        tc.Execute();

        return(tc);
    }
예제 #3
0
 private bool _TryParseTriangle(CommandKind cmdKind, string[] argsText, out AbstractCommand cmd)
 {
     // здесь может некорректный формат команды
     cmd = new BadCommand(this.currCmdText);
     // команда работы с треугольником принимает лидо длины строн (3 аргумента), 
     // либо координаты вершин (6 аргументов)
     if (argsText.Length != 3 && argsText.Length != 6) 
         return false;
     TriangleCommand trnglCmd = null;
     // создаём конкретную команду
     switch (cmdKind)
     { 
         case CommandKind.TRIANGLE_AREA:
             trnglCmd = new TriangleAreaCommand();
             break;
         case CommandKind.TRIANGLE_PERIM:
             trnglCmd = new TrianglePerimCommand();
             break;
         case CommandKind.TRIANGLE_IS_RIGHT:
             trnglCmd = new TriangleIsRightCommand();
             break;
         case CommandKind.TRIANGLE_IS_EQUIL:
             trnglCmd = new TriangleIsRightCommand();
             break;
         default:
             Debug.Assert(false, "_TryParseTriangle must be called only for triangle commands");
             break;
     }
     // инициализируем данными треугольника
     if (argsText.Length == 3)
     {
         double[] sides;
         if (!_TryParseTriangleSides(argsText, out sides))
             return false;
         trnglCmd.Init(sides);
     }
     else
     {
         Debug.Assert(argsText.Length == 6, "This case only for 6 args-coordinates");
         Point[] vertices;
         if (!_TryParseTriangleVertices(argsText, out vertices))
             return false;
         trnglCmd.Init(vertices);
     }
     cmd = trnglCmd;
     return true;
 }