author | Xeli |
Wed, 14 Sep 2011 18:43:16 +0200 | |
branch | hedgeroid |
changeset 5826 | 2a2cce052b4d |
parent 5824 | 2e5835130d9a |
child 6328 | d14adf1c7721 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
4976 | 3 |
* Copyright (c) 2004-2011 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 uGame; |
22 |
interface |
|
23 |
||
371 | 24 |
procedure DoGameTick(Lag: LongInt); |
4 | 25 |
|
26 |
//////////////////// |
|
27 |
implementation |
|
28 |
//////////////////// |
|
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5357
diff
changeset
|
29 |
uses uKeys, uTeams, uIO, uAI, uGears, uSound, uMobile, uVisualGears, uTypes, uVariables, uTouch; |
4 | 30 |
|
371 | 31 |
procedure DoGameTick(Lag: LongInt); |
32 |
var i: LongInt; |
|
4 | 33 |
begin |
281
5b483aa9f2ab
Pause support (mouse cursor is released when the game is paused)
unc0rr
parents:
196
diff
changeset
|
34 |
if isPaused then exit; |
1611 | 35 |
if (not CurrentTeam^.ExtDriven) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2814
diff
changeset
|
36 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2814
diff
changeset
|
37 |
NetGetNextCmd; // its for the case of receiving "/say" message |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2814
diff
changeset
|
38 |
isInLag:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2814
diff
changeset
|
39 |
SendKeepAliveMessage(Lag) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2814
diff
changeset
|
40 |
end; |
72 | 41 |
if Lag > 100 then Lag:= 100 |
1727 | 42 |
else if (GameType = gmtSave) or (fastUntilLag and (GameType = gmtNet)) then Lag:= 2500; |
5130
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
4976
diff
changeset
|
43 |
|
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
4976
diff
changeset
|
44 |
if (GameType = gmtDemo) then |
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
4976
diff
changeset
|
45 |
if isSpeed then Lag:= Lag * 10 |
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
4976
diff
changeset
|
46 |
else |
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
4976
diff
changeset
|
47 |
if cOnlyStats then Lag:= High(LongInt); |
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5357
diff
changeset
|
48 |
PlayNextVoice; |
89 | 49 |
i:= 1; |
50 |
while (GameState <> gsExit) and (i <= Lag) do |
|
51 |
begin |
|
351 | 52 |
if not CurrentTeam^.ExtDriven then |
4 | 53 |
begin |
602 | 54 |
if CurrentHedgehog^.BotLevel <> 0 then ProcessBot; |
5605
31bd6e30df02
Added a hook to uGame which now allows uTouch to take action outside of SDL_Finger* events
Xeli
parents:
5599
diff
changeset
|
55 |
ProcessGears; |
5599
2e4b90f33a83
aiming fixed, inverted cursor on ammo menu, added equal and isZero function to uFloat, changed the way ammo menu opens, you must now click on the hog rather than anywhere on the screen
Xeli
parents:
5357
diff
changeset
|
56 |
ProcessTouch; |
4 | 57 |
end else |
58 |
begin |
|
59 |
NetGetNextCmd; |
|
60 |
if isInLag then |
|
61 |
case GameType of |
|
4075 | 62 |
gmtNet: begin |
63 |
// just update the health bars |
|
64 |
AddVisualGear(0, 0, vgtTeamHealthSorter); |
|
65 |
break; |
|
66 |
end; |
|
4 | 67 |
gmtDemo: begin |
68 |
GameState:= gsExit; |
|
69 |
exit |
|
72 | 70 |
end; |
71 |
gmtSave: begin |
|
72 |
RestoreTeamsFromSave; |
|
519 | 73 |
SetBinds(CurrentTeam^.Binds); |
909
122c1b57bbf3
Fix bug with demos and saves after restoring round from save
unc0rr
parents:
883
diff
changeset
|
74 |
//CurrentHedgehog^.Gear^.Message:= 0; <- produces bugs with further save restoring and demos |
72 | 75 |
isSoundEnabled:= isSEBackup; |
5809 | 76 |
PlayMusic; |
3902
3aac7ca07b0e
have Saves restart net when loaded, also resumes music
koda
parents:
3663
diff
changeset
|
77 |
GameType:= gmtLocal; |
4049
fe799b5d601b
fix issue 63 and draw health bars right away for savefiles
koda
parents:
4048
diff
changeset
|
78 |
AddVisualGear(0, 0, vgtTeamHealthSorter); |
5357
ec36f3d53f3c
Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents:
5174
diff
changeset
|
79 |
AddVisualGear(0, 0, vgtSmoothWindBar); |
4048 | 80 |
{$IFDEF IPHONEOS}InitIPC;{$ENDIF} |
5174
f5294509783e
initial refactoring of ObjcExports and OverlayViewController
koda
parents:
5167
diff
changeset
|
81 |
uMobile.SaveFinished(); |
72 | 82 |
end; |
4 | 83 |
end |
84 |
else ProcessGears |
|
85 |
end; |
|
89 | 86 |
inc(i) |
162 | 87 |
end |
4 | 88 |
end; |
89 |
||
90 |
end. |