hedgewars/CCHandlers.inc
author unc0rr
Fri, 01 May 2009 09:01:44 +0000
changeset 2021 a591afb43768
parent 2017 7845c77c8d31
child 2022 9bbf8af42ace
permissions -rw-r--r--
Some changes in try to fix issue when you enter room with painted map, but frontend shows generated one (most probably bug is triggered by template filters) Untested.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 1058
diff changeset
     2
 * Hedgewars, a free turn based strategy game
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
     3
 * Copyright (c) 2004-2009 Andrey Korotaev <unC0Rr@gmail.com>
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
    12
 * GNU General Public License for more details.
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 176
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: 1
diff changeset
    17
 *)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    18
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    19
function CheckNoTeamOrHH: boolean;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    20
var Result: boolean;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    21
begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
    22
Result:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    23
{$IFDEF DEBUGFILE}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    24
if Result then
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    25
   if CurrentTeam = nil then AddFileLog('CONSOLE: CurTeam = nil')
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    26
                        else AddFileLog('CONSOLE: CurTeam <> nil, Gear = nil');
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    27
{$ENDIF}
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    28
CheckNoTeamOrHH:= Result
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    29
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    30
////////////////////////////////////////////////////////////////////////////////
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    31
procedure chQuit(var s: shortstring);
1022
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    32
const prevGState: TGameState = gsConfirm;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    33
begin
1022
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    34
if GameState <> gsConfirm then
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    35
        begin
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    36
        prevGState:= GameState;
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    37
        GameState:= gsConfirm
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    38
        end else
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    39
        GameState:= prevGState
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    40
end;
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    41
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    42
procedure chConfirm(var s: shortstring);
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    43
begin
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    44
if GameState = gsConfirm then
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    45
	begin
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    46
	SendIPC('Q');
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    47
	GameState:= gsExit
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    48
	end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    49
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    50
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    51
procedure chCheckProto(var s: shortstring);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
    52
var i, c: LongInt;
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    53
begin
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    54
if isDeveloperMode then
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    55
   begin
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    56
   val(s, i, c);
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    57
   if (c <> 0) or (i = 0) then exit;
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    58
   TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old', true);
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    59
   TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new', true)
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    60
   end
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    61
end;
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    62
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    63
procedure chAddTeam(var s: shortstring);
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    64
var Color: Longword;
605
2651c3fe4567 - Make hwengine protocol more obvious
unc0rr
parents: 604
diff changeset
    65
    ts: shortstring;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    66
begin
145
e593d5266e01 - Fix crash in AI
unc0rr
parents: 110
diff changeset
    67
if isDeveloperMode then
e593d5266e01 - Fix crash in AI
unc0rr
parents: 110
diff changeset
    68
   begin
605
2651c3fe4567 - Make hwengine protocol more obvious
unc0rr
parents: 604
diff changeset
    69
   SplitBySpace(s, ts);
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    70
   val(s, Color);
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    71
   TryDo(Color <> 0, 'Error: black team color', true);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    72
764
7513452b1d51 Now game looks almost like it did before switching to OpenGL
unc0rr
parents: 753
diff changeset
    73
   Color:= Color or $FF000000;
7513452b1d51 Now game looks almost like it did before switching to OpenGL
unc0rr
parents: 753
diff changeset
    74
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    75
   AddTeam(Color);
605
2651c3fe4567 - Make hwengine protocol more obvious
unc0rr
parents: 604
diff changeset
    76
   CurrentTeam^.TeamName:= ts;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
    77
   if GameType in [gmtDemo, gmtSave] then CurrentTeam^.ExtDriven:= true;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
    78
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
    79
   CurrentTeam^.voicepack:= AskForVoicepack('Default')
