hedgewars/uGame.pas
author nemo
Sun, 28 Feb 2010 17:49:45 +0000
changeset 2887 a4526fcc26c7
parent 2814 71e80c6e74bb
child 2948 3f21a9dc93d0
permissions -rw-r--r--
Switch to smoke
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 917
diff changeset
     2
 * Hedgewars, a free turn based strategy game
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 741
diff changeset
     3
 * Copyright (c) 2004-2008 Andrey Korotaev <unC0Rr@gmail.com>
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
    12
 * GNU General Public License for more details.
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 167
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    17
 *)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    18
2630
079ef82eac75 revamped file access and debug display
koda
parents: 2621
diff changeset
    19
{$INCLUDE "options.inc"}
079ef82eac75 revamped file access and debug display
koda
parents: 2621
diff changeset
    20
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    21
unit uGame;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    22
interface
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 281
diff changeset
    23
uses uFloat;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    24
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
    25
procedure DoGameTick(Lag: LongInt);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    26
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    27
////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    28
   implementation
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    29
////////////////////
2786
85f6425a4d74 Engine:
smxx
parents: 2716
diff changeset
    30
uses uMisc, uConsts, uWorld, uKeys, uTeams, uIO, uAI, uGears, uConsole, uScript;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    31
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
    32
procedure DoGameTick(Lag: LongInt);
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
    33
var i: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    34
begin
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 196
diff changeset
    35
if isPaused then exit;
1611
fe6dd0bd1886 Oops, fix last patch
unc0rr
parents: 1610
diff changeset
    36
if (not CurrentTeam^.ExtDriven) then
2382
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 1727
diff changeset
    37
	begin
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 1727
diff changeset
    38
	NetGetNextCmd; // its for the case of receiving "/say" message
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 1727
diff changeset
    39
	isInLag:= false;
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 1727
diff changeset
    40
	SendKeepAliveMessage(Lag)
bfd378dfc4e7 Optimize network traffic a bit:
unc0rr
parents: 1727
diff changeset
    41
	end;
72
aeb2ac1878dc Basic save support in engine
unc0rr
parents: 32
diff changeset
    42
if Lag > 100 then Lag:= 100
1727
bddbb2400c30 Unfuckup spectating
unc0rr
parents: 1723
diff changeset
    43
else if (GameType = gmtSave) or (fastUntilLag and (GameType = gmtNet)) then Lag:= 2500;
626
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 602
diff changeset
    44
if (GameType = gmtDemo) and isSpeed then Lag:= Lag * 10;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    45
89
f9db56409a86 - Fix various bugs
unc0rr
parents: 79
diff changeset
    46
i:= 1;
f9db56409a86 - Fix various bugs
unc0rr
parents: 79
diff changeset
    47
while (GameState <> gsExit) and (i <= Lag) do
f9db56409a86 - Fix various bugs
unc0rr
parents: 79
diff changeset
    48
    begin
2814
71e80c6e74bb Engine:
smxx
parents: 2786
diff changeset
    49
    ScriptCall('onGameTick');
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 281
diff changeset
    50
    if not CurrentTeam^.ExtDriven then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    51
       begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 519
diff changeset
    52
       if CurrentHedgehog^.BotLevel <> 0 then ProcessBot;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    53
       ProcessGears
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    54
       end else
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    55
       begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    56
       NetGetNextCmd;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    57
       if isInLag then
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    58
          case GameType of
113
d975a426ebf7 - Many small fixes in engine
unc0rr
parents: 109
diff changeset
    59
                gmtNet: break;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    60
               gmtDemo: begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    61
                        GameState:= gsExit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    62
                        exit
72
aeb2ac1878dc Basic save support in engine
unc0rr
parents: 32
diff changeset
    63
                        end;
aeb2ac1878dc Basic save support in engine
unc0rr
parents: 32
diff changeset
    64
               gmtSave: begin
aeb2ac1878dc Basic save support in engine
unc0rr
parents: 32
diff changeset
    65
                        RestoreTeamsFromSave;
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2630
diff changeset
    66
{$IFNDEF IPHONEOS}
519
981df6f6e2a9 - Fix desert eagle
unc0rr
parents: 433
diff changeset
    67
                        SetBinds(CurrentTeam^.Binds);
2579
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2382
diff changeset
    68
{$ENDIF}
909
122c1b57bbf3 Fix bug with demos and saves after restoring round from save
unc0rr
parents: 883
diff changeset
    69
                        //CurrentHedgehog^.Gear^.Message:= 0; <- produces bugs with further save restoring and demos
72
aeb2ac1878dc Basic save support in engine
unc0rr
parents: 32
diff changeset
    70
                        isSoundEnabled:= isSEBackup;
aeb2ac1878dc Basic save support in engine
unc0rr
parents: 32
diff changeset
    71
                        GameType:= gmtLocal
aeb2ac1878dc Basic save support in engine
unc0rr
parents: 32
diff changeset
    72
                        end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    73
               end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    74
          else ProcessGears
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    75
       end;
89
f9db56409a86 - Fix various bugs
unc0rr
parents: 79
diff changeset
    76
    inc(i)
162
4822f6face35 Ammo menu now works!
unc0rr
parents: 143
diff changeset
    77
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    78
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    79
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 3
diff changeset
    80
end.