author | unc0rr |
Sun, 14 Apr 2013 15:09:24 +0400 | |
changeset 8909 | 95542e198bc8 |
parent 8556 | 6f4c2711baa6 |
child 8833 | c13ebed437cb |
child 8912 | 78ea1839aac9 |
permissions | -rw-r--r-- |
4976 | 1 |
(* |
2 |
* Hedgewars, a free turn based strategy game |
|
6700 | 3 |
* Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com> |
4976 | 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 |
||
4413 | 19 |
{$INCLUDE "options.inc"} |
4976 | 20 |
|
4413 | 21 |
unit uCommandHandlers; |
22 |
||
23 |
interface |
|
24 |
||
25 |
procedure initModule; |
|
26 |
procedure freeModule; |
|
27 |
||
28 |
implementation |
|
7629 | 29 |
uses uCommands, uTypes, uVariables, uIO, uDebug, uConsts, uScript, uUtils, SDLh, uRandom, uCaptions |
30 |
{$IFDEF USE_VIDEO_RECORDING}, uVideoRec {$ENDIF}; |
|
4413 | 31 |
|
7028 | 32 |
var prevGState: TGameState = gsConfirm; |
8145
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8025
diff
changeset
|
33 |
cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13); |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8025
diff
changeset
|
34 |
cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0); |
7028 | 35 |
|
4531
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
36 |
procedure chGenCmd(var s: shortstring); |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
37 |
begin |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
38 |
case s[1] of |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
39 |
'R': if ReadyTimeLeft > 1 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
40 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
41 |
ReadyTimeLeft:= 1; |
7805 | 42 |
if not isExternalSource then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
43 |
SendIPC('c'+s); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
44 |
end |
4531
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
45 |
end |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
46 |
end; |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
47 |
|
4413 | 48 |
procedure chQuit(var s: shortstring); |
49 |
begin |
|
4751 | 50 |
s:= s; // avoid compiler hint |
5555
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
51 |
if (GameState = gsGame) or (GameState = gsChat) then |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
52 |
begin |
4413 | 53 |
prevGState:= GameState; |
5523 | 54 |
GameState:= gsConfirm; |
55 |
SDL_ShowCursor(1) |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
56 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
57 |
else |
5555
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
58 |
if GameState = gsConfirm then |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
59 |
begin |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
60 |
GameState:= prevGState; |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
61 |
SDL_ShowCursor(ord(isPaused)) |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
62 |
end |
4413 | 63 |
end; |
64 |
||
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4661
diff
changeset
|
65 |
procedure chForceQuit(var s: shortstring); |
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4661
diff
changeset
|
66 |
begin |
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4661
diff
changeset
|
67 |
s:= s; // avoid compiler hint |
4751 | 68 |
GameState:= gsConfirm; |
69 |
ParseCommand('confirm', true); |
|
4413 | 70 |
end; |
71 |
||
72 |
procedure chConfirm(var s: shortstring); |
|
73 |
begin |
|
4751 | 74 |
s:= s; // avoid compiler hint |
75 |
if GameState = gsConfirm then |
|
7722 | 76 |
begin |
7068 | 77 |
SendIPC(_S'Q'); |
4751 | 78 |
GameState:= gsExit |
7722 | 79 |
end |
80 |
else |
|
81 |
ParseCommand('chat team', true); |
|
4413 | 82 |
end; |
83 |
||
4751 | 84 |
procedure chHalt (var s: shortstring); |
4746
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
85 |
begin |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
86 |
s:= s; // avoid compiler hint |
7068 | 87 |
SendIPC(_S'H'); |
4746
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
88 |
GameState:= gsExit |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
89 |
end; |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
90 |
|
4413 | 91 |
procedure chCheckProto(var s: shortstring); |
8370 | 92 |
var i: LongInt; |
4413 | 93 |
begin |
6001 | 94 |
if isDeveloperMode then |
95 |
begin |
|
8370 | 96 |
i:= StrToInt(s); |
6001 | 97 |
TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old (got '+intToStr(i)+', expecting '+intToStr(cNetProtoVersion)+')', true); |
98 |
TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new (got '+intToStr(i)+', expecting '+intToStr(cNetProtoVersion)+')', true); |
|
7058 | 99 |
end |
4413 | 100 |
end; |
101 |
||
102 |
procedure chTeamLocal(var s: shortstring); |
|
103 |
begin |
|
104 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
105 |
if not isDeveloperMode then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
106 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
107 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
108 |
OutError(errmsgIncorrectUse + ' "/rdriven"', true); |
4413 | 109 |
CurrentTeam^.ExtDriven:= true |
110 |
end; |
|
111 |
||
112 |
procedure chGrave(var s: shortstring); |
|
113 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
114 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
115 |
OutError(errmsgIncorrectUse + ' "/grave"', true); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
116 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
117 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
118 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
119 |
Delete(s, byte(s[0]), 1); |
4413 | 120 |
CurrentTeam^.GraveName:= s |
121 |
end; |
|
122 |
||
123 |
procedure chFort(var s: shortstring); |
|
124 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
125 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
126 |
OutError(errmsgIncorrectUse + ' "/fort"', true); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
127 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
128 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
129 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
130 |
Delete(s, byte(s[0]), 1); |
4413 | 131 |
CurrentTeam^.FortName:= s |
132 |
end; |
|
133 |
||
134 |
procedure chFlag(var s: shortstring); |
|
135 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
136 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
137 |
OutError(errmsgIncorrectUse + ' "/flag"', true); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
138 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
139 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
140 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
141 |
Delete(s, byte(s[0]), 1); |
4413 | 142 |
CurrentTeam^.flag:= s |
143 |
end; |
|
144 |
||
145 |
procedure chScript(var s: shortstring); |
|
146 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
147 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
148 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
149 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
150 |
Delete(s, byte(s[0]), 1); |
6254
e90fb60cb46d
Force a desync if there is a script name mismatch. This avoids playing until the game desyncs due to script differences.
nemo
parents:
6245
diff
changeset
|
151 |
cScriptName:= s; |
4413 | 152 |
ScriptLoad(s) |
153 |
end; |
|
154 |
||
155 |
procedure chSetHat(var s: shortstring); |
|
156 |
begin |
|
157 |
if (not isDeveloperMode) or (CurrentTeam = nil) then exit; |
|
158 |
with CurrentTeam^ do |
|
159 |
begin |
|
160 |
if not CurrentHedgehog^.King then |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
161 |
if (s = '') |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
162 |
or (((GameFlags and gfKing) <> 0) and (s = 'crown')) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
163 |
or ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then |
4413 | 164 |
CurrentHedgehog^.Hat:= 'NoHat' |
165 |
else |
|
166 |
CurrentHedgehog^.Hat:= s |
|
167 |
end; |
|
168 |
end; |
|
169 |
||
170 |
procedure chCurU_p(var s: shortstring); |
|
171 |
begin |
|
172 |
s:= s; // avoid compiler hint |
|
173 |
CursorMovementY:= -1; |
|
174 |
end; |
|
175 |
||
176 |
procedure chCurU_m(var s: shortstring); |
|
177 |
begin |
|
178 |
s:= s; // avoid compiler hint |
|
179 |
CursorMovementY:= 0; |
|
180 |
end; |
|
181 |
||
182 |
procedure chCurD_p(var s: shortstring); |
|
183 |
begin |
|
184 |
s:= s; // avoid compiler hint |
|
185 |
CursorMovementY:= 1; |
|
186 |
end; |
|
187 |
||
188 |
procedure chCurD_m(var s: shortstring); |
|
189 |
begin |
|
190 |
s:= s; // avoid compiler hint |
|
191 |
CursorMovementY:= 0; |
|
192 |
end; |
|
193 |
||
194 |
procedure chCurL_p(var s: shortstring); |
|
195 |
begin |
|
196 |
s:= s; // avoid compiler hint |
|
197 |
CursorMovementX:= -1; |
|
198 |
end; |
|
199 |
||
200 |
procedure chCurL_m(var s: shortstring); |
|
201 |
begin |
|
202 |
s:= s; // avoid compiler hint |
|
203 |
CursorMovementX:= 0; |
|
204 |
end; |
|
205 |
||
206 |
procedure chCurR_p(var s: shortstring); |
|
207 |
begin |
|
208 |
s:= s; // avoid compiler hint |
|
209 |
CursorMovementX:= 1; |
|
210 |
end; |
|
211 |
||
212 |
procedure chCurR_m(var s: shortstring); |
|
213 |
begin |
|
214 |
s:= s; // avoid compiler hint |
|
215 |
CursorMovementX:= 0; |
|
216 |
end; |
|
217 |
||
218 |
procedure chLeft_p(var s: shortstring); |
|
219 |
begin |
|
220 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
221 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
222 |
exit; |
7805 | 223 |
if not isExternalSource then |
7068 | 224 |
SendIPC(_S'L'); |
4413 | 225 |
bShowFinger:= false; |
226 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
227 |
Message:= Message or (gmLeft and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
228 |
ScriptCall('onLeft'); |
4413 | 229 |
end; |
230 |
||
231 |
procedure chLeft_m(var s: shortstring); |
|
232 |
begin |
|
233 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
234 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
235 |
exit; |
7805 | 236 |
if not isExternalSource then |
7068 | 237 |
SendIPC(_S'l'); |
4413 | 238 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
239 |
Message:= Message and (not (gmLeft and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
240 |
ScriptCall('onLeftUp'); |
4413 | 241 |
end; |
242 |
||
243 |
procedure chRight_p(var s: shortstring); |
|
244 |
begin |
|
245 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
246 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
247 |
exit; |
7805 | 248 |
if not isExternalSource then |
7068 | 249 |
SendIPC(_S'R'); |
4413 | 250 |
bShowFinger:= false; |
251 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
252 |
Message:= Message or (gmRight and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
253 |
ScriptCall('onRight'); |
4413 | 254 |
end; |
255 |
||
256 |
procedure chRight_m(var s: shortstring); |
|
257 |
begin |
|
258 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
259 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
260 |
exit; |
7805 | 261 |
if not isExternalSource then |
7068 | 262 |
SendIPC(_S'r'); |
4413 | 263 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
264 |
Message:= Message and (not (gmRight and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
265 |
ScriptCall('onRightUp'); |
4413 | 266 |
end; |
267 |
||
268 |
procedure chUp_p(var s: shortstring); |
|
269 |
begin |
|
270 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
271 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
272 |
exit; |
7805 | 273 |
if not isExternalSource then |
7068 | 274 |
SendIPC(_S'U'); |
4413 | 275 |
bShowFinger:= false; |
276 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
277 |
Message:= Message or (gmUp and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
278 |
ScriptCall('onUp'); |
4413 | 279 |
end; |
280 |
||
281 |
procedure chUp_m(var s: shortstring); |
|
282 |
begin |
|
283 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
284 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
285 |
exit; |
7805 | 286 |
if not isExternalSource then |
7068 | 287 |
SendIPC(_S'u'); |
4413 | 288 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
289 |
Message:= Message and (not (gmUp and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
290 |
ScriptCall('onUpUp'); |
4413 | 291 |
end; |
292 |
||
293 |
procedure chDown_p(var s: shortstring); |
|
294 |
begin |
|
295 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
296 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
297 |
exit; |
7805 | 298 |
if not isExternalSource then |
7068 | 299 |
SendIPC(_S'D'); |
4413 | 300 |
bShowFinger:= false; |
301 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
302 |
Message:= Message or (gmDown and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
303 |
ScriptCall('onDown'); |
4413 | 304 |
end; |
305 |
||
306 |
procedure chDown_m(var s: shortstring); |
|
307 |
begin |
|
308 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
309 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
310 |
exit; |
7805 | 311 |
if not isExternalSource then |
7068 | 312 |
SendIPC(_S'd'); |
4413 | 313 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
314 |
Message:= Message and (not (gmDown and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
315 |
ScriptCall('onDownUp'); |
4413 | 316 |
end; |
317 |
||
318 |
procedure chPrecise_p(var s: shortstring); |
|
319 |
begin |
|
320 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
321 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
322 |
exit; |
7805 | 323 |
if not isExternalSource then |
7068 | 324 |
SendIPC(_S'Z'); |
4413 | 325 |
bShowFinger:= false; |
326 |
with CurrentHedgehog^.Gear^ do |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
327 |
Message:= Message or (gmPrecise and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
328 |
ScriptCall('onPrecise'); |
4413 | 329 |
end; |
330 |
||
331 |
procedure chPrecise_m(var s: shortstring); |
|
332 |
begin |
|
333 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
334 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
335 |
exit; |
7805 | 336 |
if not isExternalSource then |
7068 | 337 |
SendIPC(_S'z'); |
4413 | 338 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
339 |
Message:= Message and (not (gmPrecise and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
340 |
ScriptCall('onPreciseUp'); |
4413 | 341 |
end; |
342 |
||
343 |
procedure chLJump(var s: shortstring); |
|
344 |
begin |
|
345 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
346 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
347 |
exit; |
7805 | 348 |
if not isExternalSource then |
7068 | 349 |
SendIPC(_S'j'); |
4413 | 350 |
bShowFinger:= false; |
351 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
352 |
Message:= Message or (gmLJump and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
353 |
ScriptCall('onLJump'); |
4413 | 354 |
end; |
355 |
||
356 |
procedure chHJump(var s: shortstring); |
|
357 |
begin |
|
358 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
359 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
360 |
exit; |
7805 | 361 |
if not isExternalSource then |
7068 | 362 |
SendIPC(_S'J'); |
4413 | 363 |
bShowFinger:= false; |
364 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
365 |
Message:= Message or (gmHJump and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
366 |
ScriptCall('onHJump'); |
4413 | 367 |
end; |
368 |
||
369 |
procedure chAttack_p(var s: shortstring); |
|
370 |
begin |
|
371 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
372 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
373 |
exit; |
4413 | 374 |
bShowFinger:= false; |
375 |
with CurrentHedgehog^.Gear^ do |
|
376 |
begin |
|
4900 | 377 |
AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State)); |
4413 | 378 |
if ((State and gstHHDriven) <> 0) then |
379 |
begin |
|
380 |
FollowGear:= CurrentHedgehog^.Gear; |
|
7805 | 381 |
if not isExternalSource then |
7068 | 382 |
SendIPC(_S'A'); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
383 |
Message:= Message or (gmAttack and InputMask); |
5247 | 384 |
ScriptCall('onAttack'); |
4413 | 385 |
end |
386 |
end |
|
387 |
end; |
|
388 |
||
389 |
procedure chAttack_m(var s: shortstring); |
|
390 |
begin |
|
391 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
392 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
393 |
exit; |
4413 | 394 |
with CurrentHedgehog^.Gear^ do |
395 |
begin |
|
7805 | 396 |
if not isExternalSource and |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
397 |
((Message and gmAttack) <> 0) then |
7068 | 398 |
SendIPC(_S'a'); |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
399 |
Message:= Message and (not (gmAttack and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
400 |
ScriptCall('onAttackUp'); |
4413 | 401 |
end |
402 |
end; |
|
403 |
||
404 |
procedure chSwitch(var s: shortstring); |
|
405 |
begin |
|
406 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
407 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
408 |
exit; |
7805 | 409 |
if not isExternalSource then |
7068 | 410 |
SendIPC(_S'S'); |
4413 | 411 |
bShowFinger:= false; |
412 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
413 |
Message:= Message or (gmSwitch and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
414 |
ScriptCall('onSwitch'); |
4413 | 415 |
end; |
416 |
||
417 |
procedure chNextTurn(var s: shortstring); |
|
7671 | 418 |
var gi: PGear; |
4413 | 419 |
begin |
420 |
s:= s; // avoid compiler hint |
|
7103 | 421 |
|
4413 | 422 |
TryDo(AllInactive, '/nextturn called when not all gears are inactive', true); |
423 |
||
7389
15c3fb4882df
Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents:
7218
diff
changeset
|
424 |
CheckSum:= CheckSum xor GameTicks; |
7104 | 425 |
gi := GearsList; |
426 |
while gi <> nil do |
|
427 |
begin |
|
7389
15c3fb4882df
Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents:
7218
diff
changeset
|
428 |
with gi^ do CheckSum:= CheckSum xor X.round xor X.frac xor dX.round xor dX.frac xor Y.round xor Y.frac xor dY.round xor dY.frac; |
15c3fb4882df
Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents:
7218
diff
changeset
|
429 |
AddRandomness(CheckSum); |
7104 | 430 |
gi := gi^.NextGear |
431 |
end; |
|
7103 | 432 |
|
7805 | 433 |
if not isExternalSource then |
7103 | 434 |
begin |
435 |
s[0]:= #5; |
|
436 |
s[1]:= 'N'; |
|
7389
15c3fb4882df
Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents:
7218
diff
changeset
|
437 |
SDLNet_Write32(CheckSum, @s[2]); |
7103 | 438 |
SendIPC(s) |
439 |
end |
|
440 |
else |
|
7831 | 441 |
TryDo(CurrentTeam^.hasGone or (CheckSum = lastTurnChecksum), 'Desync detected', true); |
442 |
||
7187
aff30d80bd7b
- Allow camera movement while current hedgehog is falling
unc0rr
parents:
7151
diff
changeset
|
443 |
AddFileLog('Next turn: time '+inttostr(GameTicks)); |
4413 | 444 |
end; |
445 |
||
446 |
procedure chTimer(var s: shortstring); |
|
447 |
begin |
|
7790 | 448 |
if CheckNoTeamOrHH then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
449 |
exit; |
4413 | 450 |
|
7790 | 451 |
TryDo((s[0] = #1) and (s[1] >= '1') and (s[1] <= '5'), 'Malformed /timer', true); |
452 |
||
7805 | 453 |
if not isExternalSource then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
454 |
SendIPC(s); |
4413 | 455 |
bShowFinger:= false; |
456 |
with CurrentHedgehog^.Gear^ do |
|
457 |
begin |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
458 |
Message:= Message or (gmTimer and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
459 |
MsgParam:= byte(s[1]) - ord('0'); |
6818
136aa9c8c593
Add the parameters I missed the first time when I added these hooks.
mikade
parents:
6700
diff
changeset
|
460 |
ScriptCall('onTimer', MsgParam); |
4413 | 461 |
end |
462 |
end; |
|
463 |
||
464 |
procedure chSlot(var s: shortstring); |
|
465 |
var slot: LongWord; |
|
7068 | 466 |
ss: shortstring; |
4413 | 467 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
468 |
if (s[0] <> #1) or CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
469 |
exit; |
4413 | 470 |
slot:= byte(s[1]) - 49; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
471 |
if slot > cMaxSlotIndex then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
472 |
exit; |
7805 | 473 |
if not isExternalSource then |
7068 | 474 |
begin |
475 |
ss[0]:= #1; |
|
476 |
ss[1]:= char(byte(s[1]) + 79); |
|
477 |
SendIPC(ss); |
|
478 |
end; |
|
4413 | 479 |
bShowFinger:= false; |
480 |
with CurrentHedgehog^.Gear^ do |
|
481 |
begin |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
482 |
Message:= Message or (gmSlot and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
483 |
MsgParam:= slot; |
6818
136aa9c8c593
Add the parameters I missed the first time when I added these hooks.
mikade
parents:
6700
diff
changeset
|
484 |
ScriptCall('onSlot', MsgParam); |
4413 | 485 |
end |
486 |
end; |
|
487 |
||
488 |
procedure chSetWeapon(var s: shortstring); |
|
489 |
begin |
|
7790 | 490 |
if CheckNoTeamOrHH then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
491 |
exit; |
4413 | 492 |
|
7790 | 493 |
TryDo((s[0] = #1) and (s[1] <= char(High(TAmmoType))), 'Malformed /setweap', true); |
4413 | 494 |
|
7805 | 495 |
if not isExternalSource then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
496 |
SendIPC('w' + s); |
4413 | 497 |
|
498 |
with CurrentHedgehog^.Gear^ do |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
499 |
begin |
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
500 |
Message:= Message or (gmWeapon and InputMask); |
4413 | 501 |
MsgParam:= byte(s[1]); |
6818
136aa9c8c593
Add the parameters I missed the first time when I added these hooks.
mikade
parents:
6700
diff
changeset
|
502 |
ScriptCall('onSetWeapon', MsgParam); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
503 |
end; |
4413 | 504 |
end; |
505 |
||
506 |
procedure chTaunt(var s: shortstring); |
|
507 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
508 |
if (s[0] <> #1) or CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
509 |
exit; |
4413 | 510 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
511 |
if TWave(s[1]) > High(TWave) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
512 |
exit; |
4413 | 513 |
|
7805 | 514 |
if not isExternalSource then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
515 |
SendIPC('t' + s); |
4413 | 516 |
|
517 |
with CurrentHedgehog^.Gear^ do |
|
518 |
begin |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
519 |
Message:= Message or (gmAnimate and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
520 |
MsgParam:= byte(s[1]) ; |
6818
136aa9c8c593
Add the parameters I missed the first time when I added these hooks.
mikade
parents:
6700
diff
changeset
|
521 |
ScriptCall('onTaunt', MsgParam); |
4413 | 522 |
end |
523 |
end; |
|
524 |
||
525 |
procedure chPut(var s: shortstring); |
|
526 |
begin |
|
527 |
s:= s; // avoid compiler hint |
|
528 |
doPut(0, 0, false); |
|
529 |
end; |
|
530 |
||
531 |
procedure chCapture(var s: shortstring); |
|
532 |
begin |
|
533 |
s:= s; // avoid compiler hint |
|
534 |
flagMakeCapture:= true |
|
535 |
end; |
|
536 |
||
7629 | 537 |
procedure chRecord(var s: shortstring); |
538 |
begin |
|
539 |
s:= s; // avoid compiler hint |
|
540 |
{$IFDEF USE_VIDEO_RECORDING} |
|
541 |
if flagPrerecording then |
|
542 |
StopPreRecording() |
|
543 |
else |
|
544 |
BeginPreRecording(); |
|
545 |
{$ENDIF} |
|
546 |
end; |
|
547 |
||
4413 | 548 |
procedure chSetMap(var s: shortstring); |
549 |
begin |
|
5679
505c6448069b
accidentally reverted this when reverting the rest of the override changes.
nemo
parents:
5555
diff
changeset
|
550 |
if isDeveloperMode then |
6088 | 551 |
begin |
6339 | 552 |
if s = '' then |
8025 | 553 |
cPathz[ptMapCurrent]:= s |
6339 | 554 |
else |
8025 | 555 |
cPathz[ptMapCurrent]:= cPathz[ptMaps] + '/' + s; |
6088 | 556 |
InitStepsFlags:= InitStepsFlags or cifMap |
557 |
end; |
|
6828
6a5d33bff0b0
At mikade's request. give scripting access to the map name prior to override.
nemo
parents:
6818
diff
changeset
|
558 |
cMapName:= s; |
6245 | 559 |
ScriptLoad('Maps/' + s + '/map.lua') |
4413 | 560 |
end; |
561 |
||
562 |
procedure chSetTheme(var s: shortstring); |
|
563 |
begin |
|
564 |
if isDeveloperMode then |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
565 |
begin |
8025 | 566 |
cPathz[ptCurrTheme]:= cPathz[ptThemes] + '/' + s; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
567 |
Theme:= s; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
568 |
InitStepsFlags:= InitStepsFlags or cifTheme |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
569 |
end |
4413 | 570 |
end; |
571 |
||
572 |
procedure chSetSeed(var s: shortstring); |
|
573 |
begin |
|
574 |
if isDeveloperMode then |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
575 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
576 |
SetRandomSeed(s); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
577 |
cSeed:= s; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
578 |
InitStepsFlags:= InitStepsFlags or cifRandomize |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
579 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
580 |
end; |
4413 | 581 |
|
582 |
procedure chAmmoMenu(var s: shortstring); |
|
583 |
begin |
|
584 |
s:= s; // avoid compiler hint |
|
585 |
if CheckNoTeamOrHH then |
|
586 |
bShowAmmoMenu:= true |
|
587 |
else |
|
588 |
begin |
|
589 |
with CurrentTeam^ do |
|
590 |
with Hedgehogs[CurrHedgehog] do |
|
591 |
begin |
|
592 |
bSelected:= false; |
|
593 |
||
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
594 |
if bShowAmmoMenu then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
595 |
bShowAmmoMenu:= false |
7946
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7831
diff
changeset
|
596 |
else if not(CurrentTeam^.Extdriven) and (((Gear^.State and (gstAttacking or gstAttacked)) <> 0) |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7831
diff
changeset
|
597 |
or ((Gear^.State and gstHHDriven) = 0)) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
598 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
599 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
600 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
601 |
bShowAmmoMenu:= true |
4413 | 602 |
end; |
603 |
end |
|
604 |
end; |
|
605 |
||
606 |
procedure chVol_p(var s: shortstring); |
|
607 |
begin |
|
608 |
s:= s; // avoid compiler hint |
|
609 |
inc(cVolumeDelta, 3) |
|
610 |
end; |
|
611 |
||
612 |
procedure chVol_m(var s: shortstring); |
|
613 |
begin |
|
614 |
s:= s; // avoid compiler hint |
|
615 |
dec(cVolumeDelta, 3) |
|
616 |
end; |
|
617 |
||
618 |
procedure chFindhh(var s: shortstring); |
|
619 |
begin |
|
620 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
621 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
622 |
exit; |
5247 | 623 |
|
7629 | 624 |
if autoCameraOn then |
5247 | 625 |
begin |
7629 | 626 |
FollowGear:= nil; |
5247 | 627 |
AddCaption('Auto Camera Off', $CCCCCC, capgrpVolume); |
628 |
autoCameraOn:= false |
|
629 |
end |
|
7629 | 630 |
else |
631 |
begin |
|
5247 | 632 |
AddCaption('Auto Camera On', $CCCCCC, capgrpVolume); |
633 |
bShowFinger:= true; |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
634 |
if not CurrentHedgehog^.Unplaced then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
635 |
FollowGear:= CurrentHedgehog^.Gear; |
5247 | 636 |
autoCameraOn:= true |
637 |
end |
|
4413 | 638 |
end; |
639 |
||
640 |
procedure chPause(var s: shortstring); |
|
641 |
begin |
|
642 |
s:= s; // avoid compiler hint |
|
643 |
if gameType <> gmtNet then |
|
644 |
isPaused:= not isPaused; |
|
5524
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
645 |
|
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
646 |
if isPaused then |
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
647 |
SDL_ShowCursor(1) |
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
648 |
else |
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
649 |
SDL_ShowCursor(ord(GameState = gsConfirm)) |
4413 | 650 |
end; |
651 |
||
652 |
procedure chRotateMask(var s: shortstring); |
|
653 |
begin |
|
654 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
655 |
if ((GameFlags and gfInvulnerable) = 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
656 |
cTagsMask:= cTagsMasks[cTagsMask] |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
657 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
658 |
cTagsMask:= cTagsMasksNoHealth[cTagsMask]; |
4413 | 659 |
end; |
660 |
||
661 |
procedure chSpeedup_p(var s: shortstring); |
|
662 |
begin |
|
663 |
s:= s; // avoid compiler hint |
|
7629 | 664 |
SpeedStart:= RealTicks; |
4413 | 665 |
isSpeed:= true |
666 |
end; |
|
667 |
||
668 |
procedure chSpeedup_m(var s: shortstring); |
|
669 |
begin |
|
670 |
s:= s; // avoid compiler hint |
|
671 |
isSpeed:= false |
|
672 |
end; |
|
673 |
||
674 |
procedure chZoomIn(var s: shortstring); |
|
675 |
begin |
|
676 |
s:= s; // avoid compiler hint |
|
677 |
if ZoomValue < cMinZoomLevel then |
|
678 |
ZoomValue:= ZoomValue + cZoomDelta; |
|
679 |
end; |
|
680 |
||
681 |
procedure chZoomOut(var s: shortstring); |
|
682 |
begin |
|
683 |
s:= s; // avoid compiler hint |
|
684 |
if ZoomValue > cMaxZoomLevel then |
|
685 |
ZoomValue:= ZoomValue - cZoomDelta; |
|
686 |
end; |
|
687 |
||
688 |
procedure chZoomReset(var s: shortstring); |
|
689 |
begin |
|
690 |
s:= s; // avoid compiler hint |
|
691 |
ZoomValue:= cDefaultZoomLevel; |
|
692 |
end; |
|
693 |
||
6898 | 694 |
procedure chMapGen(var s: shortstring); |
695 |
begin |
|
7151 | 696 |
cMapGen:= StrToInt(s) |
6898 | 697 |
end; |
698 |
||
699 |
procedure chTemplateFilter(var s: shortstring); |
|
700 |
begin |
|
7151 | 701 |
cTemplateFilter:= StrToInt(s) |
6898 | 702 |
end; |
703 |
||
704 |
procedure chInactDelay(var s: shortstring); |
|
705 |
begin |
|
7151 | 706 |
cInactDelay:= StrToInt(s) |
6898 | 707 |
end; |
708 |
||
709 |
procedure chReadyDelay(var s: shortstring); |
|
710 |
begin |
|
7151 | 711 |
cReadyDelay:= StrToInt(s) |
6898 | 712 |
end; |
713 |
||
714 |
procedure chCaseFactor(var s: shortstring); |
|
715 |
begin |
|
7151 | 716 |
cCaseFactor:= StrToInt(s) |
6898 | 717 |
end; |
718 |
||
719 |
procedure chHealthCaseProb(var s: shortstring); |
|
720 |
begin |
|
7151 | 721 |
cHealthCaseProb:= StrToInt(s) |
6898 | 722 |
end; |
723 |
||
724 |
procedure chHealthCaseAmount(var s: shortstring); |
|
725 |
begin |
|
7151 | 726 |
cHealthCaseAmount:= StrToInt(s) |
6898 | 727 |
end; |
728 |
||
729 |
procedure chSuddenDTurns(var s: shortstring); |
|
730 |
begin |
|
7151 | 731 |
cSuddenDTurns:= StrToInt(s) |
6898 | 732 |
end; |
733 |
||
734 |
procedure chWaterRise(var s: shortstring); |
|
735 |
begin |
|
7151 | 736 |
cWaterRise:= StrToInt(s) |
6898 | 737 |
end; |
738 |
||
739 |
procedure chHealthDecrease(var s: shortstring); |
|
740 |
begin |
|
7151 | 741 |
cHealthDecrease:= StrToInt(s) |
6898 | 742 |
end; |
743 |
||
744 |
procedure chDamagePercent(var s: shortstring); |
|
745 |
begin |
|
7151 | 746 |
cDamagePercent:= StrToInt(s) |
6898 | 747 |
end; |
748 |
||
749 |
procedure chRopePercent(var s: shortstring); |
|
750 |
begin |
|
7151 | 751 |
cRopePercent:= StrToInt(s) |
6898 | 752 |
end; |
753 |
||
754 |
procedure chGetAwayTime(var s: shortstring); |
|
755 |
begin |
|
7151 | 756 |
cGetAwayTime:= StrToInt(s) |
6898 | 757 |
end; |
758 |
||
759 |
procedure chMineDudPercent(var s: shortstring); |
|
760 |
begin |
|
7151 | 761 |
cMineDudPercent:= StrToInt(s) |
6898 | 762 |
end; |
763 |
||
764 |
procedure chLandMines(var s: shortstring); |
|
765 |
begin |
|
7151 | 766 |
cLandMines:= StrToInt(s) |
6898 | 767 |
end; |
768 |
||
769 |
procedure chExplosives(var s: shortstring); |
|
770 |
begin |
|
7151 | 771 |
cExplosives:= StrToInt(s) |
6898 | 772 |
end; |
773 |
||
774 |
procedure chGameFlags(var s: shortstring); |
|
775 |
begin |
|
7218
9ecd5bc9810b
Ensure that Clan ammo always takes precedence over Per Hog Ammo in the flags. It'd be best for the user sake if these buttons acted more like radio buttons.
nemo
parents:
7187
diff
changeset
|
776 |
GameFlags:= StrToInt(s); |
7629 | 777 |
if GameFlags and gfSharedAmmo <> 0 then GameFlags:= GameFlags and (not gfPerHogAmmo) |
6898 | 778 |
end; |
779 |
||
780 |
procedure chHedgehogTurnTime(var s: shortstring); |
|
781 |
begin |
|
7151 | 782 |
cHedgehogTurnTime:= StrToInt(s) |
6898 | 783 |
end; |
784 |
||
785 |
procedure chMinesTime(var s: shortstring); |
|
786 |
begin |
|
7151 | 787 |
cMinesTime:= StrToInt(s) |
6898 | 788 |
end; |
789 |
||
790 |
procedure chFastUntilLag(var s: shortstring); |
|
791 |
begin |
|
7151 | 792 |
fastUntilLag:= StrToInt(s) <> 0 |
6898 | 793 |
end; |
4413 | 794 |
|
7201
dc17ffdf0702
The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
7187
diff
changeset
|
795 |
procedure chCampVar(var s:shortstring); |
dc17ffdf0702
The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
7187
diff
changeset
|
796 |
begin |
dc17ffdf0702
The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
7187
diff
changeset
|
797 |
CampaignVariable := s; |
dc17ffdf0702
The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
7187
diff
changeset
|
798 |
end; |
dc17ffdf0702
The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
7187
diff
changeset
|
799 |
|
4413 | 800 |
procedure initModule; |
801 |
begin |
|
4528
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
802 |
//////// Begin top sorted by freq analysis not including chatmsg |
7407 | 803 |
RegisterVariable('+right' , @chRight_p , false, true); |
804 |
RegisterVariable('-right' , @chRight_m , false, true); |
|
805 |
RegisterVariable('+up' , @chUp_p , false, true); |
|
806 |
RegisterVariable('-up' , @chUp_m , false, true); |
|
807 |
RegisterVariable('+left' , @chLeft_p , false, true); |
|
808 |
RegisterVariable('-left' , @chLeft_m , false, true); |
|
7629 | 809 |
RegisterVariable('+attack' , @chAttack_p , false); |
7407 | 810 |
RegisterVariable('+down' , @chDown_p , false, true); |
811 |
RegisterVariable('-down' , @chDown_m , false, true); |
|
812 |
RegisterVariable('hjump' , @chHJump , false, true); |
|
813 |
RegisterVariable('ljump' , @chLJump , false, true); |
|
7629 | 814 |
RegisterVariable('nextturn', @chNextTurn , false); |
815 |
RegisterVariable('-attack' , @chAttack_m , false); |
|
816 |
RegisterVariable('slot' , @chSlot , false); |
|
7407 | 817 |
RegisterVariable('setweap' , @chSetWeapon , false, true); |
4528
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
818 |
//////// End top by freq analysis |
7629 | 819 |
RegisterVariable('gencmd' , @chGenCmd , false); |
6898 | 820 |
RegisterVariable('flag' , @chFlag , false); |
821 |
RegisterVariable('script' , @chScript , false); |
|
822 |
RegisterVariable('proto' , @chCheckProto , true ); |
|
823 |
RegisterVariable('spectate', @chFastUntilLag , false); |
|
824 |
RegisterVariable('capture' , @chCapture , true ); |
|
825 |
RegisterVariable('rotmask' , @chRotateMask , true ); |
|
826 |
RegisterVariable('rdriven' , @chTeamLocal , false); |
|
827 |
RegisterVariable('map' , @chSetMap , false); |
|
828 |
RegisterVariable('theme' , @chSetTheme , false); |
|
829 |
RegisterVariable('seed' , @chSetSeed , false); |
|
830 |
RegisterVariable('template_filter', @chTemplateFilter, false); |
|
831 |
RegisterVariable('mapgen' , @chMapGen , false); |
|
832 |
RegisterVariable('maze_size',@chTemplateFilter, false); |
|
833 |
RegisterVariable('delay' , @chInactDelay , false); |
|
834 |
RegisterVariable('ready' , @chReadyDelay , false); |
|
835 |
RegisterVariable('casefreq', @chCaseFactor , false); |
|
836 |
RegisterVariable('healthprob', @chHealthCaseProb, false); |
|
837 |
RegisterVariable('hcaseamount', @chHealthCaseAmount, false); |
|
838 |
RegisterVariable('sd_turns', @chSuddenDTurns , false); |
|
839 |
RegisterVariable('waterrise', @chWaterRise , false); |
|
840 |
RegisterVariable('healthdec', @chHealthDecrease, false); |
|
841 |
RegisterVariable('damagepct',@chDamagePercent , false); |
|
842 |
RegisterVariable('ropepct' , @chRopePercent , false); |
|
843 |
RegisterVariable('getawaytime' , @chGetAwayTime , false); |
|
844 |
RegisterVariable('minedudpct',@chMineDudPercent, false); |
|
845 |
RegisterVariable('minesnum', @chLandMines , false); |
|
846 |
RegisterVariable('explosives',@chExplosives , false); |
|
847 |
RegisterVariable('gmflags' , @chGameFlags , false); |
|
848 |
RegisterVariable('turntime', @chHedgehogTurnTime, false); |
|
849 |
RegisterVariable('minestime',@chMinesTime , false); |
|
850 |
RegisterVariable('fort' , @chFort , false); |
|
851 |
RegisterVariable('grave' , @chGrave , false); |
|
852 |
RegisterVariable('hat' , @chSetHat , false); |
|
853 |
RegisterVariable('quit' , @chQuit , true ); |
|
854 |
RegisterVariable('forcequit', @chForceQuit , true ); |
|
855 |
RegisterVariable('confirm' , @chConfirm , true ); |
|
856 |
RegisterVariable('halt', @chHalt , true ); |
|
857 |
RegisterVariable('+speedup', @chSpeedup_p , true ); |
|
858 |
RegisterVariable('-speedup', @chSpeedup_m , true ); |
|
859 |
RegisterVariable('zoomin' , @chZoomIn , true ); |
|
860 |
RegisterVariable('zoomout' , @chZoomOut , true ); |
|
861 |
RegisterVariable('zoomreset',@chZoomReset , true ); |
|
862 |
RegisterVariable('ammomenu', @chAmmoMenu , true); |
|
7629 | 863 |
RegisterVariable('+precise', @chPrecise_p , false, true); |
864 |
RegisterVariable('-precise', @chPrecise_m , false, true); |
|
6898 | 865 |
RegisterVariable('switch' , @chSwitch , false); |
7629 | 866 |
RegisterVariable('timer' , @chTimer , false, true); |
6898 | 867 |
RegisterVariable('taunt' , @chTaunt , false); |
868 |
RegisterVariable('put' , @chPut , false); |
|
869 |
RegisterVariable('+volup' , @chVol_p , true ); |
|
870 |
RegisterVariable('-volup' , @chVol_m , true ); |
|
871 |
RegisterVariable('+voldown', @chVol_m , true ); |
|
872 |
RegisterVariable('-voldown', @chVol_p , true ); |
|
7404 | 873 |
RegisterVariable('findhh' , @chFindhh , true ); |
6898 | 874 |
RegisterVariable('pause' , @chPause , true ); |
875 |
RegisterVariable('+cur_u' , @chCurU_p , true ); |
|
876 |
RegisterVariable('-cur_u' , @chCurU_m , true ); |
|
877 |
RegisterVariable('+cur_d' , @chCurD_p , true ); |
|
878 |
RegisterVariable('-cur_d' , @chCurD_m , true ); |
|
879 |
RegisterVariable('+cur_l' , @chCurL_p , true ); |
|
880 |
RegisterVariable('-cur_l' , @chCurL_m , true ); |
|
881 |
RegisterVariable('+cur_r' , @chCurR_p , true ); |
|
882 |
RegisterVariable('-cur_r' , @chCurR_m , true ); |
|
7201
dc17ffdf0702
The first campaign commit with a lot of changes...
belphegorr <szabibibi@gmail.com>
parents:
7187
diff
changeset
|
883 |
RegisterVariable('campvar' , @chCampVar , true ); |
7629 | 884 |
RegisterVariable('record' , @chRecord , true ); |
4413 | 885 |
end; |
886 |
||
887 |
procedure freeModule; |
|
888 |
begin |
|
889 |
end; |
|
890 |
||
891 |
end. |