546
0e7cc3fb05cd Proto change: set color in addteam command
unc0rr
parents: 543
diff changeset
    80
   end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    81
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    82
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    83
procedure chTeamLocal(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    84
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    85
if not isDeveloperMode then exit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    86
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/rdriven"', true);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    87
CurrentTeam^.ExtDriven:= true
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    88
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    89
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    90
procedure chGrave(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    91
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    92
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/grave"', true);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    93
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    94
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    95
CurrentTeam^.GraveName:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    96
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    97
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    98
procedure chFort(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    99
begin
764
7513452b1d51 Now game looks almost like it did before switching to OpenGL
unc0rr
parents: 753
diff changeset
   100
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/fort"', true);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   101
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   102
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   103
CurrentTeam^.FortName:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   104
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   105
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   106
procedure chVoicepack(var s: shortstring);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   107
begin
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   108
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   109
if s[1]='"' then Delete(s, 1, 1);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   110
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   111
CurrentTeam^.voicepack:= AskForVoicepack(s)
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   112
end;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   113
312
c36d0b34ac3d Use new parameters, small protocol change
unc0rr
parents: 288
diff changeset
   114
procedure chAddHH(var id: shortstring);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   115
var s: shortstring;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   116
    Gear: PGear;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   117
begin
394
4c017ae1226a - Implement hack to let ammo stores work without needed assistance of frontend
unc0rr
parents: 393
diff changeset
   118
if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
312
c36d0b34ac3d Use new parameters, small protocol change
unc0rr
parents: 288
diff changeset
   119
with CurrentTeam^ do
1242
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   120
	begin
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   121
	SplitBySpace(id, s);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   122
	CurrentHedgehog:= @Hedgehogs[HedgehogsNumber];
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   123
	val(id, CurrentHedgehog^.BotLevel);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   124
	Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   125
	SplitBySpace(s, id);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   126
	val(s, Gear^.Health);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   127
	TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   128
	PHedgehog(Gear^.Hedgehog)^.Team:= CurrentTeam;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   129
	CurrentHedgehog^.AmmoStore:= TeamsCount - 1; // FIXME HACK to get ammostores work
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   130
	CurrentHedgehog^.Gear:= Gear;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   131
	CurrentHedgehog^.Name:= id;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   132
	inc(HedgehogsNumber)
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   133
	end
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   134
end;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   135
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   136
procedure chSetHat(var s: shortstring);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   137
begin
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   138
if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   139
with CurrentTeam^ do
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   140
	if s = '' then
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   141
		CurrentHedgehog^.Hat:= 'NoHat'
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   142
	else
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   143
		CurrentHedgehog^.Hat:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   144
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   145
604
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   146
procedure chSetHHCoords(var x: shortstring);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   147
var y: shortstring;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   148
    t: Longint;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   149
begin
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   150
if (not isDeveloperMode) or (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then exit;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   151
SplitBySpace(x, y);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   152
val(x, t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   153
CurrentHedgehog^.Gear^.X:= int2hwFloat(t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   154
val(y, t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   155
CurrentHedgehog^.Gear^.Y:= int2hwFloat(t)
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   156
end;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   157
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   158
procedure chAddAmmoStore(var descr: shortstring);
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   159
begin
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   160
AddAmmoStore(descr)
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   161
end;
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   162
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   163
procedure chBind(var id: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   164
var s: shortstring;
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
   165
    b: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   166
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   167
if CurrentTeam = nil then exit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   168
SplitBySpace(id, s);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   169
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   170
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   171
b:= KeyNameToCode(id);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   172
if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false)
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   173
         else CurrentTeam^.Binds[b]:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   174
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   175
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   176
procedure chLeft_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   177
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   178
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   179
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   180
if not CurrentTeam^.ExtDriven then SendIPC('L');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   181
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   182
    Message:= Message or gm_Left
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   183
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   184
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   185
procedure chLeft_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   186
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   187
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   188
if not CurrentTeam^.ExtDriven then SendIPC('l');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   189
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   190
     Message:= Message and not gm_Left
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   191
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   192
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   193
procedure chRight_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   194
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   195
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   196
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   197
if not CurrentTeam^.ExtDriven then SendIPC('R');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   198
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   199
    Message:= Message or gm_Right
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   200
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   201
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   202
procedure chRight_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   203
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   204
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   205
if not CurrentTeam^.ExtDriven then SendIPC('r');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   206
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   207
     Message:= Message and not gm_Right
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   208
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   209
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   210
procedure chUp_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   211
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   212
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   213
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   214
if not CurrentTeam^.ExtDriven then SendIPC('U');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   215
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   216
    Message:= Message or gm_Up
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   217
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   218
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   219
procedure chUp_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   220
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   221
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   222
if not CurrentTeam^.ExtDriven then SendIPC('u');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   223
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   224
     Message:= Message and not gm_Up
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   225
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   226
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   227
procedure chDown_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   228
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   229
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   230
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   231
if not CurrentTeam^.ExtDriven then SendIPC('D');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   232
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   233
    Message:= Message or gm_Down
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   234
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   235
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   236
procedure chDown_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   237
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   238
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   239
if not CurrentTeam^.ExtDriven then SendIPC('d');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   240
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   241
     Message:= Message and not gm_Down
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   242
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   243
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   244
procedure chPrecise_p(var s: shortstring);
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   245
begin
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   246
if CheckNoTeamOrHH then exit;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   247
bShowFinger:= false;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   248
if not CurrentTeam^.ExtDriven then SendIPC('Z');
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   249
with CurrentHedgehog^.Gear^ do
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   250
    Message:= Message or gm_Precise
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   251
end;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   252
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   253
procedure chPrecise_m(var s: shortstring);
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   254
begin
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   255
if CheckNoTeamOrHH then exit;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   256
if not CurrentTeam^.ExtDriven then SendIPC('z');
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   257
with CurrentHedgehog^.Gear^ do
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   258
     Message:= Message and not gm_Precise
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   259
end;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   260
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   261
procedure chLJump(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   262
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   263
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   264
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   265
if not CurrentTeam^.ExtDriven then SendIPC('j');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   266
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   267
    Message:= Message or gm_LJump
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   268
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   269
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   270
procedure chHJump(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   271
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   272
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   273
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   274
if not CurrentTeam^.ExtDriven then SendIPC('J');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   275
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   276
    Message:= Message or gm_HJump
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   277
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   278
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   279
procedure chAttack_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   280
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   281
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   282
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   283
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   284
     begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   285
     {$IFDEF DEBUGFILE}AddFileLog('/+attack: Gear^.State = '+inttostr(State));{$ENDIF}
929
9456e1e77369 - Continue preparation for implementing attack from rope and parachute
unc0rr
parents: 927
diff changeset
   286
     if ((State and gstHHDriven) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   287
        begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   288
        FollowGear:= CurrentHedgehog^.Gear;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   289
        if not CurrentTeam^.ExtDriven then SendIPC('A');
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   290
        Message:= Message or gm_Attack
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   291
        end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   292
     end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   293
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   294
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   295
procedure chAttack_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   296
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   297
if CheckNoTeamOrHH then exit;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   298
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   299
     begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   300
     if not CurrentTeam^.ExtDriven and
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 83
diff changeset
   301
        ((Message and gm_Attack) <> 0) then SendIPC('a');
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 83
diff changeset
   302
     Message:= Message and not gm_Attack
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   303
     end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   304
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   305
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   306
procedure chSwitch(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   307
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   308
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   309
if not CurrentTeam^.ExtDriven then SendIPC('S');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   310
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   311
     Message:= Message or gm_Switch
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   312
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   313
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   314
procedure chNextTurn(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   315
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   316
if AllInactive then
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   317
   begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   318
   if not CurrentTeam^.ExtDriven then SendIPC('N');
593
1f5e66379a43 Triggers proof-of-concept
unc0rr
parents: 589
diff changeset
   319
   TickTrigger(trigTurns);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   320
   {$IFDEF DEBUGFILE}AddFileLog('Doing SwitchHedgehog: time '+inttostr(GameTicks));{$ENDIF}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   321
   end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   322
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   323
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   324
procedure chSay(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   325
begin
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1242
diff changeset
   326
SendIPC('s' + s);
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   327
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   328
if copy(s, 1, 4) = '/me ' then
1379
39cfee7a5be5 Fix formatting
unc0rr
parents: 1378
diff changeset
   329
	s:= '* ' + UserNick + ' ' + copy(s, 5, Length(s) - 4)
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   330
else
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   331
	s:= UserNick + ': ' + s;
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   332
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1242
diff changeset
   333
AddChatString(s)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   334
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   335
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   336
procedure chTimer(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   337
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   338
if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or (CurrentTeam = nil) then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   339
bShowFinger:= false;
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   340
if not CurrentTeam^.ExtDriven then SendIPC(s);
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   341
with CurrentHedgehog^.Gear^ do
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   342
     begin
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   343
     Message:= Message or gm_Timer;
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   344
     MsgParam:= byte(s[1]) - ord('0')
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   345
     end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   346
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   347
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   348
procedure chSlot(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   349
var slot: LongWord;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   350
begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 83
diff changeset
   351
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   352
bShowFinger:= false;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   353
slot:= byte(s[1]) - 49;
10
edf56dca1587 - Mine weapon
unc0rr
parents: 4
diff changeset
   354
if slot > cMaxSlotIndex then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   355
if not CurrentTeam^.ExtDriven then SendIPC(char(byte(s[1]) + 79));
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   356
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   357
     begin
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   358
     Message:= Message or gm_Slot;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   359
     MsgParam:= slot
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   360
     end
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   361
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   362
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   363
procedure chSetWeapon(var s: shortstring);
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   364
begin
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   365
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
784
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   366
1850
a0332e79fdc9 a patch :P
unc0rr
parents: 1849
diff changeset
   367
if TAmmoType(s[1]) > High(TAmmoType) then exit;
784
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   368
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   369
if not CurrentTeam^.ExtDriven then SendIPC('w' + s);
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   370
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   371
with CurrentHedgehog^.Gear^ do
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   372
     begin
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   373
     Message:= Message or gm_Weapon;
1850
a0332e79fdc9 a patch :P
unc0rr
parents: 1849
diff changeset
   374
     MsgParam:= byte(s[1])
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   375
     end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   376
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   377
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   378
procedure chTaunt(var s: shortstring);
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   379
begin
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   380
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   381
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   382
if TWave(s[1]) > High(TWave) then exit;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   383
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   384
if not CurrentTeam^.ExtDriven then SendIPC('t' + s);
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   385
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   386
with CurrentHedgehog^.Gear^ do
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   387
     begin
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   388
     Message:= Message or gm_Animate;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   389
     MsgParam:= byte(s[1])
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   390
     end
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   391
end;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   392
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   393
procedure chHogSay(var s: shortstring);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   394
var Gear: PGear;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   395
    text: shortstring;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   396
begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   397
text:= copy(s, 2, Length(s)-1);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   398
if CheckNoTeamOrHH or ((CurrentHedgehog^.Gear^.State and gstHHDriven) = 0) then
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   399
    begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   400
    chSay(text);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   401
    exit
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   402
    end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   403
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   404
if not CurrentTeam^.ExtDriven then SendIPC('h' + s);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   405
if byte(s[1]) < 4 then
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   406
    begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   407
    Gear:= AddGear(0, 0, gtSpeechBubble, 0, _0, _0, 0);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   408
    Gear^.Text:= text;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   409
    Gear^.Hedgehog:= CurrentHedgehog;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   410
    Gear^.State:= byte(s[1]);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   411
    end
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   412
else
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   413
    begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   414
    // If I knew how to add a gear without it becoming immediately active, I'd
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   415
    // just create/attach the hedgehog SpeechGear here, then activate it where
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   416
    // SpeechType/SpeechText are activated
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   417
    SpeechType:= byte(s[1]);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   418
    SpeechText:= text
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   419
    end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   420
end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   421
1821
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   422
procedure chNewGrave;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   423
begin
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   424
if CheckNoTeamOrHH then exit;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   425
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   426
if not CurrentTeam^.ExtDriven then SendIPC('g');
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   427
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   428
AddGear(hwRound(CurrentHedgehog^.Gear^.X), hwRound(CurrentHedgehog^.Gear^.Y), gtGrave, 0, _0, _0, 0)
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   429
end;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   430
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   431
procedure doPut(putX, putY: LongInt; fromAI: boolean);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   432
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   433
if CheckNoTeamOrHH then exit;
162
4822f6face35 Ammo menu now works!
unc0rr
parents: 161
diff changeset
   434
if bShowAmmoMenu then
4822f6face35 Ammo menu now works!
unc0rr
parents: 161
diff changeset
   435
   begin
4822f6face35 Ammo menu now works!
unc0rr
parents: 161
diff changeset
   436
   bSelected:= true;
4822f6face35 Ammo menu now works!
unc0rr
parents: 161
diff changeset
   437
   exit
4822f6face35 Ammo menu now works!
unc0rr
parents: 161
diff changeset
   438
   end;
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   439
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   440
with CurrentHedgehog^.Gear^,
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   441
     CurrentHedgehog^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   442
     if (State and gstHHChooseTarget) <> 0 then
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   443
        begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   444
        isCursorVisible:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   445
        if not CurrentTeam^.ExtDriven then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   446
           begin
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   447
           if fromAI then
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   448
              begin
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   449
              TargetPoint.X:= putX;
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   450
              TargetPoint.Y:= putY
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   451
              end else
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   452
              begin
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   453
              SDL_GetMouseState(@TargetPoint.X, @TargetPoint.Y);
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   454
              dec(TargetPoint.X, WorldDx);
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   455
              dec(TargetPoint.Y, WorldDy)
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   456
              end;
154
5667e6f38704 Network protocol uses integers in network byte order
unc0rr
parents: 145
diff changeset
   457
           SendIPCXY('p', TargetPoint.X, TargetPoint.Y);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   458
           end;
927
2c1675344a6f Remove AltSlot and AltAmmo fields of Hedgehog record, as they are not actually needed
unc0rr
parents: 926
diff changeset
   459
        State:= State and not gstHHChooseTarget;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   460
        if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_AttackingPut) <> 0 then
263
36379e6abcdd - Health tags over drowned hedgehogs
unc0rr
parents: 205
diff changeset
   461
           Message:= Message or gm_Attack;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   462
        end else if CurrentTeam^.ExtDriven then OutError('got /put while not being in choose target mode', false)
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   463
end;
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   464
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   465
procedure chPut(var s: shortstring);
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   466
begin
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   467
doPut(0, 0, false)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   468
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   469
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   470
procedure chCapture(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   471
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   472
flagMakeCapture:= true
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   473
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   474
48
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   475
procedure chSkip(var s: shortstring);
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   476
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   477
if not CurrentTeam^.ExtDriven then SendIPC(',');
871
f1bf00b7fd5a - Fix sounds when the turn is skipped
unc0rr
parents: 866
diff changeset
   478
uStats.Skipped;
917
e59614bffc3f Fix handling '/skip' command during net game
unc0rr
parents: 905
diff changeset
   479
skipFlag:= true
48
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   480
end;
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   481
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   482
procedure chSetMap(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   483
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   484
if isDeveloperMode then
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   485
   begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   486
   Pathz[ptMapCurrent]:= Pathz[ptMaps] + '/' + s;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   487
   InitStepsFlags:= InitStepsFlags or cifMap
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   488
   end
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   489
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   490
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   491
procedure chSetTheme(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   492
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   493
if isDeveloperMode then
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   494
   begin
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 72
diff changeset
   495
   Pathz[ptCurrTheme]:= Pathz[ptThemes] + '/' + s;
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   496
   InitStepsFlags:= InitStepsFlags or cifTheme
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   497
   end
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   498
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   499
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   500
procedure chSetSeed(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   501
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   502
if isDeveloperMode then
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   503
   begin
102
c45643d3fd78 New faster random generator
unc0rr
parents: 95
diff changeset
   504
   SetRandomSeed(s);
81
d74e0e914b50 More translations
unc0rr
parents: 80
diff changeset
   505
   cSeed:= s;
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   506
   InitStepsFlags:= InitStepsFlags or cifRandomize
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   507
   end
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   508
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   509
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   510
procedure chAmmoMenu(var s: shortstring);
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   511
begin
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   512
if CheckNoTeamOrHH then exit;
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   513
with CurrentTeam^ do
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   514
     with Hedgehogs[CurrHedgehog] do
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   515
          begin
162
4822f6face35 Ammo menu now works!
unc0rr
parents: 161
diff changeset
   516
          bSelected:= false;
682
a37b6966de84 Some misc fixes
unc0rr
parents: 626
diff changeset
   517
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   518
          if bShowAmmoMenu then bShowAmmoMenu:= false
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   519
          else if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or (AttacksNum > 0)
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   520
               or ((Gear^.State and gstHHDriven) = 0) then else bShowAmmoMenu:= true
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   521
          end
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   522
end;
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   523
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   524
procedure chFullScr(var s: shortstring);
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   525
var flags: Longword;
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   526
{$IFDEF DEBUGFILE}
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   527
    buf: array[byte] of char;
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   528
{$ENDIF}
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   529
begin
1051
dfdd5dfe97d4 Enable fullscreen switching back, now it's bound on F12
unc0rr
parents: 1035
diff changeset
   530
if Length(s) = 0 then cFullScreen:= not cFullScreen
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   531
                 else cFullScreen:= s = '1';
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   532
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   533
{$IFDEF DEBUGFILE}
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   534
AddFileLog('Prepare to change video parameters...');
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   535
{$ENDIF}
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 691
diff changeset
   536
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 691
diff changeset
   537
1127
7e1b94a0fc1f - Disable ability to resize window
unc0rr
parents: 1121
diff changeset
   538
flags:= SDL_OPENGL;// or SDL_RESIZABLE;
1121
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   539
if cFullScreen then
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   540
	begin
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   541
	flags:= flags or SDL_FULLSCREEN;
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   542
	cScreenWidth:= cInitWidth;
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   543
	cScreenHeight:= cInitHeight
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   544
	end
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   545
	else SDL_WM_SetCaption('Hedgewars', nil);
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   546
{$IFDEF DEBUGFILE}
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   547
AddFileLog('Freeing old primary surface...');
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   548
{$ENDIF}
1525
311d0ab35d98 Don't call SDL_FreeSurface with null pointer
unc0rr
parents: 1379
diff changeset
   549
if SDLPrimSurface <> nil then SDL_FreeSurface(SDLPrimSurface);
904
a573c949e61c - Better error handling when creating the window
unc0rr
parents: 883
diff changeset
   550
1836
da31003c151f titlebar fix for Mac OS X by koda
unc0rr
parents: 1821
diff changeset
   551
{$IFDEF DARWIN}
da31003c151f titlebar fix for Mac OS X by koda
unc0rr
parents: 1821
diff changeset
   552
{Fix for the Mac titlebar bug}
da31003c151f titlebar fix for Mac OS X by koda
unc0rr
parents: 1821
diff changeset
   553
flags:= flags or SDL_NOFRAME;
da31003c151f titlebar fix for Mac OS X by koda
unc0rr
parents: 1821
diff changeset
   554
{$ENDIF}
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   555
SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags);
904
a573c949e61c - Better error handling when creating the window
unc0rr
parents: 883
diff changeset
   556
SDLTry(SDLPrimSurface <> nil, true);
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   557
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   558
{$IFDEF DEBUGFILE}
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   559
AddFileLog('Setting up OpenGL...');
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   560
{$ENDIF}
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 691
diff changeset
   561
SetupOpenGL();
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 691
diff changeset
   562
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   563
{$IFDEF DEBUGFILE}
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   564
AddFileLog('SDL video driver: ' + string(SDL_VideoDriverName(buf, sizeof(buf))));
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   565
{$ENDIF}
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   566
PixelFormat:= SDLPrimSurface^.format
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   567
end;
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   568
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   569
procedure chVol_p(var s: shortstring);
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   570
begin
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   571
inc(cVolumeDelta, 3)
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   572
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   573
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   574
procedure chVol_m(var s: shortstring);
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   575
begin
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   576
dec(cVolumeDelta, 3)
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   577
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   578
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   579
procedure chFindhh(var s: shortstring);
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   580
begin
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   581
if CheckNoTeamOrHH then exit;
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   582
bShowFinger:= true;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   583
FollowGear:= CurrentHedgehog^.Gear
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   584
end;
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   585
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   586
procedure chPause(var s: shortstring);
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   587
begin
1743
ebc54f5fe4e7 Don't allow pause when playing online
unc0rr
parents: 1656
diff changeset
   588
if gameType <> gmtNet then
ebc54f5fe4e7 Don't allow pause when playing online
unc0rr
parents: 1656
diff changeset
   589
	isPaused:= not isPaused;
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   590
SDL_ShowCursor(ord(isPaused))
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   591
end;
539
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   592
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   593
procedure chRotateMask(var s: shortstring);
691
0a534a03437e Better tags switching sequence
unc0rr
parents: 682
diff changeset
   594
const map: array[0..7] of byte = (7,4,0,1,2,3,0,5);
539
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   595
begin
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   596
cTagsMask:= map[cTagsMask]
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   597
end;
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   598
589
f382c41f658a Start implementing triggers in engine
unc0rr
parents: 549
diff changeset
   599
procedure chAddTrigger(var s: shortstring);
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   600
const MAXPARAMS = 16;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   601
var params: array[0..Pred(MAXPARAMS)] of Longword;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   602
    i: LongInt;
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   603
    c: char;
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   604
    tmp: shortstring;
589
f382c41f658a Start implementing triggers in engine
unc0rr
parents: 549
diff changeset
   605
begin
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   606
c:= s[1];
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   607
Delete(s, 1, 1);
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   608
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   609
i:= 0;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   610
while (i < MAXPARAMS) and
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   611
      (Length(s) > 0) do
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   612
    begin
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   613
    SplitBySpace(s, tmp);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   614
    val(s, params[i]);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   615
    s:= tmp;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   616
    inc(i)
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   617
    end;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   618
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   619
case c of
613
e8cf72d0e0f7 Add 'Successful finish' trigger
unc0rr
parents: 606
diff changeset
   620
  's': begin // sTYPE TICKS LIVES GEARTYPE X Y GEARTRIGGER
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   621
       TryDo(i = 7, errmsgWrongNumber, true);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   622
       AddTriggerSpawner(params[0], params[1], params[2], TGearType(params[3]), params[4], params[5], params[6]);
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   623
       end;
613
e8cf72d0e0f7 Add 'Successful finish' trigger
unc0rr
parents: 606
diff changeset
   624
  'C': begin
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   625
       TryDo(i = 3, errmsgWrongNumber, true);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   626
       AddTriggerSuccess(params[0], params[1], params[2]);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   627
       end;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   628
  'F': begin
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   629
       TryDo(i = 3, errmsgWrongNumber, true);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   630
       AddTriggerFail(params[0], params[1], params[2]);
613
e8cf72d0e0f7 Add 'Successful finish' trigger
unc0rr
parents: 606
diff changeset
   631
       end;
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   632
  end
589
f382c41f658a Start implementing triggers in engine
unc0rr
parents: 549
diff changeset
   633
end;
626
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   634
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   635
procedure chSpeedup_p(var s: shortstring);
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   636
begin
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   637
isSpeed:= true
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   638
end;
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   639
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   640
procedure chSpeedup_m(var s: shortstring);
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   641
begin
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   642
isSpeed:= false
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   643
end;
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   644
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   645
procedure chChat(var s: shortstring);
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   646
begin
990
dfa6a6fe1542 Implement history for chat (27 entries), no key binding yet
unc0rr
parents: 970
diff changeset
   647
GameState:= gsChat;
dfa6a6fe1542 Implement history for chat (27 entries), no key binding yet
unc0rr
parents: 970
diff changeset
   648
KeyPressChat(27)
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   649
end;
991
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   650
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   651
procedure chHistory(var s: shortstring);
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   652
begin
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   653
uChat.showAll:= not uChat.showAll
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   654
end;