Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public boolean onTouchEvent(MotionEvent event)
- {
- if(event.getAction() == MotionEvent.ACTION_DOWN)
- {
- xpo = event.getX();
- ypo = event.getY();
- float xc,yc;
- xc = rr - xpo;
- yc = rr - ypo;
- if(xc*xc + yc*yc < rr*rr)
- {
- menu = !menu;
- snew = open = save = false;
- return true;
- }
- if(menu)
- {
- float mo = 3.2f*rr;
- xc = rr - xpo;
- yc = mo+rr - ypo;
- if(xc*xc + yc*yc < rr*rr)
- {
- open = !open;
- save = snew = false;
- return true;
- }
- if(open)
- {
- for(int i=1;i<5;i++)
- {
- xc = 5+rr+2*rr*(i) - xpo;
- yc = mo+5+rr - ypo;
- if(xc*xc + yc*yc < (rr-5)*(rr-5))
- {
- open(i);
- menu = open = false;
- return true;
- }
- }
- }
- mo += 2.7*rr;
- xc = rr - xpo;
- yc = mo+rr - ypo;
- if(xc*xc + yc*yc < rr*rr)
- {
- save = !save;
- open = snew = false;
- return true;
- }
- if(save)
- {
- for(int i=1;i<5;i++)
- {
- xc = 5+rr+2*rr*(i) - xpo;
- yc = mo+5+rr - ypo;
- if(xc*xc + yc*yc < (rr-5)*(rr-5))
- {
- save(i);
- menu = save = false;
- return true;
- }
- }
- }
- mo += 2.7f*rr;
- xc = rr - xpo;
- yc = mo+rr - ypo;
- if(xc*xc + yc*yc < rr*rr)
- {
- snew = !snew;
- open = save = false;
- return true;
- }
- if(snew)
- {
- for(int i=1;i<10;i++)
- {
- xc = 5+rr+2*rr*(i%5) - xpo;
- yc = mo+5+rr+2*rr*(i/5) - ypo;
- if(xc*xc + yc*yc < (rr-5)*(rr-5))
- {
- makeCube(i+1);
- menu = snew = false;
- return true;
- }
- }
- }
- return true;
- }
- xc = w-rr - xpo;
- yc = h-rr - ypo;
- if(xc*xc + yc*yc < rr*rr)
- {
- lock = !lock;
- return true;
- }
- xc = w-rr - xpo;
- yc = rr - ypo;
- if(xc*xc + yc*yc < rr*rr)
- {
- scramble();
- return true;
- }
- xc = rr - xpo;
- yc = h-rr - ypo;
- if(xc*xc + yc*yc < rr*rr)
- {
- undoMove();
- return true;
- }
- xc = w/2 - xpo;
- yc = h/2 - ypo;
- regRot = (xc*xc + yc*yc < r*r);
- if(lock)
- {
- select = select(xpo,ypo);
- if(select != -1)
- {
- int j = select % 8;
- int f = select - j;
- sxp = (xp2[f+V[j][3]]+xp2[f+V[j][1]])/2;
- syp = (yp2[f+V[j][3]]+yp2[f+V[j][1]])/2;
- }
- xps = sxp;
- yps = syp;
- }
- }
- else if(event.getAction() == MotionEvent.ACTION_MOVE)
- {
- float xpn = event.getX();
- float ypn = event.getY();
- if(!lock)
- {
- if(regRot)
- regRotMat((xpn-xpo)/100,(ypn-ypo)/100);
- else
- {
- double a = Math.atan2(h/2f-ypo,w/2f-xpo)-
- Math.atan2(h/2f-ypn,w/2f-xpn);
- if(a < -Math.PI)
- a += 2*Math.PI;
- else if(a > Math.PI)
- a -= 2*Math.PI;
- panRotMat(a);
- }
- }
- float xpd = event.getX() - xps;
- float ypd = event.getY() - yps;
- if(lock && (select > -1) && (xpd * xpd + ypd * ypd > r*r/30))
- {
- int j = select % 8;
- int f = select - j;
- float dx1,dy1,dx2,dy2;
- double dt1,dt2;
- dx1 = xp2[f+V[j][0]]-xp2[f+V[j][1]];
- dy1 = yp2[f+V[j][0]]-yp2[f+V[j][1]];
- dx2 = xp2[f+V[j][2]]-xp2[f+V[j][1]];
- dy2 = yp2[f+V[j][2]]-yp2[f+V[j][1]];
- dt1 = (xpd * dx1 + ypd * dy1) / Math.sqrt(dx1*dx1 + dy1*dy1);
- dt2 = (xpd * dx2 + ypd * dy2) / Math.sqrt(dx2*dx2 + dy2*dy2);
- if(Math.abs(dt1) > Math.abs(dt2))
- {
- float d = (float)Math.signum(dt1);
- dxp = (float)d*(xp2[f+V[j][0]]-xp2[f+V[j][1]]);
- dyp = (float)d*(yp2[f+V[j][0]]-yp2[f+V[j][1]]);
- }
- else if(Math.abs(dt2) > Math.abs(dt1))
- {
- float d = (float)Math.signum(dt2);
- dxp = (float)d*(xp2[f+V[j][2]]-xp2[f+V[j][1]]);
- dyp = (float)d*(yp2[f+V[j][2]]-yp2[f+V[j][1]]);
- }
- }
- else
- {
- dxp = dyp = 0;
- }
- xpo = xpn;
- ypo = ypn;
- }
- else if(event.getAction() == MotionEvent.ACTION_UP)
- {
- float xpd = event.getX() - xps;
- float ypd = event.getY() - yps;
- if(lock && (select > -1) && (xpd * xpd + ypd * ypd > r*r/30))
- {
- int j = select % 8;
- int f = select - j;
- float dx1,dy1,dx2,dy2;
- double dt1,dt2;
- dx1 = xp2[f+V[j][0]]-xp2[f+V[j][1]];
- dy1 = yp2[f+V[j][0]]-yp2[f+V[j][1]];
- dx2 = xp2[f+V[j][2]]-xp2[f+V[j][1]];
- dy2 = yp2[f+V[j][2]]-yp2[f+V[j][1]];
- dt1 = (xpd * dx1 + ypd * dy1) / Math.sqrt(dx1*dx1 + dy1*dy1);
- dt2 = (xpd * dx2 + ypd * dy2) / Math.sqrt(dx2*dx2 + dy2*dy2);
- if(Math.abs(dt1) > Math.abs(dt2))
- {
- rotate(0,(int)Math.signum(dt1));
- }
- else if(Math.abs(dt2) > Math.abs(dt1))
- {
- rotate(2,(int)Math.signum(dt2));
- }
- }
- dyp = dxp = 0;
- select = -1;
- }
- invalidate();
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement