예제 #1
0
        /**
         *
         * Coge la pieza de la peana donde este puesta
         *
         *
         */
        private Pieza isTaken(ItemCollection it, ColorImagePoint j1P)
        {
            Pieza c      = null;
            Pieza pieceF = null;
            int   i      = 0;

            while (i < it.Count && !take)
            {
                c = (Pieza)it.GetItemAt(i);

                //Posicion de la pieza
                if (j1P.X >= c.Margin.Left && j1P.X <= (c.Margin.Left + c.Width) && j1P.Y >= c.Margin.Top && j1P.Y <= (c.Margin.Top + c.Height))
                {
                    contTake++;

                    if (contTake == 30)
                    {
                        //Guarda la posicion inicial de la pieza
                        mar = new Thickness(c.Margin.Left, c.Margin.Top, 0, 0);
                        //Marca que se ha cogido una pieza
                        take     = true;
                        contTake = 0;
                        pieceF   = c;
                    }
                }


                i++;
            }
            return(pieceF);
        }
예제 #2
0
 /**
  * Verifica que la posicion de la pieza es correcta sino vuelve al lugar inicial de donde fue cogida
  */
 private void isOkPosition(Pieza piece)
 {
     //Posicion de la pieza en la primera peana
     if (piece.Margin.Left >= this.peana.Margin.Left && (piece.Margin.Left + piece.Width) <= (this.peana.Margin.Left + this.peana.Width) &&
         piece.Margin.Top >= this.peana.Margin.Top && (piece.Margin.Top + piece.Height) <= (this.peana.Margin.Top + this.peana.palo.Height))
     {
         //Si la pieza colocada en la pena es mayor se coloca la nueva pieza
         if (piece.Size < peana.firstPiece().Size)
         {
             this.peana.remove(piece);
             this.peana1.remove(piece);
             this.peana2.remove(piece);
             //Colocala pieza bien colocada en la peana
             double alto = this.peana.Margin.Top + this.peana.palo.Height - this.piece.Height - (this.peana.count() * (piece.Height - 10));
             double dis  = peana.Margin.Left + ((peana.Width - piece.Width) / 2);
             piece.Margin = new Thickness(dis, alto + 30, 0, 0);
             peana.addPiece(piece);
         }
         else
         {
             //vuelve al inicio
             piece.Margin = mar;
         }
     }
     //posicion de la pieza en la segunda peana
     else if (piece.Margin.Left >= this.peana1.Margin.Left && (piece.Margin.Left + piece.Width) <= (this.peana1.Margin.Left + this.peana1.Width) &&
              piece.Margin.Top >= this.peana1.Margin.Top && (piece.Margin.Top + piece.Height) <= (this.peana1.Margin.Top + this.peana1.palo.Height))
     {
         //Si la pieza colocada en la pena es mayor se coloca la nueva pieza
         if (piece.Size < peana1.firstPiece().Size)
         {
             this.peana.remove(piece);
             this.peana1.remove(piece);
             this.peana2.remove(piece);
             //Colocala pieza bien colocada en la peana
             double alto = this.peana1.Margin.Top + this.peana1.palo.Height - this.piece.Height - (this.peana1.count() * (piece.Height - 10));
             double dis  = peana1.Margin.Left + ((peana1.Width - piece.Width) / 2);
             piece.Margin = new Thickness(dis, alto + 30, 0, 0);
             peana1.addPiece(piece);
         }
         else
         {
             //vuelve al inicio
             piece.Margin = mar;
         }
     }
     //posicion de la pieza en la tercera peana
     else if (piece.Margin.Left >= this.peana2.Margin.Left && (piece.Margin.Left + piece.Width) <= (this.peana2.Margin.Left + this.peana2.Width) &&
              piece.Margin.Top >= this.peana2.Margin.Top && (piece.Margin.Top + piece.Height) <= (this.peana2.Margin.Top + this.peana2.palo.Height))
     {
         //Si la pieza colocada en la pena es mayor se coloca la nueva pieza
         if (piece.Size < peana2.firstPiece().Size)
         {
             this.peana.remove(piece);
             this.peana1.remove(piece);
             this.peana2.remove(piece);
             //Colocala pieza bien colocada en la peana
             double alto = this.peana2.Margin.Top + this.peana2.palo.Height - this.piece.Height - (this.peana2.count() * (piece.Height - 10));
             double dis  = peana2.Margin.Left + ((peana2.Width - piece.Width) / 2);
             piece.Margin = new Thickness(dis, alto + 30, 0, 0);
             peana2.addPiece(piece);
         }
         else
         {
             //vuelve al inicio
             piece.Margin = mar;
         }
     }
     else
     {
         //vuelve al inicio
         piece.Margin = mar;
     }
 }