hedgewars/uTouch.pas
changeset 6695 32de8965c62c
parent 6693 b6a69c0bc541
child 6698 804e9076d136
equal deleted inserted replaced
6694:48317632b3a9 6695:32de8965c62c
    48 procedure convertToWorldCoord(var x,y: hwFloat; finger: TTouch_Data);
    48 procedure convertToWorldCoord(var x,y: hwFloat; finger: TTouch_Data);
    49 procedure convertToFingerCoord(var x,y: hwFloat; oldX, oldY: hwFloat);
    49 procedure convertToFingerCoord(var x,y: hwFloat; oldX, oldY: hwFloat);
    50 function fingerHasMoved(finger: TTouch_Data): boolean;
    50 function fingerHasMoved(finger: TTouch_Data): boolean;
    51 function calculateDelta(finger1, finger2: TTouch_Data): hwFloat;
    51 function calculateDelta(finger1, finger2: TTouch_Data): hwFloat;
    52 function getSecondFinger(finger: TTouch_Data): PTouch_Data;
    52 function getSecondFinger(finger: TTouch_Data): PTouch_Data;
    53 function isOnRect(widget: TOnScreenWidget; finger: TTouch_Data): boolean;
       
    54 function isOnRect(rect: TSDL_Rect; finger: TTouch_Data): boolean;
    53 function isOnRect(rect: TSDL_Rect; finger: TTouch_Data): boolean;
    55 procedure printFinger(finger: TTouch_Data);
    54 procedure printFinger(finger: TTouch_Data);
    56 implementation
    55 implementation
    57 
    56 
    58 const
    57 const
    97                 aiming:= true;
    96                 aiming:= true;
    98                 aim(finger^);
    97                 aim(finger^);
    99                 exit;
    98                 exit;
   100             end;
    99             end;
   101 
   100 
   102             if isOnRect(fireButton, finger^) then
   101             if isOnRect(fireButton.active, finger^) then
   103             begin
   102             begin
   104                 stopFiring:= false;
   103                 stopFiring:= false;
   105                 spaceKey:= true;
   104                 spaceKey:= true;
   106                 exit;
   105                 exit;
   107             end;
   106             end;
   108             if isOnRect(arrowLeft, finger^) then
   107             if isOnRect(arrowLeft.active, finger^) then
   109             begin
   108             begin
   110                 leftKey:= true;
   109                 leftKey:= true;
   111                 walkingLeft := true;
   110                 walkingLeft := true;
   112                 exit;
   111                 exit;
   113             end;
   112             end;
   114             if isOnRect(arrowRight, finger^) then
   113             if isOnRect(arrowRight.active, finger^) then
   115             begin
   114             begin
   116                 rightKey:= true;
   115                 rightKey:= true;
   117                 walkingRight:= true;
   116                 walkingRight:= true;
   118                 exit;
   117                 exit;
   119             end;
   118             end;
   120             if isOnRect(arrowUp, finger^) then
   119             if isOnRect(arrowUp.active, finger^) then
   121             begin
   120             begin
   122                 upKey:= true;
   121                 upKey:= true;
   123                 aimingUp:= true;
   122                 aimingUp:= true;
   124                 exit;
   123                 exit;
   125             end;
   124             end;
   126             if isOnRect(arrowDown, finger^) then
   125             if isOnRect(arrowDown.active, finger^) then
   127             begin
   126             begin
   128                 downKey:= true;
   127                 downKey:= true;
   129                 aimingDown:= true;
   128                 aimingDown:= true;
   130                 exit;
   129                 exit;
   131             end;
   130             end;
   132 
   131 
   133             if isOnRect(backjump, finger^) then
   132             if isOnRect(backjump.active, finger^) then
   134             begin
   133             begin
   135                 enterKey:= true;
   134                 enterKey:= true;
   136                 exit;
   135                 exit;
   137             end;
   136             end;
   138             if isOnRect(forwardjump, finger^) then
   137             if isOnRect(forwardjump.active, finger^) then
   139             begin
   138             begin
   140                 backspaceKey:= true;
   139                 backspaceKey:= true;
   141                 exit;
   140                 exit;
   142             end;
   141             end;
   143             if isOnRect(pauseButton, finger^) then
   142             if isOnRect(pauseButton.active, finger^) then
   144             begin
   143             begin
   145                 isPaused:= not isPaused;
   144                 isPaused:= not isPaused;
   146                 exit;
   145                 exit;
   147             end;
   146             end;
   148             moveCursor:= not bShowAmmoMenu;
   147             moveCursor:= not bShowAmmoMenu;
   541     else
   540     else
   542         getSecondFinger := @fingers[0];
   541         getSecondFinger := @fingers[0];
   543 end;
   542 end;
   544 
   543 
   545 function isOnRect(rect: TSDL_Rect; finger: TTouch_Data): boolean;
   544 function isOnRect(rect: TSDL_Rect; finger: TTouch_Data): boolean;
   546 var widget: TOnScreenWidget;
   545     isOnRect:= (finger.x > rect.x)   and
   547 begin
   546                (finger.x < rect.x + rect.w) and
   548     widget.x:= rect.x;
   547                (cScreenHeight - finger.y > rect.y) and
   549     widget.y:= rect.y;
   548                (cScreenHeight - finger.y < rect.y + rect.h);
   550     widget.width:= rect.w;
       
   551     widget.height:= rect.h;
       
   552     widget.hOffset:= 0;
       
   553     widget.vOffset:= 0;
       
   554     exit(isOnRect(widget, finger));
       
   555 end;
       
   556 
       
   557 function isOnRect(widget: TOnScreenWidget; finger: TTouch_Data): boolean;
       
   558 begin
       
   559 with widget do
       
   560     isOnRect:= (finger.x > x + hOffset)   and
       
   561                (finger.x < x + width + hOffset) and
       
   562                (cScreenHeight - finger.y > y + vOffset)   and
       
   563                (cScreenHeight - finger.y < y + height + vOffset);
       
   564 end;
   549 end;
   565 
   550 
   566 procedure printFinger(finger: TTouch_Data);
   551 procedure printFinger(finger: TTouch_Data);
   567 begin
   552 begin
   568     WriteToConsole(Format('id:%d, (%d,%d), (%d,%d), time: %d', [finger.id, finger.x, finger.y, finger.historicalX, finger.historicalY, finger.timeSinceDown]));
   553     WriteToConsole(Format('id:%d, (%d,%d), (%d,%d), time: %d', [finger.id, finger.x, finger.y, finger.historicalX, finger.historicalY, finger.timeSinceDown]));