author | Xeli |
Mon, 20 Feb 2012 21:55:59 +0100 | |
changeset 6727 | b3160a49f02e |
parent 6700 | e04da46ee43c |
child 6863 | 4d1ce4b4f7c6 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
6700 | 3 |
* Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com> |
4 | 4 |
* |
183 | 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 |
|
4 | 8 |
* |
183 | 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. |
|
4 | 13 |
* |
183 | 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 |
|
4 | 17 |
*) |
18 |
||
2630 | 19 |
{$INCLUDE "options.inc"} |
20 |
||
4 | 21 |
unit uKeys; |
22 |
interface |
|
4363 | 23 |
uses SDLh, uTypes; |
4 | 24 |
|
3038 | 25 |
procedure initModule; |
26 |
procedure freeModule; |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
27 |
|
2905 | 28 |
function KeyNameToCode(name: shortstring): word; |
4 | 29 |
procedure ProcessKbd; |
30 |
procedure ResetKbd; |
|
948 | 31 |
procedure FreezeEnterKey; |
4 | 32 |
procedure InitKbdKeyTable; |
33 |
||
167 | 34 |
procedure SetBinds(var binds: TBinds); |
35 |
procedure SetDefaultBinds; |
|
36 |
||
2428 | 37 |
procedure ControllerInit; |
38 |
procedure ControllerClose; |
|
39 |
procedure ControllerAxisEvent(joy, axis: Byte; value: Integer); |
|
40 |
procedure ControllerHatEvent(joy, hat, value: Byte); |
|
41 |
procedure ControllerButtonEvent(joy, button: Byte; pressed: Boolean); |
|
42 |
||
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:
6580
diff
changeset
|
43 |
{$IFDEF MOBILE} |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
44 |
procedure setiPhoneBinds; |
2567 | 45 |
{$ENDIF} |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
46 |
|
4 | 47 |
implementation |
4403 | 48 |
uses uConsole, uCommands, uMisc, uVariables, uConsts, uUtils, uDebug; |
167 | 49 |
|
2436 | 50 |
var tkbd, tkbdn: TKeyboardState; |
4 | 51 |
KeyNames: array [0..cKeyMaxIndex] of string[15]; |
3697 | 52 |
|
2905 | 53 |
function KeyNameToCode(name: shortstring): word; |
2678
334016e8d895
injection of custom code in SDL for iPhone in order to implement our frontend
koda
parents:
2674
diff
changeset
|
54 |
var code: Word; |
334016e8d895
injection of custom code in SDL for iPhone in order to implement our frontend
koda
parents:
2674
diff
changeset
|
55 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
56 |
code:= cKeyMaxIndex; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
57 |
while (code > 0) and (KeyNames[code] <> name) do dec(code); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
58 |
KeyNameToCode:= code; |
2678
334016e8d895
injection of custom code in SDL for iPhone in order to implement our frontend
koda
parents:
2674
diff
changeset
|
59 |
end; |
334016e8d895
injection of custom code in SDL for iPhone in order to implement our frontend
koda
parents:
2674
diff
changeset
|
60 |
|
4 | 61 |
|
62 |
procedure ProcessKbd; |
|
2428 | 63 |
var i, j, k: LongInt; |
2436 | 64 |
s: shortstring; |
167 | 65 |
Trusted: boolean; |
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:
6580
diff
changeset
|
66 |
{$IFNDEF MOBILE}pkbd: PByteArray;{$ENDIF} |
4 | 67 |
begin |
2428 | 68 |
hideAmmoMenu:= false; |
167 | 69 |
Trusted:= (CurrentTeam <> nil) |
351 | 70 |
and (not CurrentTeam^.ExtDriven) |
846 | 71 |
and (CurrentHedgehog^.BotLevel = 0); |
161 | 72 |
|
2428 | 73 |
// move cursor/camera |
74 |
// TODO: Scale on screen dimensions and/or axis value (game controller)? |
|
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
75 |
movecursor(5 * CursorMovementX, 5 * CursorMovementY); |
2671
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2630
diff
changeset
|
76 |
|
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2630
diff
changeset
|
77 |
k:= SDL_GetMouseState(nil, nil); |
3221 | 78 |
|
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:
6580
diff
changeset
|
79 |
{$IFDEF MOBILE} |
3221 | 80 |
SDL_GetKeyState(@j); |
81 |
{$ELSE} |
|
2671
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2630
diff
changeset
|
82 |
pkbd:= SDL_GetKeyState(@j); |
2436 | 83 |
for i:= 6 to pred(j) do // first 6 will be overwritten |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
84 |
tkbdn[i]:= pkbd^[i]; |
2579 | 85 |
{$ENDIF} |
2436 | 86 |
|
2379 | 87 |
// mouse buttons |
2152 | 88 |
{$IFDEF DARWIN} |
2436 | 89 |
tkbdn[1]:= ((k and 1) and not (tkbdn[306] or tkbdn[305])); |
90 |
tkbdn[3]:= ((k and 1) and (tkbdn[306] or tkbdn[305])) or (k and 4); |
|
2152 | 91 |
{$ELSE} |
2436 | 92 |
tkbdn[1]:= (k and 1); |
93 |
tkbdn[3]:= ((k shr 2) and 1); |
|
2152 | 94 |
{$ENDIF} |
2436 | 95 |
tkbdn[2]:= ((k shr 1) and 1); |
2328 | 96 |
|
2678
334016e8d895
injection of custom code in SDL for iPhone in order to implement our frontend
koda
parents:
2674
diff
changeset
|
97 |
// mouse wheels |
2436 | 98 |
tkbdn[4]:= ord(wheelDown); |
99 |
tkbdn[5]:= ord(wheelUp); |
|
2379 | 100 |
wheelUp:= false; |
101 |
wheelDown:= false; |
|
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
102 |
|
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:
6580
diff
changeset
|
103 |
{$IFDEF MOBILE} |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
104 |
setiPhoneBinds(); |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
105 |
{$ELSE} |
2428 | 106 |
// Controller(s) |
2436 | 107 |
k:= j; // should we test k for hitting the limit? sounds rather unlikely to ever reach it |
2428 | 108 |
for j:= 0 to Pred(ControllerNumControllers) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
109 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
110 |
for i:= 0 to Pred(ControllerNumAxes[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
111 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
112 |
if ControllerAxes[j][i] > 20000 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
113 |
tkbdn[k + 0]:= 1 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
114 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
115 |
tkbdn[k + 0]:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
116 |
if ControllerAxes[j][i] < -20000 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
117 |
tkbdn[k + 1]:= 1 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
118 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
119 |
tkbdn[k + 1]:= 0; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
120 |
inc(k, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
121 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
122 |
for i:= 0 to Pred(ControllerNumHats[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
123 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
124 |
tkbdn[k + 0]:= ControllerHats[j][i] and SDL_HAT_UP; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
125 |
tkbdn[k + 1]:= ControllerHats[j][i] and SDL_HAT_RIGHT; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
126 |
tkbdn[k + 2]:= ControllerHats[j][i] and SDL_HAT_DOWN; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
127 |
tkbdn[k + 3]:= ControllerHats[j][i] and SDL_HAT_LEFT; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
128 |
inc(k, 4); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
129 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
130 |
for i:= 0 to Pred(ControllerNumButtons[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
131 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
132 |
tkbdn[k]:= ControllerButtons[j][i]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
133 |
inc(k, 1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
134 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
135 |
end; |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
136 |
{$ENDIF} |
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
137 |
|
6216
a6186a8ba90a
having ctrl+w close the engine is just mean... many WASD players think the game crashes all the time because of that - since they close it by accident again and again...
sheepluva
parents:
5100
diff
changeset
|
138 |
// ctrl/cmd + q to close engine and frontend |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
139 |
{$IFDEF DARWIN} |
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
140 |
if ((tkbdn[KeyNameToCode('left_meta')] = 1) or (tkbdn[KeyNameToCode('right_meta')] = 1)) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
141 |
{$ELSE} |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
142 |
if ((tkbdn[KeyNameToCode('left_ctrl')] = 1) or (tkbdn[KeyNameToCode('right_ctrl')] = 1)) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
143 |
{$ENDIF} |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
144 |
begin |
4751 | 145 |
if tkbdn[KeyNameToCode('q')] = 1 then ParseCommand ('halt', true) |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
146 |
end; |
2428 | 147 |
|
2379 | 148 |
// now process strokes |
2436 | 149 |
for i:= 0 to cKeyMaxIndex do |
947 | 150 |
if CurrentBinds[i][0] <> #0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
151 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
152 |
if (i > 3) and (tkbdn[i] <> 0) and not ((CurrentBinds[i] = 'put') or (CurrentBinds[i] = 'ammomenu') or (CurrentBinds[i] = '+cur_u') or (CurrentBinds[i] = '+cur_d') or (CurrentBinds[i] = '+cur_l') or (CurrentBinds[i] = '+cur_r')) then hideAmmoMenu:= true; |
4531
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4403
diff
changeset
|
153 |
if (tkbd[i] = 0) and (tkbdn[i] <> 0) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
154 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
155 |
ParseCommand(CurrentBinds[i], Trusted); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
156 |
if (CurrentTeam <> nil) and (not CurrentTeam^.ExtDriven) and (ReadyTimeLeft > 1) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
157 |
ParseCommand('gencmd R', true) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
158 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
159 |
else if (CurrentBinds[i][1] = '+') and (tkbdn[i] = 0) and (tkbd[i] <> 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
160 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
161 |
s:= CurrentBinds[i]; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
162 |
s[1]:= '-'; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
163 |
ParseCommand(s, Trusted); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
164 |
if (CurrentTeam <> nil) and (not CurrentTeam^.ExtDriven) and (ReadyTimeLeft > 1) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
165 |
ParseCommand('gencmd R', true) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
166 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
167 |
tkbd[i]:= tkbdn[i] |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
168 |
end |
4 | 169 |
end; |
170 |
||
171 |
procedure ResetKbd; |
|
4850 | 172 |
var j, k, t: LongInt; |
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:
6580
diff
changeset
|
173 |
{$IFNDEF MOBILE} |
4850 | 174 |
i: LongInt; |
175 |
pkbd: PByteArray; |
|
176 |
{$ENDIF} |
|
4 | 177 |
begin |
2171
8208946331ba
Smaxx refactor of LoadImage to use flags, iphone changes by koda (mostly use of rgba instead of rgb)
nemo
parents:
2163
diff
changeset
|
178 |
|
2671
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2630
diff
changeset
|
179 |
k:= SDL_GetMouseState(nil, nil); |
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:
6580
diff
changeset
|
180 |
{$IFNDEF MOBILE}pkbd:={$ENDIF}SDL_GetKeyState(@j); |
2714
c85ffe57d971
update iphone frontend to the new (silly) sdl api, code cleanups for other sections
koda
parents:
2699
diff
changeset
|
181 |
|
4374 | 182 |
TryDo(j < cKeyMaxIndex, 'SDL keys number is more than expected (' + IntToStr(j) + ')', true); |
2436 | 183 |
|
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:
6580
diff
changeset
|
184 |
{$IFNDEF MOBILE} |
2436 | 185 |
for i:= 1 to pred(j) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
186 |
tkbdn[i]:= pkbd^[i]; |
2579 | 187 |
{$ENDIF} |
2171
8208946331ba
Smaxx refactor of LoadImage to use flags, iphone changes by koda (mostly use of rgba instead of rgb)
nemo
parents:
2163
diff
changeset
|
188 |
|
2436 | 189 |
// mouse buttons |
190 |
{$IFDEF DARWIN} |
|
191 |
tkbdn[1]:= ((k and 1) and not (tkbdn[306] or tkbdn[305])); |
|
192 |
tkbdn[3]:= ((k and 1) and (tkbdn[306] or tkbdn[305])) or (k and 4); |
|
193 |
{$ELSE} |
|
194 |
tkbdn[1]:= (k and 1); |
|
195 |
tkbdn[3]:= ((k shr 2) and 1); |
|
196 |
{$ENDIF} |
|
197 |
tkbdn[2]:= ((k shr 1) and 1); |
|
198 |
||
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
199 |
// mouse wheels |
2436 | 200 |
tkbdn[4]:= ord(wheelDown); |
201 |
tkbdn[5]:= ord(wheelUp); |
|
202 |
wheelUp:= false; |
|
203 |
wheelDown:= false; |
|
2671
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2630
diff
changeset
|
204 |
|
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:
6580
diff
changeset
|
205 |
{$IFDEF MOBILE} |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
206 |
setiPhoneBinds(); |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
207 |
{$ELSE} |
2436 | 208 |
// Controller(s) |
209 |
k:= j; // should we test k for hitting the limit? sounds rather unlikely to ever reach it |
|
2428 | 210 |
for j:= 0 to Pred(ControllerNumControllers) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
211 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
212 |
for i:= 0 to Pred(ControllerNumAxes[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
213 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
214 |
if ControllerAxes[j][i] > 20000 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
215 |
tkbdn[k + 0]:= 1 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
216 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
217 |
tkbdn[k + 0]:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
218 |
if ControllerAxes[j][i] < -20000 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
219 |
tkbdn[k + 1]:= 1 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
220 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
221 |
tkbdn[k + 1]:= 0; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
222 |
inc(k, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
223 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
224 |
for i:= 0 to Pred(ControllerNumHats[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
225 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
226 |
tkbdn[k + 0]:= ControllerHats[j][i] and SDL_HAT_UP; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
227 |
tkbdn[k + 1]:= ControllerHats[j][i] and SDL_HAT_RIGHT; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
228 |
tkbdn[k + 2]:= ControllerHats[j][i] and SDL_HAT_DOWN; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
229 |
tkbdn[k + 3]:= ControllerHats[j][i] and SDL_HAT_LEFT; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
230 |
inc(k, 4); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
231 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
232 |
for i:= 0 to Pred(ControllerNumButtons[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
233 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
234 |
tkbdn[k]:= ControllerButtons[j][i]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
235 |
inc(k, 1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
236 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
237 |
end; |
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4531
diff
changeset
|
238 |
{$ENDIF} |
3697 | 239 |
|
4850 | 240 |
// what is this final loop for? |
2436 | 241 |
for t:= 0 to cKeyMaxIndex do |
4850 | 242 |
tkbd[t]:= tkbdn[t] |
4 | 243 |
end; |
244 |
||
245 |
procedure InitKbdKeyTable; |
|
2428 | 246 |
var i, j, k, t: LongInt; |
4 | 247 |
s: string[15]; |
248 |
begin |
|
249 |
KeyNames[1]:= 'mousel'; |
|
250 |
KeyNames[2]:= 'mousem'; |
|
251 |
KeyNames[3]:= 'mouser'; |
|
2379 | 252 |
KeyNames[4]:= 'wheelup'; |
253 |
KeyNames[5]:= 'wheeldown'; |
|
254 |
||
255 |
for i:= 6 to cKeyMaxIndex do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
256 |
begin |
4046
cfdbddc4b385
making indentation consistent (noticed while debugging)
nemo
parents:
3971
diff
changeset
|
257 |
s:= shortstring(sdl_getkeyname(i)); |
4374 | 258 |
//writeln(stdout,IntToStr(i) + ': ' + s); |
4046
cfdbddc4b385
making indentation consistent (noticed while debugging)
nemo
parents:
3971
diff
changeset
|
259 |
if s = 'unknown key' then KeyNames[i]:= '' |
cfdbddc4b385
making indentation consistent (noticed while debugging)
nemo
parents:
3971
diff
changeset
|
260 |
else |
cfdbddc4b385
making indentation consistent (noticed while debugging)
nemo
parents:
3971
diff
changeset
|
261 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
262 |
for t:= 1 to Length(s) do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
263 |
if s[t] = ' ' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
264 |
s[t]:= '_'; |
4046
cfdbddc4b385
making indentation consistent (noticed while debugging)
nemo
parents:
3971
diff
changeset
|
265 |
KeyNames[i]:= s |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
266 |
end; |
4046
cfdbddc4b385
making indentation consistent (noticed while debugging)
nemo
parents:
3971
diff
changeset
|
267 |
end; |
2613 | 268 |
|
4374 | 269 |
//for i:= 0 to cKeyMaxIndex do writeln(stdout,IntToStr(i) + ': ' + KeyNames[i]); |
167 | 270 |
|
2671
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2630
diff
changeset
|
271 |
// get the size of keyboard array |
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2630
diff
changeset
|
272 |
SDL_GetKeyState(@k); |
2436 | 273 |
|
2428 | 274 |
// Controller(s) |
275 |
for j:= 0 to Pred(ControllerNumControllers) do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
276 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
277 |
for i:= 0 to Pred(ControllerNumAxes[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
278 |
begin |
4374 | 279 |
keynames[k + 0]:= 'j' + IntToStr(j) + 'a' + IntToStr(i) + 'u'; |
280 |
keynames[k + 1]:= 'j' + IntToStr(j) + 'a' + IntToStr(i) + 'd'; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
281 |
inc(k, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
282 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
283 |
for i:= 0 to Pred(ControllerNumHats[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
284 |
begin |
4374 | 285 |
keynames[k + 0]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'u'; |
286 |
keynames[k + 1]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'r'; |
|
287 |
keynames[k + 2]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'd'; |
|
288 |
keynames[k + 3]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'l'; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
289 |
inc(k, 4); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
290 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
291 |
for i:= 0 to Pred(ControllerNumButtons[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
292 |
begin |
4374 | 293 |
keynames[k]:= 'j' + IntToStr(j) + 'b' + IntToStr(i); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
294 |
inc(k, 1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
295 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
296 |
end; |
2581 | 297 |
|
2379 | 298 |
DefaultBinds[ 27]:= 'quit'; |
299 |
DefaultBinds[ 96]:= 'history'; |
|
300 |
DefaultBinds[127]:= 'rotmask'; |
|
301 |
||
2606
ed687a8d081f
updated build files for macosx and optimization system
koda
parents:
2599
diff
changeset
|
302 |
//numpad |
ed687a8d081f
updated build files for macosx and optimization system
koda
parents:
2599
diff
changeset
|
303 |
//DefaultBinds[265]:= '+volup'; |
ed687a8d081f
updated build files for macosx and optimization system
koda
parents:
2599
diff
changeset
|
304 |
//DefaultBinds[256]:= '+voldown'; |
ed687a8d081f
updated build files for macosx and optimization system
koda
parents:
2599
diff
changeset
|
305 |
|
2379 | 306 |
DefaultBinds[KeyNameToCode('0')]:= '+volup'; |
307 |
DefaultBinds[KeyNameToCode('9')]:= '+voldown'; |
|
308 |
DefaultBinds[KeyNameToCode('c')]:= 'capture'; |
|
309 |
DefaultBinds[KeyNameToCode('h')]:= 'findhh'; |
|
310 |
DefaultBinds[KeyNameToCode('p')]:= 'pause'; |
|
311 |
DefaultBinds[KeyNameToCode('s')]:= '+speedup'; |
|
312 |
DefaultBinds[KeyNameToCode('t')]:= 'chat'; |
|
313 |
DefaultBinds[KeyNameToCode('y')]:= 'confirm'; |
|
1051
dfdd5dfe97d4
Enable fullscreen switching back, now it's bound on F12
unc0rr
parents:
1022
diff
changeset
|
314 |
|
2407
9f413bd5150e
- Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents:
2379
diff
changeset
|
315 |
DefaultBinds[KeyNameToCode('mousem')]:= 'zoomreset'; |
9f413bd5150e
- Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents:
2379
diff
changeset
|
316 |
DefaultBinds[KeyNameToCode('wheelup')]:= 'zoomout'; |
9f413bd5150e
- Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents:
2379
diff
changeset
|
317 |
DefaultBinds[KeyNameToCode('wheeldown')]:= 'zoomin'; |
9f413bd5150e
- Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents:
2379
diff
changeset
|
318 |
|
1051
dfdd5dfe97d4
Enable fullscreen switching back, now it's bound on F12
unc0rr
parents:
1022
diff
changeset
|
319 |
DefaultBinds[KeyNameToCode('f12')]:= 'fullscr'; |
dfdd5dfe97d4
Enable fullscreen switching back, now it's bound on F12
unc0rr
parents:
1022
diff
changeset
|
320 |
|
2786 | 321 |
|
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
322 |
DefaultBinds[ 1]:= '/put'; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
323 |
DefaultBinds[ 3]:= 'ammomenu'; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
324 |
DefaultBinds[ 8]:= 'hjump'; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
325 |
DefaultBinds[ 9]:= 'switch'; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
326 |
DefaultBinds[13]:= 'ljump'; |
2786 | 327 |
DefaultBinds[32]:= '+attack'; |
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:
6580
diff
changeset
|
328 |
{$IFDEF MOBILE} |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
329 |
DefaultBinds[23]:= '+up'; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
330 |
DefaultBinds[24]:= '+down'; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
331 |
DefaultBinds[25]:= '+left'; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
332 |
DefaultBinds[26]:= '+right'; |
3649 | 333 |
DefaultBinds[27]:= '+precise'; |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
334 |
DefaultBinds[44]:= 'chat'; |
2805 | 335 |
DefaultBinds[55]:= 'pause'; |
2786 | 336 |
{$ELSE} |
337 |
DefaultBinds[KeyNameToCode('up')]:= '+up'; |
|
338 |
DefaultBinds[KeyNameToCode('down')]:= '+down'; |
|
339 |
DefaultBinds[KeyNameToCode('left')]:= '+left'; |
|
340 |
DefaultBinds[KeyNameToCode('right')]:= '+right'; |
|
341 |
DefaultBinds[KeyNameToCode('left_shift')]:= '+precise'; |
|
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
342 |
{$ENDIF} |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
343 |
|
4374 | 344 |
for i:= 1 to 10 do DefaultBinds[KeyNameToCode('f'+IntToStr(i))]:= 'slot '+IntToStr(i); |
6497
2359798a8dce
Bind 1-5 in defaults. Missions really need the option to pick a team though, using default team if none supplied.
nemo
parents:
6444
diff
changeset
|
345 |
for i:= 1 to 5 do DefaultBinds[KeyNameToCode(IntToStr(i))]:= 'timer '+IntToStr(i); |
4131
e89d11f6361c
add F1-F10 to the default binds to fix weapon selection in trainings/missions and such
nemo
parents:
4046
diff
changeset
|
346 |
|
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
347 |
SetDefaultBinds(); |
4 | 348 |
end; |
349 |
||
167 | 350 |
procedure SetBinds(var binds: TBinds); |
351 |
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:
6580
diff
changeset
|
352 |
{$IFDEF MOBILE} |
3971 | 353 |
binds:= binds; // avoid hint |
3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3651
diff
changeset
|
354 |
CurrentBinds:= DefaultBinds; |
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3651
diff
changeset
|
355 |
{$ELSE} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
356 |
CurrentBinds:= binds; |
3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3651
diff
changeset
|
357 |
{$ENDIF} |
167 | 358 |
end; |
359 |
||
360 |
procedure SetDefaultBinds; |
|
361 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
362 |
CurrentBinds:= DefaultBinds; |
167 | 363 |
end; |
364 |
||
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:
6580
diff
changeset
|
365 |
{$IFDEF MOBILE} |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
366 |
procedure setiPhoneBinds; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
367 |
begin |
3523 | 368 |
tkbdn[ 1]:= ord(leftClick); |
369 |
tkbdn[ 2]:= ord(middleClick); |
|
370 |
tkbdn[ 3]:= ord(rightClick); |
|
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
371 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
372 |
tkbdn[23]:= ord(upKey); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
373 |
tkbdn[24]:= ord(downKey); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
374 |
tkbdn[25]:= ord(leftKey); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
375 |
tkbdn[26]:= ord(rightKey); |
3649 | 376 |
tkbdn[27]:= ord(preciseKey); |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
377 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
378 |
tkbdn[ 8]:= ord(backspaceKey); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
379 |
tkbdn[ 9]:= ord(tabKey); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
380 |
tkbdn[13]:= ord(enterKey); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
381 |
tkbdn[32]:= ord(spaceKey); |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
382 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
383 |
tkbdn[44]:= ord(chatAction); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
384 |
tkbdn[55]:= ord(pauseAction); |
3697 | 385 |
|
3523 | 386 |
// set to false the keys that only need one stoke |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
387 |
leftClick:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
388 |
middleClick:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
389 |
rightClick:= false; |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
390 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
391 |
tabKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
392 |
enterKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
393 |
backspaceKey:= false; |
3697 | 394 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
395 |
chatAction:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
396 |
pauseAction:= false; |
2754
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
397 |
end; |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
398 |
{$ENDIF} |
ad4f81fbfb76
touchinput works, invisible buttons added and initial support for chat
koda
parents:
2716
diff
changeset
|
399 |
|
948 | 400 |
procedure FreezeEnterKey; |
401 |
begin |
|
5100 | 402 |
tkbd[3]:= 1; |
3598 | 403 |
tkbd[13]:= 1; |
5100 | 404 |
tkbd[27]:= 1; |
3598 | 405 |
tkbd[271]:= 1; |
948 | 406 |
end; |
167 | 407 |
|
2591
c6597b65caea
other controls implementation + sdlh revisited (once again)
koda
parents:
2590
diff
changeset
|
408 |
var Controller: array [0..5] of PSDL_Joystick; |
3697 | 409 |
|
2428 | 410 |
procedure ControllerInit; |
411 |
var i, j: Integer; |
|
412 |
begin |
|
3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3651
diff
changeset
|
413 |
ControllerEnabled:= 0; |
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:
6580
diff
changeset
|
414 |
{$IFDEF MOBILE} |
3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3651
diff
changeset
|
415 |
exit; // joystick subsystem disabled on iPhone |
3513
f589230fa21b
now it's possible to select the scheme file in the ifrontendfix a type about loading an image (iphone file system IS case senstive)
koda
parents:
3493
diff
changeset
|
416 |
{$ENDIF} |
2674
2fce032f2f95
lupdate + Palewolf's updated spanish translation + other patches of mine
koda
parents:
2671
diff
changeset
|
417 |
|
3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3651
diff
changeset
|
418 |
SDL_InitSubSystem(SDL_INIT_JOYSTICK); |
2674
2fce032f2f95
lupdate + Palewolf's updated spanish translation + other patches of mine
koda
parents:
2671
diff
changeset
|
419 |
ControllerNumControllers:= SDL_NumJoysticks(); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
420 |
|
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
421 |
if ControllerNumControllers > 6 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
422 |
ControllerNumControllers:= 6; |
2428 | 423 |
|
4374 | 424 |
WriteLnToConsole('Number of game controllers: ' + IntToStr(ControllerNumControllers)); |
2428 | 425 |
|
426 |
if ControllerNumControllers > 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
427 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
428 |
for j:= 0 to pred(ControllerNumControllers) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
429 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
430 |
WriteLnToConsole('Using game controller: ' + SDL_JoystickName(j)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
431 |
Controller[j]:= SDL_JoystickOpen(j); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
432 |
if Controller[j] = nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
433 |
WriteLnToConsole('* Failed to open game controller!') |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
434 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
435 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
436 |
ControllerNumAxes[j]:= SDL_JoystickNumAxes(Controller[j]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
437 |
//ControllerNumBalls[j]:= SDL_JoystickNumBalls(Controller[j]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
438 |
ControllerNumHats[j]:= SDL_JoystickNumHats(Controller[j]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
439 |
ControllerNumButtons[j]:= SDL_JoystickNumButtons(Controller[j]); |
4374 | 440 |
WriteLnToConsole('* Number of axes: ' + IntToStr(ControllerNumAxes[j])); |
441 |
//WriteLnToConsole('* Number of balls: ' + IntToStr(ControllerNumBalls[j])); |
|
442 |
WriteLnToConsole('* Number of hats: ' + IntToStr(ControllerNumHats[j])); |
|
443 |
WriteLnToConsole('* Number of buttons: ' + IntToStr(ControllerNumButtons[j])); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
444 |
ControllerEnabled:= 1; |
3697 | 445 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
446 |
if ControllerNumAxes[j] > 20 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
447 |
ControllerNumAxes[j]:= 20; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
448 |
//if ControllerNumBalls[j] > 20 then ControllerNumBalls[j]:= 20; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
449 |
|
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
450 |
if ControllerNumHats[j] > 20 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
451 |
ControllerNumHats[j]:= 20; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
452 |
|
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
453 |
if ControllerNumButtons[j] > 20 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
454 |
ControllerNumButtons[j]:= 20; |
3697 | 455 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
456 |
// reset all buttons/axes |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
457 |
for i:= 0 to pred(ControllerNumAxes[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
458 |
ControllerAxes[j][i]:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
459 |
(*for i:= 0 to pred(ControllerNumBalls[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
460 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
461 |
ControllerBalls[j][i][0]:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
462 |
ControllerBalls[j][i][1]:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
463 |
end;*) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
464 |
for i:= 0 to pred(ControllerNumHats[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
465 |
ControllerHats[j][i]:= SDL_HAT_CENTERED; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
466 |
for i:= 0 to pred(ControllerNumButtons[j]) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
467 |
ControllerButtons[j][i]:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
468 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
469 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
470 |
// enable event generation/controller updating |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
471 |
SDL_JoystickEventState(1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
472 |
end |
3697 | 473 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
474 |
WriteLnToConsole('Not using any game controller'); |
2428 | 475 |
end; |
476 |
||
477 |
procedure ControllerClose; |
|
478 |
var j: Integer; |
|
479 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
480 |
if ControllerEnabled > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
481 |
for j:= 0 to pred(ControllerNumControllers) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
482 |
SDL_JoystickClose(Controller[j]); |
2428 | 483 |
end; |
484 |
||
485 |
procedure ControllerAxisEvent(joy, axis: Byte; value: Integer); |
|
486 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
487 |
ControllerAxes[joy][axis]:= value; |
2428 | 488 |
end; |
489 |
||
490 |
procedure ControllerHatEvent(joy, hat, value: Byte); |
|
491 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
492 |
ControllerHats[joy][hat]:= value; |
2428 | 493 |
end; |
494 |
||
495 |
procedure ControllerButtonEvent(joy, button: Byte; pressed: Boolean); |
|
496 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
497 |
if pressed then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
498 |
ControllerButtons[joy][button]:= 1 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
499 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6497
diff
changeset
|
500 |
ControllerButtons[joy][button]:= 0; |
2428 | 501 |
end; |
502 |
||
3038 | 503 |
procedure initModule; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
504 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
505 |
wheelUp:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
506 |
wheelDown:= false; |
3493 | 507 |
{$IFDEF HWLIBRARY} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
508 |
// this function is called by HW_allKeysUp so be careful |
3697 | 509 |
|
3347 | 510 |
// mouse emulation |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
511 |
leftClick:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
512 |
middleClick:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
513 |
rightClick:= false; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
514 |
|
3347 | 515 |
// arrow key emulation |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
516 |
upKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
517 |
downKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
518 |
rightKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
519 |
leftKey:= false; |
3649 | 520 |
preciseKey:= false; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
521 |
|
3347 | 522 |
// action key emulation |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
523 |
backspaceKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
524 |
spaceKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
525 |
enterKey:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
526 |
tabKey:= false; |
3347 | 527 |
|
528 |
// other key emulation |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
529 |
chatAction:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2905
diff
changeset
|
530 |
pauseAction:= false; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
531 |
{$ENDIF} |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
532 |
end; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
533 |
|
3038 | 534 |
procedure freeModule; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
535 |
begin |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
536 |
|
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2714
diff
changeset
|
537 |
end; |
4 | 538 |
|
539 |
end. |