Advertisement
rainman002

Opaque Code Exhibit A

Mar 7th, 2013
1,444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.67 KB | None | 0 0
  1.     public boolean onTouchEvent(MotionEvent event)
  2.     {
  3.         if(event.getAction() == MotionEvent.ACTION_DOWN)
  4.         {
  5.             xpo = event.getX();
  6.             ypo = event.getY();
  7.             float xc,yc;
  8.            
  9.             xc = rr - xpo;
  10.             yc = rr - ypo;
  11.             if(xc*xc + yc*yc < rr*rr)
  12.             {
  13.                 menu = !menu;
  14.                 snew = open = save = false;
  15.                 return true;
  16.             }
  17.            
  18.             if(menu)
  19.             {
  20.                 float mo = 3.2f*rr;
  21.                 xc = rr - xpo;
  22.                 yc = mo+rr - ypo;
  23.                 if(xc*xc + yc*yc < rr*rr)
  24.                 {
  25.                     open = !open;
  26.                     save = snew = false;
  27.                     return true;
  28.                 }
  29.                 if(open)
  30.                 {
  31.                     for(int i=1;i<5;i++)
  32.                     {
  33.                         xc = 5+rr+2*rr*(i) - xpo;
  34.                         yc = mo+5+rr - ypo;
  35.                         if(xc*xc + yc*yc < (rr-5)*(rr-5))
  36.                         {
  37.                             open(i);
  38.                             menu = open = false;
  39.                             return true;
  40.                         }
  41.                     }
  42.                 }
  43.                 mo += 2.7*rr;
  44.                 xc = rr - xpo;
  45.                 yc = mo+rr - ypo;
  46.                 if(xc*xc + yc*yc < rr*rr)
  47.                 {
  48.                     save = !save;
  49.                     open = snew = false;
  50.                     return true;
  51.                 }
  52.                 if(save)
  53.                 {
  54.                     for(int i=1;i<5;i++)
  55.                     {
  56.                         xc = 5+rr+2*rr*(i) - xpo;
  57.                         yc = mo+5+rr - ypo;
  58.                         if(xc*xc + yc*yc < (rr-5)*(rr-5))
  59.                         {
  60.                             save(i);
  61.                             menu = save = false;
  62.                             return true;
  63.                         }
  64.                     }
  65.                 }
  66.  
  67.                 mo += 2.7f*rr;
  68.                 xc = rr - xpo;
  69.                 yc = mo+rr - ypo;
  70.                 if(xc*xc + yc*yc < rr*rr)
  71.                 {
  72.                     snew = !snew;
  73.                     open = save = false;
  74.                     return true;
  75.                 }
  76.                 if(snew)
  77.                 {
  78.                     for(int i=1;i<10;i++)
  79.                     {
  80.                         xc = 5+rr+2*rr*(i%5) - xpo;
  81.                         yc = mo+5+rr+2*rr*(i/5) - ypo;
  82.                         if(xc*xc + yc*yc < (rr-5)*(rr-5))
  83.                         {
  84.                             makeCube(i+1);
  85.                             menu = snew = false;
  86.                             return true;
  87.                         }
  88.                     }
  89.                 }
  90.                
  91.                 return true;
  92.             }
  93.  
  94.             xc = w-rr - xpo;
  95.             yc = h-rr - ypo;
  96.             if(xc*xc + yc*yc < rr*rr)
  97.             {
  98.                 lock = !lock;
  99.                 return true;
  100.             }
  101.            
  102.             xc = w-rr - xpo;
  103.             yc = rr - ypo;
  104.             if(xc*xc + yc*yc < rr*rr)
  105.             {
  106.                 scramble();
  107.                 return true;
  108.             }
  109.            
  110.             xc = rr - xpo;
  111.             yc = h-rr - ypo;
  112.             if(xc*xc + yc*yc < rr*rr)
  113.             {
  114.                 undoMove();
  115.                 return true;
  116.             }
  117.  
  118.             xc = w/2 - xpo;
  119.             yc = h/2 - ypo;
  120.             regRot = (xc*xc + yc*yc < r*r);
  121.            
  122.             if(lock)
  123.             {
  124.                 select = select(xpo,ypo);
  125.                 if(select != -1)
  126.                 {
  127.                     int j = select % 8;
  128.                     int f = select - j;
  129.                     sxp = (xp2[f+V[j][3]]+xp2[f+V[j][1]])/2;
  130.                     syp = (yp2[f+V[j][3]]+yp2[f+V[j][1]])/2;
  131.                 }
  132.                 xps = sxp;
  133.                 yps = syp;
  134.             }
  135.  
  136.         }
  137.         else if(event.getAction() == MotionEvent.ACTION_MOVE)
  138.         {
  139.             float xpn = event.getX();
  140.             float ypn = event.getY();
  141.             if(!lock)
  142.             {
  143.                 if(regRot)
  144.                     regRotMat((xpn-xpo)/100,(ypn-ypo)/100);
  145.                 else
  146.                 {
  147.                     double a = Math.atan2(h/2f-ypo,w/2f-xpo)-
  148.                         Math.atan2(h/2f-ypn,w/2f-xpn);
  149.                     if(a < -Math.PI)
  150.                         a += 2*Math.PI;
  151.                     else if(a > Math.PI)
  152.                         a -= 2*Math.PI;
  153.                     panRotMat(a);
  154.                 }
  155.             }
  156.             float xpd = event.getX() - xps;
  157.             float ypd = event.getY() - yps;
  158.             if(lock && (select > -1) && (xpd * xpd + ypd * ypd > r*r/30))
  159.             {
  160.                 int j = select % 8;
  161.                 int f = select - j;
  162.                 float dx1,dy1,dx2,dy2;
  163.                 double dt1,dt2;
  164.                 dx1 = xp2[f+V[j][0]]-xp2[f+V[j][1]];
  165.                 dy1 = yp2[f+V[j][0]]-yp2[f+V[j][1]];
  166.                 dx2 = xp2[f+V[j][2]]-xp2[f+V[j][1]];
  167.                 dy2 = yp2[f+V[j][2]]-yp2[f+V[j][1]];
  168.                 dt1 = (xpd * dx1 + ypd * dy1) / Math.sqrt(dx1*dx1 + dy1*dy1);
  169.                 dt2 = (xpd * dx2 + ypd * dy2) / Math.sqrt(dx2*dx2 + dy2*dy2);
  170.                 if(Math.abs(dt1) > Math.abs(dt2))
  171.                 {
  172.                     float d = (float)Math.signum(dt1);
  173.  
  174.                     dxp = (float)d*(xp2[f+V[j][0]]-xp2[f+V[j][1]]);
  175.                     dyp = (float)d*(yp2[f+V[j][0]]-yp2[f+V[j][1]]);
  176.                 }
  177.                 else if(Math.abs(dt2) > Math.abs(dt1))
  178.                 {
  179.                     float d = (float)Math.signum(dt2);
  180.  
  181.                     dxp = (float)d*(xp2[f+V[j][2]]-xp2[f+V[j][1]]);
  182.                     dyp = (float)d*(yp2[f+V[j][2]]-yp2[f+V[j][1]]);
  183.                 }
  184.             }
  185.             else
  186.             {
  187.                 dxp = dyp = 0;
  188.             }
  189.             xpo = xpn;
  190.             ypo = ypn;
  191.         }
  192.         else if(event.getAction() == MotionEvent.ACTION_UP)
  193.         {
  194.             float xpd = event.getX() - xps;
  195.             float ypd = event.getY() - yps;
  196.             if(lock && (select > -1) && (xpd * xpd + ypd * ypd > r*r/30))
  197.             {
  198.                 int j = select % 8;
  199.                 int f = select - j;
  200.                 float dx1,dy1,dx2,dy2;
  201.                 double dt1,dt2;
  202.                 dx1 = xp2[f+V[j][0]]-xp2[f+V[j][1]];
  203.                 dy1 = yp2[f+V[j][0]]-yp2[f+V[j][1]];
  204.                 dx2 = xp2[f+V[j][2]]-xp2[f+V[j][1]];
  205.                 dy2 = yp2[f+V[j][2]]-yp2[f+V[j][1]];
  206.                 dt1 = (xpd * dx1 + ypd * dy1) / Math.sqrt(dx1*dx1 + dy1*dy1);
  207.                 dt2 = (xpd * dx2 + ypd * dy2) / Math.sqrt(dx2*dx2 + dy2*dy2);
  208.  
  209.                 if(Math.abs(dt1) > Math.abs(dt2))
  210.                 {
  211.                     rotate(0,(int)Math.signum(dt1));
  212.                 }
  213.                 else if(Math.abs(dt2) > Math.abs(dt1))
  214.                 {
  215.                     rotate(2,(int)Math.signum(dt2));
  216.                 }
  217.             }
  218.             dyp = dxp = 0;
  219.             select = -1;
  220.         }
  221.         invalidate();
  222.         return true;
  223.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement