iPad orientation / iPhone

Previous topic - Next topic

Kitty Hello

Code (glbasic) Select

// my_drawangle - angle you can pass to ROTOSPRITE for correct orientation
//
// return:
// 0 = bottom is at bottom
// 1 = button is left
// 2 = button is on top
// 3 = button is right
FUNCTION iPadOrient%: BYREF my_drawangle
LOCAL fx, fy
STATIC last%, drawangle
fx = GETJOYX(0)
fy = GETJOYY(0)

LOCAL limit = .75
IF fy < -limit THEN last = 0
IF fx >  limit THEN last = 1
IF fy >  limit THEN last = 2
IF fx < -limit THEN last = 3

LOCAL angle = last * 90

IF ABS(angle - drawangle)>180.0
IF angle < drawangle
INC angle, 360.0
ELSE
DEC angle, 360.0
ENDIF
ENDIF

my_drawangle = drawangle * 0.9 + angle*0.1; drawangle=my_drawangle

RETURN last
ENDFUNCTION


Dark Schneider

That is not exactly correct, the return values are wrong (the hurry ;) ).
Also it can be slighty modified to allow user to select the limit, the final function could be like:

Code (glbasic) Select
// --------------------------------- //
// my_drawangle - angle you can pass to ROTOSPRITE for correct orientation
//
// return:
// 0 = bottom is at right
// 1 = button is bottom
// 2 = button is on left
// 3 = button is top
FUNCTION iPadOrient%: BYREF my_drawangle, limit#=0.75
LOCAL fx, fy
STATIC last%, drawangle
   fx = GETJOYX(0)
   fy = GETJOYY(0)

   IF fy < -limit THEN last = 0
   IF fx >  limit THEN last = 1
   IF fy >  limit THEN last = 2
   IF fx < -limit THEN last = 3

   LOCAL angle = last * 90

   IF ABS(angle - drawangle)>180.0
      IF angle < drawangle
         INC angle, 360.0
      ELSE
         DEC angle, 360.0
      ENDIF
   ENDIF

   my_drawangle = drawangle * 0.9 + angle*0.1; drawangle=my_drawangle

   RETURN last
ENDFUNCTION


Very good function  :good: