author | koda |
Wed, 15 Feb 2012 16:23:59 +0100 | |
changeset 6683 | 75a1d84ac606 |
parent 6676 | 21cf35a570a7 |
child 6684 | 112a0eb8782b |
permissions | -rw-r--r-- |
5621 | 1 |
(* |
2 |
* Hedgewars, a free turn based strategy game |
|
3 |
* Copyright (c) 2011 Richard Deurwaarder <xeli@xelification.com> |
|
4 |
* |
|
5 |
* This program is free software; you can redistribute it and/or modify |
|
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
17 |
*) |
|
18 |
||
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
19 |
{$INCLUDE "options.inc"} |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
20 |
|
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
21 |
unit uTouch; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
22 |
|
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
23 |
interface |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
24 |
|
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
25 |
uses sysutils, math, uConsole, uVariables, SDLh, uFloat, uConsts, uIO, GLUnit; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
26 |
|
6344 | 27 |
// TODO: this type should be Int64 |
28 |
// TODO: this type should be named TSDL_FingerId |
|
29 |
type SDL_FingerId = LongInt; |
|
30 |
||
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
31 |
type |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
32 |
PTouch_Finger = ^Touch_Finger; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
33 |
Touch_Finger = record |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
34 |
id : SDL_FingerId; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
35 |
x,y : LongInt; |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
36 |
dx,dy : LongInt; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
37 |
historicalX, historicalY : LongInt; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
38 |
timeSinceDown : Longword; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
39 |
end; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
40 |
|
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
41 |
procedure initModule; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
42 |
|
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
43 |
procedure ProcessTouch; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
44 |
procedure onTouchDown(x,y: Longword; pointerId: SDL_FingerId); |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
45 |
procedure onTouchMotion(x,y: Longword; dx,dy: LongInt; pointerId: SDL_FingerId); |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
46 |
procedure onTouchUp(x,y: Longword; pointerId: SDL_FingerId); |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
47 |
function convertToCursorX(x: LongInt): LongInt; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
48 |
function convertToCursorY(y: LongInt): LongInt; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
49 |
function convertToCursorDeltaX(x: LongInt): LongInt; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
50 |
function convertToCursorDeltaY(y: LongInt): LongInt; |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
51 |
function addFinger(x,y: Longword; id: SDL_FingerId): PTouch_Finger; |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
52 |
function updateFinger(x,y,dx,dy: Longword; id: SDL_FingerId): PTouch_Finger; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
53 |
procedure deleteFinger(id: SDL_FingerId); |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
54 |
procedure onTouchClick(finger: Touch_Finger); |
5617
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
55 |
procedure onTouchDoubleClick(finger: Touch_Finger); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
56 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
57 |
function findFinger(id: SDL_FingerId): PTouch_Finger; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
58 |
procedure aim(finger: Touch_Finger); |
5615
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5609
diff
changeset
|
59 |
function isOnCrosshair(finger: Touch_Finger): boolean; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
60 |
function isOnCurrentHog(finger: Touch_Finger): boolean; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
61 |
procedure convertToWorldCoord(var x,y: hwFloat; finger: Touch_Finger); |
5938
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
62 |
procedure convertToFingerCoord(var x,y: hwFloat; oldX, oldY: hwFloat); |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
63 |
function fingerHasMoved(finger: Touch_Finger): boolean; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
64 |
function calculateDelta(finger1, finger2: Touch_Finger): hwFloat; |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
65 |
function getSecondFinger(finger: Touch_Finger): PTouch_Finger; |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
66 |
function isOnRect(widget: TOnScreenWidget; finger: Touch_Finger): boolean; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
67 |
function isOnRect(rect: TSDL_Rect; finger: Touch_Finger): boolean; |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
68 |
procedure printFinger(finger: Touch_Finger); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
69 |
implementation |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
70 |
|
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
71 |
const |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
72 |
clicktime = 200; |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
73 |
nilFingerId = High(SDL_FingerId); |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
74 |
|
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
75 |
var |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
76 |
pointerCount : Longword; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
77 |
fingers: array of Touch_Finger; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
78 |
moveCursor : boolean; |
5617
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
79 |
invertCursor : boolean; |
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
80 |
|
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
81 |
xTouchClick,yTouchClick : LongInt; |
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
82 |
timeSinceClick : Longword; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
83 |
|
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
84 |
//Pinch to zoom |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
85 |
pinchSize : hwFloat; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
86 |
baseZoomValue: GLFloat; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
87 |
|
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
88 |
//aiming |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
89 |
aiming: boolean; |
6640 | 90 |
aimingUp, aimingDown: boolean; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
91 |
targetAngle: LongInt; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
92 |
stopFiring: boolean; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
93 |
|
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
94 |
//moving |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
95 |
stopLeft, stopRight, walkingLeft, walkingRight : boolean; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
96 |
|
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
97 |
procedure onTouchDown(x,y: Longword; pointerId: SDL_FingerId); |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
98 |
var |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
99 |
finger: PTouch_Finger; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
100 |
begin |
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6654
diff
changeset
|
101 |
{$IFDEF USE_TOUCH_INTERFACE} |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
102 |
finger := addFinger(x,y,pointerId); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
103 |
case pointerCount of |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
104 |
1: |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
105 |
begin |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
106 |
moveCursor:= false; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
107 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
108 |
if isOnCrosshair(finger^) then |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
109 |
begin |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
110 |
aiming:= true; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
111 |
aim(finger^); |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
112 |
exit; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
113 |
end; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
114 |
|
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
115 |
if isOnRect(fireButton, finger^) then |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
116 |
begin |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
117 |
stopFiring:= false; |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
118 |
spaceKey:= true; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
119 |
exit; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
120 |
end; |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
121 |
if isOnRect(arrowLeft, finger^) then |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
122 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
123 |
leftKey:= true; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
124 |
walkingLeft := true; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
125 |
exit; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
126 |
end; |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
127 |
if isOnRect(arrowRight, finger^) then |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
128 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
129 |
rightKey:= true; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
130 |
walkingRight:= true; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
131 |
exit; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
132 |
end; |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
133 |
if isOnRect(arrowUp, finger^) then |
6640 | 134 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
135 |
upKey:= true; |
6640 | 136 |
aimingUp:= true; |
137 |
exit; |
|
138 |
end; |
|
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
139 |
if isOnRect(arrowDown, finger^) then |
6640 | 140 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
141 |
downKey:= true; |
6640 | 142 |
aimingDown:= true; |
143 |
exit; |
|
144 |
end; |
|
145 |
||
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
146 |
if isOnRect(backjump, finger^) then |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
147 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
148 |
enterKey:= true; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
149 |
exit; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
150 |
end; |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
151 |
if isOnRect(forwardjump, finger^) then |
6640 | 152 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
153 |
backspaceKey:= true; |
6640 | 154 |
exit; |
155 |
end; |
|
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
156 |
moveCursor:= not bShowAmmoMenu; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
157 |
end; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
158 |
2: |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
159 |
begin |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
160 |
aiming:= false; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
161 |
stopFiring:= true; |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
162 |
moveCursor:= false; |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
163 |
pinchSize := calculateDelta(finger^, getSecondFinger(finger^)^); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
164 |
baseZoomValue := ZoomValue |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
165 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
166 |
end;//end case pointerCount of |
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6654
diff
changeset
|
167 |
{$ENDIF} |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
168 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
169 |
|
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
170 |
procedure onTouchMotion(x,y: Longword;dx,dy: LongInt; pointerId: SDL_FingerId); |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
171 |
var |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
172 |
finger, secondFinger: PTouch_Finger; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
173 |
currentPinchDelta, zoom : hwFloat; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
174 |
begin |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
175 |
finger:= updateFinger(x,y,dx,dy,pointerId); |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
176 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
177 |
if moveCursor then |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
178 |
begin |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
179 |
if invertCursor then |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
180 |
begin |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
181 |
CursorPoint.X := CursorPoint.X - finger^.dx; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
182 |
CursorPoint.Y := CursorPoint.Y + finger^.dy; |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
183 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
184 |
else |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
185 |
begin |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
186 |
CursorPoint.X := CursorPoint.X + finger^.dx; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
187 |
CursorPoint.Y := CursorPoint.Y - finger^.dy; |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
188 |
end; |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
189 |
exit //todo change into switch rather than ugly ifs |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
190 |
end; |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
191 |
|
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
192 |
if aiming then |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
193 |
begin |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
194 |
aim(finger^); |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
195 |
exit |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
196 |
end; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
197 |
|
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
198 |
if pointerCount = 2 then |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
199 |
begin |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
200 |
secondFinger := getSecondFinger(finger^); |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
201 |
currentPinchDelta := calculateDelta(finger^, secondFinger^) - pinchSize; |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
202 |
zoom := currentPinchDelta/cScreenWidth; |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
203 |
ZoomValue := baseZoomValue - ((hwFloat2Float(zoom) * cMinMaxZoomLevelDelta)); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
204 |
if ZoomValue < cMaxZoomLevel then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
205 |
ZoomValue := cMaxZoomLevel; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
206 |
if ZoomValue > cMinZoomLevel then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
207 |
ZoomValue := cMinZoomLevel; |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5733
diff
changeset
|
208 |
end; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
209 |
|
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
210 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
211 |
|
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
212 |
procedure onTouchUp(x,y: Longword; pointerId: SDL_FingerId); |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
213 |
var |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
214 |
finger: PTouch_Finger; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
215 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
216 |
x := x; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
217 |
y := y; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
218 |
aiming:= false; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
219 |
stopFiring:= true; |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
220 |
finger:= updateFinger(x,y,0,0,pointerId); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
221 |
//Check for onTouchClick event |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
222 |
if ((SDL_GetTicks - finger^.timeSinceDown) < clickTime) AND not(fingerHasMoved(finger^)) then |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
223 |
onTouchClick(finger^); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
224 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
225 |
deleteFinger(pointerId); |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
226 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
227 |
if walkingLeft then |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
228 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
229 |
leftKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
230 |
walkingLeft := false; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
231 |
end; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
232 |
|
6640 | 233 |
if walkingRight then |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
234 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
235 |
rightKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
236 |
walkingRight := false; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
237 |
end; |
6640 | 238 |
|
239 |
if aimingUp then |
|
240 |
begin |
|
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
241 |
upKey:= false; |
6640 | 242 |
aimingUp:= false; |
243 |
end; |
|
244 |
if aimingDown then |
|
245 |
begin |
|
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
246 |
downKey:= false; |
6640 | 247 |
aimingDown:= false; |
248 |
end; |
|
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
249 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
250 |
|
5617
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
251 |
procedure onTouchDoubleClick(finger: Touch_Finger); |
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
252 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
253 |
finger := finger;//avoid compiler hint |
5617
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
254 |
end; |
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
255 |
|
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
256 |
procedure onTouchClick(finger: Touch_Finger); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
257 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
258 |
if (SDL_GetTicks - timeSinceClick < 300) and (DistanceI(finger.X-xTouchClick, finger.Y-yTouchClick) < _30) then |
5617
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
259 |
begin |
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
260 |
onTouchDoubleClick(finger); |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
261 |
timeSinceClick:= 0;//we make an assumption there won't be an 'click' in the first 300 ticks(milliseconds) |
5617
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
262 |
exit; |
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
263 |
end; |
88f43becefe3
added low jump, you can low-jump by double tapping the right or left side of the screen
Xeli
parents:
5615
diff
changeset
|
264 |
|
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
265 |
xTouchClick:= finger.x; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
266 |
yTouchClick:= finger.y; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
267 |
timeSinceClick:= SDL_GetTicks; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
268 |
|
6648
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
269 |
if bShowAmmoMenu then |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
270 |
begin |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
271 |
if isOnRect(AmmoRect, finger) then |
6648
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
272 |
begin |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
273 |
CursorPoint.X:= finger.x; |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
274 |
CursorPoint.Y:= finger.y; |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
275 |
doPut(CursorPoint.X, CursorPoint.Y, false); |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
276 |
end |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
277 |
else |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
278 |
bShowAmmoMenu:= false; |
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
279 |
exit; |
5589 | 280 |
end; |
281 |
||
6648
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6640
diff
changeset
|
282 |
|
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
283 |
if isOnCurrentHog(finger) then |
5595 | 284 |
begin |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
285 |
bShowAmmoMenu := true; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
286 |
exit; |
5595 | 287 |
end; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
288 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
289 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
290 |
function addFinger(x,y: Longword; id: SDL_FingerId): PTouch_Finger; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
291 |
var |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
292 |
xCursor, yCursor, index : LongInt; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
293 |
begin |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
294 |
//Check array sizes |
6228
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
295 |
if length(fingers) < Integer(pointerCount) then |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
296 |
begin |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
297 |
setLength(fingers, length(fingers)*2); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
298 |
for index := length(fingers) div 2 to length(fingers) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
299 |
fingers[index].id := nilFingerId; |
5589 | 300 |
end; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
301 |
|
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
302 |
|
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
303 |
xCursor := convertToCursorX(x); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
304 |
yCursor := convertToCursorY(y); |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
305 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
306 |
//on removing fingers, all fingers are moved to the left |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
307 |
//with dynamic arrays being zero based, the new position of the finger is the old pointerCount |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
308 |
fingers[pointerCount].id := id; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
309 |
fingers[pointerCount].historicalX := xCursor; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
310 |
fingers[pointerCount].historicalY := yCursor; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
311 |
fingers[pointerCount].x := xCursor; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
312 |
fingers[pointerCount].y := yCursor; |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
313 |
fingers[pointerCount].dx := 0; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
314 |
fingers[pointerCount].dy := 0; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
315 |
fingers[pointerCount].timeSinceDown:= SDL_GetTicks; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
316 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
317 |
addFinger:= @fingers[pointerCount]; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
318 |
inc(pointerCount); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
319 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
320 |
|
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
321 |
function updateFinger(x,y,dx,dy: Longword; id: SDL_FingerId): PTouch_Finger; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
322 |
begin |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
323 |
updateFinger:= findFinger(id); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
324 |
|
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
325 |
updateFinger^.x:= convertToCursorX(x); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
326 |
updateFinger^.y:= convertToCursorY(y); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
327 |
updateFinger^.dx:= convertToCursorDeltaX(dx); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
328 |
updateFinger^.dy:= convertToCursorDeltaY(dy); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
329 |
end; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
330 |
|
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
331 |
procedure deleteFinger(id: SDL_FingerId); |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
332 |
var |
6228
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
333 |
index : Longword; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
334 |
begin |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
335 |
|
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
336 |
dec(pointerCount); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
337 |
for index := 0 to pointerCount do |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
338 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
339 |
if fingers[index].id = id then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
340 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
341 |
|
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
342 |
//put the last finger into the spot of the finger to be removed, |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
343 |
//so that all fingers are packed to the far left |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
344 |
if pointerCount <> index then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
345 |
begin |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
346 |
fingers[index].id := fingers[pointerCount].id; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
347 |
fingers[index].x := fingers[pointerCount].x; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
348 |
fingers[index].y := fingers[pointerCount].y; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
349 |
fingers[index].historicalX := fingers[pointerCount].historicalX; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
350 |
fingers[index].historicalY := fingers[pointerCount].historicalY; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
351 |
fingers[index].timeSinceDown := fingers[pointerCount].timeSinceDown; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
352 |
|
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
353 |
fingers[pointerCount].id := nilFingerId; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
354 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
355 |
else fingers[index].id := nilFingerId; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
356 |
break; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
357 |
end; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
358 |
end; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
359 |
|
5589 | 360 |
end; |
361 |
||
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
362 |
procedure ProcessTouch; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
363 |
var |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
364 |
deltaAngle: LongInt; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
365 |
begin |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
366 |
invertCursor := not(bShowAmmoMenu); |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
367 |
if aiming then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
368 |
if CurrentHedgehog^.Gear <> nil then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
369 |
begin |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
370 |
deltaAngle:= CurrentHedgehog^.Gear^.Angle - targetAngle; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
371 |
if (deltaAngle = 0) then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
372 |
begin |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
373 |
if aimingUp then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
374 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
375 |
upKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
376 |
aimingUp:= false; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
377 |
end; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
378 |
if aimingDown then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
379 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
380 |
downKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
381 |
aimingDown:= false; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
382 |
end |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
383 |
end |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
384 |
else |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
385 |
begin |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
386 |
if (deltaAngle < 0) then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
387 |
begin |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
388 |
if aimingUp then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
389 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
390 |
upKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
391 |
aimingUp:= false; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
392 |
end; |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
393 |
downKey:= true; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
394 |
aimingDown:= true; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
395 |
end |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
396 |
else |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
397 |
begin |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
398 |
if aimingDown then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
399 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
400 |
downKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
401 |
aimingDown:= false; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
402 |
end; |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
403 |
upKey:= true; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
404 |
aimingUp:= true; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
405 |
end; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
406 |
end; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
407 |
end |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
408 |
else |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
409 |
begin |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
410 |
if aimingUp then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
411 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
412 |
upKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
413 |
aimingUp:= false; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
414 |
end; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
415 |
if aimingDown then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
416 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
417 |
upKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
418 |
aimingDown:= false; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
419 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
420 |
end; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
421 |
|
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
422 |
if stopFiring then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
423 |
begin |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
424 |
spaceKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
425 |
stopFiring:= false; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
426 |
end; |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
427 |
|
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
428 |
if stopRight then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
429 |
begin |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
430 |
stopRight := false; |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
431 |
rightKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
432 |
end; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
433 |
|
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
434 |
if stopLeft then |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
435 |
begin |
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
436 |
stopLeft := false; |
6654
120e95c10532
use the way actions are initiated the same way as koda implemented with PascalExports, using boolean values such as upKey and enterKey, this prevents the user from being able to control the AI
Xeli
parents:
6651
diff
changeset
|
437 |
leftKey:= false; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
438 |
end; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
439 |
|
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
440 |
end; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
441 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
442 |
function findFinger(id: SDL_FingerId): PTouch_Finger; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
443 |
var |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
444 |
index: LongWord; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
445 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
446 |
for index := 0 to High(fingers) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
447 |
if fingers[index].id = id then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
448 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
449 |
findFinger := @fingers[index]; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
450 |
break; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
451 |
end; |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
452 |
end; |
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
453 |
|
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
454 |
procedure aim(finger: Touch_Finger); |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
455 |
var |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
456 |
hogX, hogY, touchX, touchY, deltaX, deltaY, tmpAngle: hwFloat; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
457 |
begin |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
458 |
if CurrentHedgehog^.Gear <> nil then |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
459 |
begin |
6228
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
460 |
touchX := _0;//avoid compiler hint |
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
461 |
touchY := _0; |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
462 |
hogX := CurrentHedgehog^.Gear^.X; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
463 |
hogY := CurrentHedgehog^.Gear^.Y; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
464 |
|
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
465 |
convertToWorldCoord(touchX, touchY, finger); |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
466 |
deltaX := hwAbs(TouchX-HogX); |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
467 |
deltaY := (TouchY-HogY); |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
468 |
|
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
469 |
tmpAngle:= DeltaY / Distance(deltaX, deltaY) *_2048; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
470 |
targetAngle:= (hwRound(tmpAngle) + 2048) div 2; |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
471 |
end; //if CurrentHedgehog^.Gear <> nil |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
472 |
end; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
473 |
|
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
474 |
//These 4 convertToCursor functions convert xy coords from the SDL coordinate system to our CursorPoint coor system |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
475 |
// the SDL coordinate system goes from 0 to 32768 on the x axis and 0 to 32768 on the y axis, (0,0) being top left. |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
476 |
// the CursorPoint coordinate system goes from -cScreenWidth/2 to cScreenWidth/2 on the x axis |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
477 |
// and 0 to cScreenHeight on the x axis, (-cScreenWidth, cScreenHeight) being top left, |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
478 |
function convertToCursorX(x: LongInt): LongInt; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
479 |
begin |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
480 |
convertToCursorX := round((x/32768)*cScreenWidth) - (cScreenWidth shr 1); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
481 |
end; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
482 |
|
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
483 |
function convertToCursorY(y: LongInt): LongInt; |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
484 |
begin |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
485 |
convertToCursorY := cScreenHeight - round((y/32768)*cScreenHeight) |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
486 |
end; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
487 |
|
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
488 |
function convertToCursorDeltaX(x: LongInt): LongInt; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
489 |
begin |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
490 |
convertToCursorDeltaX := round(x/32768*cScreenWidth) |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
491 |
end; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
492 |
|
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
493 |
function convertToCursorDeltaY(y: LongInt): LongInt; |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
494 |
begin |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
495 |
convertToCursorDeltaY := round(y/32768*cScreenHeight) |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
496 |
end; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
497 |
|
5615
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5609
diff
changeset
|
498 |
function isOnCrosshair(finger: Touch_Finger): boolean; |
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5609
diff
changeset
|
499 |
var |
5938
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
500 |
x,y : hwFloat; |
5615
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5609
diff
changeset
|
501 |
begin |
6228
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
502 |
x := _0;//avoid compiler hint |
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
503 |
y := _0; |
5938
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
504 |
convertToFingerCoord(x, y, int2hwFloat(CrosshairX), int2hwFloat(CrosshairY)); |
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
505 |
isOnCrosshair:= Distance(int2hwFloat(finger.x)-x, int2hwFloat(finger.y)-y) < _50; |
5615
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5609
diff
changeset
|
506 |
end; |
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5609
diff
changeset
|
507 |
|
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
508 |
function isOnCurrentHog(finger: Touch_Finger): boolean; |
5595 | 509 |
var |
5938
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
510 |
x,y : hwFloat; |
5595 | 511 |
begin |
6228
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
512 |
x := _0; |
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
513 |
y := _0; |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
514 |
convertToFingerCoord(x,y, CurrentHedgehog^.Gear^.X, CurrentHedgehog^.Gear^.Y); |
5938
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
515 |
isOnCurrentHog := Distance(int2hwFloat(finger.X)-x, int2hwFloat(finger.Y)-y) < _50; |
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
516 |
end; |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
517 |
|
5938
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
518 |
procedure convertToFingerCoord(var x,y : hwFloat; oldX, oldY: hwFloat); |
c186c454779d
isOnCurrentHog and isOnCrosshair now look at the distance relative to the screen rather than world coords, this means that zooming out doesn't make it harder to touch the hog or crosshair
Xeli
parents:
5828
diff
changeset
|
519 |
begin |
6625
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
520 |
x := oldX + int2hwFloat(WorldDx); |
2d8c5815292f
some refactoring + you can now tap on the ammo menu to select a weapon
Xeli
parents:
6580
diff
changeset
|
521 |
y := int2hwFloat(cScreenHeight) - (oldY + int2hwFloat(WorldDy)); |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
522 |
end; |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
523 |
|
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
524 |
procedure convertToWorldCoord(var x,y: hwFloat; finger: Touch_Finger); |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
525 |
begin |
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
526 |
//if x <> nil then |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
527 |
x := int2hwFloat((finger.x-WorldDx)); |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5595
diff
changeset
|
528 |
//if y <> nil then |
6651
4103354b7599
fixed aiming by touching the crosshair, made it compatible with the aiming buttons and disabled camera movement when touching buttons + some formatting fixes
Xeli
parents:
6648
diff
changeset
|
529 |
y := int2hwFloat((cScreenHeight - finger.y)-WorldDy); |
5595 | 530 |
end; |
531 |
||
5589 | 532 |
//Method to calculate the distance this finger has moved since the downEvent |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
533 |
function fingerHasMoved(finger: Touch_Finger): boolean; |
5589 | 534 |
begin |
5609
9d66611e4d0a
Introduced a Touch_Finger type to replace the arrays with coords, makes cleaner code
Xeli
parents:
5605
diff
changeset
|
535 |
fingerHasMoved := trunc(sqrt(Power(finger.X-finger.historicalX,2) + Power(finger.y-finger.historicalY, 2))) > 330; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
536 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
537 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
538 |
function calculateDelta(finger1, finger2: Touch_Finger): hwFloat; inline; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
539 |
begin |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
540 |
calculateDelta := DistanceI(finger2.x-finger1.x, finger2.y-finger1.y); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
541 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
542 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
543 |
// Under the premise that all pointer ids in pointerIds:SDL_FingerId are packed to the far left. |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
544 |
// If the pointer to be ignored is not pointerIds[0] the second must be there |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
545 |
function getSecondFinger(finger: Touch_Finger): PTouch_Finger; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
546 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
547 |
if fingers[0].id = finger.id then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
548 |
getSecondFinger := @fingers[1] |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
549 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6344
diff
changeset
|
550 |
getSecondFinger := @fingers[0]; |
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
551 |
end; |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
552 |
|
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
553 |
function isOnRect(rect: TSDL_Rect; finger: Touch_Finger): boolean; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
554 |
var widget: TOnScreenWidget; |
6640 | 555 |
begin |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
556 |
widget.x:= rect.x; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
557 |
widget.y:= rect.y; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
558 |
widget.width:= rect.width; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
559 |
widget.height:= rect.height; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
560 |
widget.hOffset:= 0; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
561 |
widget.vOffset:= 0; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
562 |
exit(isOnRect(widget, finger)); |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
563 |
end; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
564 |
|
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
565 |
function isOnRect(widget: TOnScreenWidget; finger: Touch_Finger): boolean; |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
566 |
begin |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
567 |
with widget do |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
568 |
isOnRect:= (finger.x > x + hOffset) and |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
569 |
(finger.x < x + w + hOffset) and |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
570 |
(cScreenHeight - finger.y > y + vOffset) and |
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6676
diff
changeset
|
571 |
(cScreenHeight - finger.y < y + h + vOffset)); |
6640 | 572 |
end; |
573 |
||
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
574 |
procedure printFinger(finger: Touch_Finger); |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
575 |
begin |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
576 |
WriteToConsole(Format('id:%d, (%d,%d), (%d,%d), time: %d', [finger.id, finger.x, finger.y, finger.historicalX, finger.historicalY, finger.timeSinceDown])); |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
577 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
578 |
|
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
579 |
procedure initModule; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
580 |
var |
6228
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
581 |
index: Longword; |
1b7d4d7d162b
added lines to avoid compiler hints, is this really the way we want to do it though? ;/
Xeli
parents:
6029
diff
changeset
|
582 |
//uRenderCoordScaleX, uRenderCoordScaleY: Longword; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
583 |
begin |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
584 |
stopFiring:= false; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
585 |
walkingLeft := false; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
586 |
walkingRight := false; |
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
587 |
|
5733
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
588 |
setLength(fingers, 4); |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
589 |
for index := 0 to High(fingers) do |
5ab22736bdb6
Fixed a major bug (related to pointers) which also solves the stuttering when zooming in and out
Xeli
parents:
5621
diff
changeset
|
590 |
fingers[index].id := nilFingerId; |
5579
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
591 |
end; |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
592 |
|
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
593 |
begin |
3176ee8a9d94
uTouch, has cursor move, zoom and click or tap to open the ammo menu
Xeli
parents:
diff
changeset
|
594 |
end. |