hedgewars/CCHandlers.inc
author nemo
Wed, 24 Feb 2010 16:41:35 +0000
changeset 2859 d44ae883896b
parent 2855 7e6adeb57427
child 2874 3c7c2bf1ba38
permissions -rw-r--r--
another nil check
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;
2695
ed789a7ef68d makes freepascal code compatible with OBJFPC mode
koda
parents: 2671
diff changeset
    20
var bRes: boolean;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    21
begin
2695
ed789a7ef68d makes freepascal code compatible with OBJFPC mode
koda
parents: 2671
diff changeset
    22
bRes:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    23
{$IFDEF DEBUGFILE}
2695
ed789a7ef68d makes freepascal code compatible with OBJFPC mode
koda
parents: 2671
diff changeset
    24
if bRes then
4
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}
2695
ed789a7ef68d makes freepascal code compatible with OBJFPC mode
koda
parents: 2671
diff changeset
    28
CheckNoTeamOrHH:= bRes;
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
2130
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    49
else
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    50
    begin
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    51
    GameState:= gsChat;
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    52
    KeyPressChat(27);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    53
    KeyPressChat(47);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    54
    KeyPressChat(116);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    55
    KeyPressChat(101);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    56
    KeyPressChat(97);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    57
    KeyPressChat(109);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    58
    KeyPressChat(32)
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    59
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    60
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    61
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    62
procedure chCheckProto(var s: shortstring);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
    63
var i, c: LongInt;
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    64
begin
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    65
if isDeveloperMode then
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    66
   begin
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    67
   val(s, i, c);
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    68
   if (c <> 0) or (i = 0) then exit;
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    69
   TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old', true);
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    70
   TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new', true)
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    71
   end
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    72
end;
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    73
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    74
procedure chAddTeam(var s: shortstring);
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    75
var Color: Longword;
605
2651c3fe4567 - Make hwengine protocol more obvious
unc0rr
parents: 604
diff changeset
    76
    ts: shortstring;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    77
begin
145
e593d5266e01 - Fix crash in AI
unc0rr
parents: 110
diff changeset
    78
if isDeveloperMode then
e593d5266e01 - Fix crash in AI
unc0rr
parents: 110
diff changeset
    79
   begin
605
2651c3fe4567 - Make hwengine protocol more obvious
unc0rr
parents: 604
diff changeset
    80
   SplitBySpace(s, ts);
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    81
   val(s, Color);
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    82
   TryDo(Color <> 0, 'Error: black team color', true);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    83
2671
7e0f88013fe8 smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents: 2645
diff changeset
    84
   // color is always little endian so the mask must be constant also in big endian archs
2624
0c3d5549912e Color Fix in PPC + files fallbacks
koda
parents: 2618
diff changeset
    85
   Color:= Color or $FF000000;
0c3d5549912e Color Fix in PPC + files fallbacks
koda
parents: 2618
diff changeset
    86
 	
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    87
   AddTeam(Color);
605
2651c3fe4567 - Make hwengine protocol more obvious
unc0rr
parents: 604
diff changeset
    88
   CurrentTeam^.TeamName:= ts;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
    89
   if GameType in [gmtDemo, gmtSave] then CurrentTeam^.ExtDriven:= true;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
    90
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
    91
   CurrentTeam^.voicepack:= AskForVoicepack('Default')
546
0e7cc3fb05cd Proto change: set color in addteam command
unc0rr
parents: 543
diff changeset
    92
   end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    93
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    94
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    95
procedure chTeamLocal(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    96
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    97
if not isDeveloperMode then exit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    98
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/rdriven"', true);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    99
CurrentTeam^.ExtDriven:= true
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   100
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   101
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   102
procedure chGrave(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   103
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   104
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/grave"', true);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   105
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   106
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   107
CurrentTeam^.GraveName:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   108
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   109
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   110
procedure chFort(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   111
begin
764
7513452b1d51 Now game looks almost like it did before switching to OpenGL
unc0rr
parents: 753
diff changeset
   112
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/fort"', true);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   113
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   114
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   115
CurrentTeam^.FortName:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   116
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   117
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   118
procedure chVoicepack(var s: shortstring);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   119
begin
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   120
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   121
if s[1]='"' then Delete(s, 1, 1);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   122
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   123
CurrentTeam^.voicepack:= AskForVoicepack(s)
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   124
end;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   125
2747
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   126
procedure chFlag(var s: shortstring);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   127
begin
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   128
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/flag"', true);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   129
if s[1]='"' then Delete(s, 1, 1);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   130
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   131
CurrentTeam^.flag:= s
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   132
end;
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   133
2786
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   134
procedure chScript(var s: shortstring);
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   135
begin
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   136
if s[1]='"' then Delete(s, 1, 1);
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   137
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   138
ScriptLoad(s)
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   139
end;
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   140
312
c36d0b34ac3d Use new parameters, small protocol change
unc0rr
parents: 288
diff changeset
   141
procedure chAddHH(var id: shortstring);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   142
var s: shortstring;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   143
    Gear: PGear;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   144
begin
394
4c017ae1226a - Implement hack to let ammo stores work without needed assistance of frontend
unc0rr
parents: 393
diff changeset
   145
if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
312
c36d0b34ac3d Use new parameters, small protocol change
unc0rr
parents: 288
diff changeset
   146
with CurrentTeam^ do
1242
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   147
	begin
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   148
	SplitBySpace(id, s);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   149
	CurrentHedgehog:= @Hedgehogs[HedgehogsNumber];
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   150
	val(id, CurrentHedgehog^.BotLevel);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   151
	Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   152
	SplitBySpace(s, id);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   153
	val(s, Gear^.Health);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   154
	TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   155
	PHedgehog(Gear^.Hedgehog)^.Team:= CurrentTeam;
2853
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2831
diff changeset
   156
// Needs shared clan ammo game flag
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2831
diff changeset
   157
	CurrentHedgehog^.AmmoStore:= Clan^.ClanIndex; // FIXME HACK to get ammostores work
953a6d71396f Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents: 2831
diff changeset
   158
	//CurrentHedgehog^.AmmoStore:= TeamsCount - 1; // FIXME HACK to get ammostores work
1242
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   159
	CurrentHedgehog^.Gear:= Gear;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   160
	CurrentHedgehog^.Name:= id;
2808
8f48b538d591 Need this too to set it to last hog for current switch alg
nemo
parents: 2800
diff changeset
   161
    CurrHedgehog:= HedgehogsNumber;
1242
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   162
	inc(HedgehogsNumber)
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   163
	end
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   164
end;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   165
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   166
procedure chSetHat(var s: shortstring);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   167
begin
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   168
if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   169
with CurrentTeam^ do
2726
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   170
    begin
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   171
    if not CurrentHedgehog^.King then
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   172
       if (s = '') or (((GameFlags and gfKing) <> 0) and (s = 'crown')) then
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   173
           CurrentHedgehog^.Hat:= 'NoHat'
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   174
       else
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   175
           CurrentHedgehog^.Hat:= s
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   176
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   177
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   178
604
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   179
procedure chSetHHCoords(var x: shortstring);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   180
var y: shortstring;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   181
    t: Longint;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   182
begin
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   183
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
   184
SplitBySpace(x, y);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   185
val(x, t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   186
CurrentHedgehog^.Gear^.X:= int2hwFloat(t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   187
val(y, t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   188
CurrentHedgehog^.Gear^.Y:= int2hwFloat(t)
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   189
end;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   190
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   191
procedure chAddAmmoStore(var descr: shortstring);
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   192
begin
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   193
AddAmmoStore(descr)
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   194
end;
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   195
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   196
procedure chBind(var id: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   197
var s: shortstring;
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
   198
    b: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   199
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   200
if CurrentTeam = nil then exit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   201
SplitBySpace(id, s);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   202
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   203
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   204
b:= KeyNameToCode(id);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   205
if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false)
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   206
         else CurrentTeam^.Binds[b]:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   207
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   208
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   209
procedure chCurU_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   210
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   211
CursorMovementY:= -1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   212
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   213
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   214
procedure chCurU_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   215
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   216
CursorMovementY:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   217
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   218
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   219
procedure chCurD_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   220
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   221
CursorMovementY:= 1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   222
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   223
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   224
procedure chCurD_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   225
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   226
CursorMovementY:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   227
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   228
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   229
procedure chCurL_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   230
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   231
CursorMovementX:= -1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   232
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   233
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   234
procedure chCurL_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   235
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   236
CursorMovementX:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   237
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   238
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   239
procedure chCurR_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   240
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   241
CursorMovementX:= 1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   242
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   243
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   244
procedure chCurR_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   245
begin
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   246
CursorMovementX:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   247
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   248
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   249
procedure chLeft_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   250
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   251
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   252
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   253
if not CurrentTeam^.ExtDriven then SendIPC('L');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   254
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   255
    Message:= Message or gm_Left
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   256
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   257
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   258
procedure chLeft_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   259
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   260
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   261
if not CurrentTeam^.ExtDriven then SendIPC('l');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   262
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   263
     Message:= Message and not gm_Left
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   264
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   265
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   266
procedure chRight_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   267
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   268
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   269
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   270
if not CurrentTeam^.ExtDriven then SendIPC('R');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   271
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   272
    Message:= Message or gm_Right
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   273
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   274
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   275
procedure chRight_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   276
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   277
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   278
if not CurrentTeam^.ExtDriven then SendIPC('r');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   279
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   280
     Message:= Message and not gm_Right
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   281
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   282
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   283
procedure chUp_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   284
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   285
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   286
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   287
if not CurrentTeam^.ExtDriven then SendIPC('U');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   288
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   289
    Message:= Message or gm_Up
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   290
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   291
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   292
procedure chUp_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   293
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   294
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   295
if not CurrentTeam^.ExtDriven then SendIPC('u');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   296
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   297
     Message:= Message and not gm_Up
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   298
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   299
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   300
procedure chDown_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   301
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   302
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   303
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   304
if not CurrentTeam^.ExtDriven then SendIPC('D');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   305
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   306
    Message:= Message or gm_Down
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   307
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   308
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   309
procedure chDown_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   310
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   311
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   312
if not CurrentTeam^.ExtDriven then SendIPC('d');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   313
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   314
     Message:= Message and not gm_Down
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   315
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   316
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   317
procedure chPrecise_p(var s: shortstring);
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   318
begin
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   319
if CheckNoTeamOrHH then exit;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   320
bShowFinger:= false;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   321
if not CurrentTeam^.ExtDriven then SendIPC('Z');
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   322
with CurrentHedgehog^.Gear^ do
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   323
    Message:= Message or gm_Precise
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   324
end;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   325
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   326
procedure chPrecise_m(var s: shortstring);
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   327
begin
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   328
if CheckNoTeamOrHH then exit;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   329
if not CurrentTeam^.ExtDriven then SendIPC('z');
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   330
with CurrentHedgehog^.Gear^ do
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   331
     Message:= Message and not gm_Precise
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   332
end;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   333
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   334
procedure chLJump(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   335
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   336
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   337
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   338
if not CurrentTeam^.ExtDriven then SendIPC('j');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   339
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   340
    Message:= Message or gm_LJump
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   341
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   342
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   343
procedure chHJump(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   344
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   345
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   346
bShowFinger:= false;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   347
if not CurrentTeam^.ExtDriven then SendIPC('J');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   348
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   349
    Message:= Message or gm_HJump
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   350
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   351
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   352
procedure chAttack_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   353
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   354
if CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   355
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   356
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   357
     begin
2079
f188ec7c450b Silence useless warning
unc0rr
parents: 2046
diff changeset
   358
     {$IFDEF DEBUGFILE}AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State));{$ENDIF}
929
9456e1e77369 - Continue preparation for implementing attack from rope and parachute
unc0rr
parents: 927
diff changeset
   359
     if ((State and gstHHDriven) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   360
        begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   361
        FollowGear:= CurrentHedgehog^.Gear;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   362
        if not CurrentTeam^.ExtDriven then SendIPC('A');
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   363
        Message:= Message or gm_Attack
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   364
        end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   365
     end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   366
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   367
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   368
procedure chAttack_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   369
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   370
if CheckNoTeamOrHH then exit;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   371
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   372
     begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   373
     if not CurrentTeam^.ExtDriven and
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 83
diff changeset
   374
        ((Message and gm_Attack) <> 0) then SendIPC('a');
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 83
diff changeset
   375
     Message:= Message and not gm_Attack
4
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
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   378
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   379
procedure chSwitch(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   380
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   381
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   382
if not CurrentTeam^.ExtDriven then SendIPC('S');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   383
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   384
     Message:= Message or gm_Switch
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   385
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   386
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   387
procedure chNextTurn(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   388
begin
2045
b0588498bc3a - Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents: 2042
diff changeset
   389
TryDo(AllInactive, '/nextturn called when not all gears are inactive', true);
2046
57fb5673ff17 Oops, some debug stuff left
unc0rr
parents: 2045
diff changeset
   390
2045
b0588498bc3a - Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents: 2042
diff changeset
   391
if not CurrentTeam^.ExtDriven then SendIPC('N');
b0588498bc3a - Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents: 2042
diff changeset
   392
TickTrigger(trigTurns);
b0588498bc3a - Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents: 2042
diff changeset
   393
{$IFDEF DEBUGFILE}AddFileLog('Doing SwitchHedgehog: time '+inttostr(GameTicks));{$ENDIF}
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   394
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   395
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   396
procedure chSay(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   397
begin
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1242
diff changeset
   398
SendIPC('s' + s);
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   399
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   400
if copy(s, 1, 4) = '/me ' then
2396
e13a1117152b Colorize chat messages in frontend and engine
unc0rr
parents: 2379
diff changeset
   401
	s:= #2'* ' + UserNick + ' ' + copy(s, 5, Length(s) - 4)
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   402
else
2396
e13a1117152b Colorize chat messages in frontend and engine
unc0rr
parents: 2379
diff changeset
   403
	s:= #1 + UserNick + ': ' + s;
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   404
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1242
diff changeset
   405
AddChatString(s)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   406
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   407
2124
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   408
procedure chTeamSay(var s: shortstring);
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   409
begin
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   410
SendIPC('b' + s);
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   411
2403
6c5d504af2ba - Proper /team command implementation
unc0rr
parents: 2396
diff changeset
   412
s:= #4 + UserNick + '(team): ' + s;
2124
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   413
2396
e13a1117152b Colorize chat messages in frontend and engine
unc0rr
parents: 2379
diff changeset
   414
AddChatString(s)
2124
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   415
end;
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   416
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   417
procedure chTimer(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   418
begin
2314
953771a06c64 Better fix
unc0rr
parents: 2313
diff changeset
   419
if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   420
bShowFinger:= false;
2314
953771a06c64 Better fix
unc0rr
parents: 2313
diff changeset
   421
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   422
if not CurrentTeam^.ExtDriven then SendIPC(s);
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   423
with CurrentHedgehog^.Gear^ do
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   424
     begin
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   425
     Message:= Message or gm_Timer;
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   426
     MsgParam:= byte(s[1]) - ord('0')
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   427
     end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   428
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   429
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   430
procedure chSlot(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   431
var slot: LongWord;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   432
begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 83
diff changeset
   433
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   434
bShowFinger:= false;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   435
slot:= byte(s[1]) - 49;
10
edf56dca1587 - Mine weapon
unc0rr
parents: 4
diff changeset
   436
if slot > cMaxSlotIndex then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   437
if not CurrentTeam^.ExtDriven then SendIPC(char(byte(s[1]) + 79));
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   438
with CurrentHedgehog^.Gear^ do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   439
     begin
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   440
     Message:= Message or gm_Slot;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   441
     MsgParam:= slot
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   442
     end
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   443
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   444
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   445
procedure chSetWeapon(var s: shortstring);
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   446
begin
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   447
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
784
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   448
1850
a0332e79fdc9 a patch :P
unc0rr
parents: 1849
diff changeset
   449
if TAmmoType(s[1]) > High(TAmmoType) then exit;
784
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   450
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   451
if not CurrentTeam^.ExtDriven then SendIPC('w' + s);
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   452
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   453
with CurrentHedgehog^.Gear^ do
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   454
     begin
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   455
     Message:= Message or gm_Weapon;
1850
a0332e79fdc9 a patch :P
unc0rr
parents: 1849
diff changeset
   456
     MsgParam:= byte(s[1])
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   457
     end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   458
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   459
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   460
procedure chTaunt(var s: shortstring);
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   461
begin
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   462
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   463
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   464
if TWave(s[1]) > High(TWave) then exit;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   465
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   466
if not CurrentTeam^.ExtDriven then SendIPC('t' + s);
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   467
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   468
with CurrentHedgehog^.Gear^ do
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   469
     begin
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   470
     Message:= Message or gm_Animate;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   471
     MsgParam:= byte(s[1])
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   472
     end
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   473
end;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   474
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   475
procedure chHogSay(var s: shortstring);
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2022
diff changeset
   476
var Gear: PVisualGear;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   477
    text: shortstring;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   478
begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   479
text:= copy(s, 2, Length(s)-1);
2110
df2a1fe3617a Some updates
unc0rr
parents: 2079
diff changeset
   480
if CheckNoTeamOrHH
2111
9be70514954c Finally fix bubbles
unc0rr
parents: 2110
diff changeset
   481
  or ((CurrentHedgehog^.Gear^.State and gstHHDriven) = 0) then
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   482
    begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   483
    chSay(text);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   484
    exit
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   485
    end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   486
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   487
if not CurrentTeam^.ExtDriven then SendIPC('h' + s);
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2022
diff changeset
   488
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   489
if byte(s[1]) < 4 then
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   490
    begin
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2022
diff changeset
   491
    Gear:= AddVisualGear(0, 0, vgtSpeechBubble);
2114
9a8ccc7bc3d8 Fix crash caused by speechbubbles when restoring from save or joining already started net game
unc0rr
parents: 2111
diff changeset
   492
    if Gear <> nil then
9a8ccc7bc3d8 Fix crash caused by speechbubbles when restoring from save or joining already started net game
unc0rr
parents: 2111
diff changeset
   493
       begin
9a8ccc7bc3d8 Fix crash caused by speechbubbles when restoring from save or joining already started net game
unc0rr
parents: 2111
diff changeset
   494
       Gear^.Hedgehog:= CurrentHedgehog;
9a8ccc7bc3d8 Fix crash caused by speechbubbles when restoring from save or joining already started net game
unc0rr
parents: 2111
diff changeset
   495
       Gear^.Text:= text;
9a8ccc7bc3d8 Fix crash caused by speechbubbles when restoring from save or joining already started net game
unc0rr
parents: 2111
diff changeset
   496
       Gear^.FrameTicks:= byte(s[1])
9a8ccc7bc3d8 Fix crash caused by speechbubbles when restoring from save or joining already started net game
unc0rr
parents: 2111
diff changeset
   497
       end
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   498
    end
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   499
else
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   500
    begin
2022
9bbf8af42ace nemo's tweaks to bubbles
unc0rr
parents: 2017
diff changeset
   501
    SpeechType:= byte(s[1])-3;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   502
    SpeechText:= text
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   503
    end;
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2022
diff changeset
   504
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   505
end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   506
1821
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   507
procedure chNewGrave;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   508
begin
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   509
if CheckNoTeamOrHH then exit;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   510
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   511
if not CurrentTeam^.ExtDriven then SendIPC('g');
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   512
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   513
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
   514
end;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   515
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   516
procedure doPut(putX, putY: LongInt; fromAI: boolean);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   517
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   518
if CheckNoTeamOrHH then exit;
162
4822f6face35 Ammo menu now works!
unc0rr
parents: 161
diff changeset
   519
if bShowAmmoMenu then
2407
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   520
	begin
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   521
	bSelected:= true;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   522
	exit
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   523
	end;
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   524
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   525
with CurrentHedgehog^.Gear^,
2407
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   526
	CurrentHedgehog^ do
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   527
	if (State and gstHHChooseTarget) <> 0 then
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   528
		begin
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   529
		isCursorVisible:= false;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   530
		if not CurrentTeam^.ExtDriven then
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   531
			begin
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   532
			if fromAI then
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   533
				begin
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   534
				TargetPoint.X:= putX;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   535
				TargetPoint.Y:= putY
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   536
				end else
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   537
				begin
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   538
				TargetPoint.X:= CursorPoint.X - WorldDx;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   539
				TargetPoint.Y:= cScreenHeight - CursorPoint.Y - WorldDy;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   540
				end;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   541
			SendIPCXY('p', TargetPoint.X, TargetPoint.Y);
2645
89aa2aa89066 Fix bug with cursor coordinates sent via net (or demo/save file)
unc0rr
parents: 2642
diff changeset
   542
			end
89aa2aa89066 Fix bug with cursor coordinates sent via net (or demo/save file)
unc0rr
parents: 2642
diff changeset
   543
		else
89aa2aa89066 Fix bug with cursor coordinates sent via net (or demo/save file)
unc0rr
parents: 2642
diff changeset
   544
			begin
89aa2aa89066 Fix bug with cursor coordinates sent via net (or demo/save file)
unc0rr
parents: 2642
diff changeset
   545
			TargetPoint.X:= putX;
89aa2aa89066 Fix bug with cursor coordinates sent via net (or demo/save file)
unc0rr
parents: 2642
diff changeset
   546
			TargetPoint.Y:= putY
2407
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   547
			end;
2642
097e3baa1305 A message to help debug
unc0rr
parents: 2635
diff changeset
   548
		{$IFDEF DEBUGFILE}AddFilelog('put: ' + inttostr(TargetPoint.X) + ', ' + inttostr(TargetPoint.Y));{$ENDIF}
2407
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   549
		State:= State and not gstHHChooseTarget;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   550
		if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_AttackingPut) <> 0 then
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   551
			Message:= Message or gm_Attack;
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   552
		end
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   553
	else
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   554
		if CurrentTeam^.ExtDriven then
9f413bd5150e - Fix mouse cursor bugs in net game (still has a bug near water)
unc0rr
parents: 2406
diff changeset
   555
			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
   556
end;
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   557
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   558
procedure chPut(var s: shortstring);
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   559
begin
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   560
doPut(0, 0, false)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   561
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   562
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   563
procedure chCapture(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   564
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   565
flagMakeCapture:= true
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   566
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   567
48
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   568
procedure chSkip(var s: shortstring);
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   569
begin
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   570
if not CurrentTeam^.ExtDriven then SendIPC(',');
871
f1bf00b7fd5a - Fix sounds when the turn is skipped
unc0rr
parents: 866
diff changeset
   571
uStats.Skipped;
917
e59614bffc3f Fix handling '/skip' command during net game
unc0rr
parents: 905
diff changeset
   572
skipFlag:= true
48
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   573
end;
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   574
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   575
procedure chSetMap(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   576
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   577
if isDeveloperMode then
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   578
   begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   579
   Pathz[ptMapCurrent]:= Pathz[ptMaps] + '/' + s;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   580
   InitStepsFlags:= InitStepsFlags or cifMap
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   581
   end
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   582
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   583
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   584
procedure chSetTheme(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   585
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   586
if isDeveloperMode then
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   587
   begin
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 72
diff changeset
   588
   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
   589
   InitStepsFlags:= InitStepsFlags or cifTheme
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   590
   end
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   591
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   592
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   593
procedure chSetSeed(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   594
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   595
if isDeveloperMode then
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   596
   begin
102
c45643d3fd78 New faster random generator
unc0rr
parents: 95
diff changeset
   597
   SetRandomSeed(s);
81
d74e0e914b50 More translations
unc0rr
parents: 80
diff changeset
   598
   cSeed:= s;
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   599
   InitStepsFlags:= InitStepsFlags or cifRandomize
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   600
   end
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   601
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   602
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   603
procedure chAmmoMenu(var s: shortstring);
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   604
begin
2855
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   605
if CheckNoTeamOrHH then 
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   606
   bShowAmmoMenu:= true
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   607
else
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   608
   with CurrentTeam^ do
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   609
        with Hedgehogs[CurrHedgehog] do
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   610
             begin
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   611
             bSelected:= false;
682
a37b6966de84 Some misc fixes
unc0rr
parents: 626
diff changeset
   612
2855
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   613
             if bShowAmmoMenu then bShowAmmoMenu:= false
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   614
             else if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or (MultiShootAttacks > 0)
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   615
                  or ((Gear^.State and gstHHDriven) = 0) then else bShowAmmoMenu:= true
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   616
             end
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   617
end;
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   618
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   619
procedure chFullScr(var s: shortstring);
2671
7e0f88013fe8 smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents: 2645
diff changeset
   620
var flags: Longword = 0;
2800
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   621
	ico: PSDL_Surface;
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   622
{$IFDEF DEBUGFILE}
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   623
    buf: array[byte] of char;
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   624
{$ENDIF}
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   625
{$IFDEF SDL13}
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   626
    window: PSDL_Window;
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   627
{$ENDIF}
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   628
begin
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   629
	if Length(s) = 0 then cFullScreen:= not cFullScreen
2671
7e0f88013fe8 smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents: 2645
diff changeset
   630
	else cFullScreen:= s = '1';
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   631
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   632
{$IFDEF DEBUGFILE}
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   633
	AddFileLog('Prepare to change video parameters...');
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   634
{$ENDIF}
2253
ecd10eaa5daf hypothetical opengles improvements
koda
parents: 2240
diff changeset
   635
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   636
	flags:= SDL_OPENGL;// or SDL_RESIZABLE;
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 691
diff changeset
   637
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   638
	if cFullScreen then
1121
d595dc56b4f3 Remember initial resolution settings to use when switching to fullscreen mode
unc0rr
parents: 1120
diff changeset
   639
	begin
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   640
		flags:= flags or SDL_FULLSCREEN;
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   641
		cScreenWidth:= cInitWidth;
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   642
		cScreenHeight:= cInitHeight
2351
a4a17b8df591 Set window caption even in fullscreen mode (suggested by Smaxx)
unc0rr
parents: 2314
diff changeset
   643
	end;
a4a17b8df591 Set window caption even in fullscreen mode (suggested by Smaxx)
unc0rr
parents: 2314
diff changeset
   644
2800
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   645
	// load window icon
2817
4494dab9ef6a Engine:
smxx
parents: 2812
diff changeset
   646
	{$IFNDEF DARWIN}
4494dab9ef6a Engine:
smxx
parents: 2812
diff changeset
   647
	ico:= LoadImage(Pathz[ptGraphics] + '/hwengine', ifIgnoreCaps);
4494dab9ef6a Engine:
smxx
parents: 2812
diff changeset
   648
	{$ELSE}
4494dab9ef6a Engine:
smxx
parents: 2812
diff changeset
   649
	ico:= LoadImage(Pathz[ptGraphics] + '/hwengine_mac', ifIgnoreCaps);
4494dab9ef6a Engine:
smxx
parents: 2812
diff changeset
   650
	{$ENDIF}
2800
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   651
	if ico <> nil then
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   652
		begin
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   653
		SDL_WM_SetIcon(ico, 0);
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   654
		SDL_FreeSurface(ico)
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   655
		end;
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   656
	
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   657
	// set window caption
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   658
	SDL_WM_SetCaption('Hedgewars', nil);
2800
f286d91157b8 Engine:
smxx
parents: 2786
diff changeset
   659
	
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   660
	if SDLPrimSurface <> nil then
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   661
	begin
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   662
{$IFDEF DEBUGFILE}
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   663
		AddFileLog('Freeing old primary surface...');
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   664
{$ENDIF}
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   665
		SDL_FreeSurface(SDLPrimSurface);
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   666
	end;
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   667
	
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   668
{$IFDEF SDL13}
2738
bfccb2ec4334 new graphics from Tiy and frontend is loaded in landscape mode
koda
parents: 2726
diff changeset
   669
	window:= SDL_CreateWindow('Hedgewars', 0, 0, cScreenWidth, cScreenHeight,
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   670
		SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN 	 
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   671
	        {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS{$ENDIF}); 	 
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   672
	SDL_CreateRenderer(window, -1, 0); 	 
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   673
	PixelFormat:= nil; 	 
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   674
	  	 
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   675
	SDL_SetRenderDrawColor(0, 0, 0, 255); 	 
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   676
	SDL_RenderFill(nil); 	 
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   677
	SDL_RenderPresent();
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   678
{$ELSE}
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   679
	SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags);
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   680
	SDLTry(SDLPrimSurface <> nil, true);
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   681
	PixelFormat:= SDLPrimSurface^.format;
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   682
{$ENDIF}
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   683
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   684
{$IFDEF DEBUGFILE}
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   685
	AddFileLog('Setting up OpenGL...');
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   686
	AddFileLog('SDL video driver: ' + string(SDL_VideoDriverName(buf, sizeof(buf))));
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   687
{$ENDIF}
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   688
	SetupOpenGL();
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   689
end;
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   690
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   691
procedure chVol_p(var s: shortstring);
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   692
begin
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   693
inc(cVolumeDelta, 3)
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   694
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   695
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   696
procedure chVol_m(var s: shortstring);
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   697
begin
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   698
dec(cVolumeDelta, 3)
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   699
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   700
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   701
procedure chFindhh(var s: shortstring);
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   702
begin
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   703
if CheckNoTeamOrHH then exit;
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   704
bShowFinger:= true;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   705
FollowGear:= CurrentHedgehog^.Gear
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   706
end;
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   707
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   708
procedure chPause(var s: shortstring);
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   709
begin
1743
ebc54f5fe4e7 Don't allow pause when playing online
unc0rr
parents: 1656
diff changeset
   710
if gameType <> gmtNet then
ebc54f5fe4e7 Don't allow pause when playing online
unc0rr
parents: 1656
diff changeset
   711
	isPaused:= not isPaused;
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   712
SDL_ShowCursor(ord(isPaused))
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   713
end;
539
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   714
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   715
procedure chRotateMask(var s: shortstring);
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   716
begin
2568
e654cbfb23ba Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents: 2428
diff changeset
   717
inc(cTagsMaskIndex);
e654cbfb23ba Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents: 2428
diff changeset
   718
if cTagsMaskIndex > High(cTagsMasks) then cTagsMaskIndex:= Low(cTagsMasks);
e654cbfb23ba Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents: 2428
diff changeset
   719
e654cbfb23ba Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents: 2428
diff changeset
   720
// HACK: skip "health only" if all hogs are invulnerable
e654cbfb23ba Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents: 2428
diff changeset
   721
if ((GameFlags and gfInvulnerable) <> 0) and ((cTagsMasks[cTagsMaskIndex] and not htTransparent) = htHealth) then chRotateMask(s);
539
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   722
end;
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   723
589
f382c41f658a Start implementing triggers in engine
unc0rr
parents: 549
diff changeset
   724
procedure chAddTrigger(var s: shortstring);
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   725
const MAXPARAMS = 16;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   726
var params: array[0..Pred(MAXPARAMS)] of Longword;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   727
    i: LongInt;
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   728
    c: char;
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   729
    tmp: shortstring;
589
f382c41f658a Start implementing triggers in engine
unc0rr
parents: 549
diff changeset
   730
begin
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   731
c:= s[1];
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   732
Delete(s, 1, 1);
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   733
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   734
i:= 0;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   735
while (i < MAXPARAMS) and
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   736
      (Length(s) > 0) do
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   737
    begin
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   738
    SplitBySpace(s, tmp);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   739
    val(s, params[i]);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   740
    s:= tmp;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   741
    inc(i)
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   742
    end;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   743
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   744
case c of
613
e8cf72d0e0f7 Add 'Successful finish' trigger
unc0rr
parents: 606
diff changeset
   745
  's': begin // sTYPE TICKS LIVES GEARTYPE X Y GEARTRIGGER
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   746
       TryDo(i = 7, errmsgWrongNumber, true);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   747
       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
   748
       end;
613
e8cf72d0e0f7 Add 'Successful finish' trigger
unc0rr
parents: 606
diff changeset
   749
  'C': begin
615
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   750
       TryDo(i = 3, errmsgWrongNumber, true);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   751
       AddTriggerSuccess(params[0], params[1], params[2]);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   752
       end;
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   753
  'F': begin
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   754
       TryDo(i = 3, errmsgWrongNumber, true);
b646b3c43369 - Add 'Mission Fail' trigger type
unc0rr
parents: 613
diff changeset
   755
       AddTriggerFail(params[0], params[1], params[2]);
613
e8cf72d0e0f7 Add 'Successful finish' trigger
unc0rr
parents: 606
diff changeset
   756
       end;
595
5ee863f2f568 Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents: 594
diff changeset
   757
  end
589
f382c41f658a Start implementing triggers in engine
unc0rr
parents: 549
diff changeset
   758
end;
626
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   759
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   760
procedure chSpeedup_p(var s: shortstring);
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   761
begin
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   762
isSpeed:= true
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   763
end;
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   764
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   765
procedure chSpeedup_m(var s: shortstring);
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   766
begin
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   767
isSpeed:= false
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   768
end;
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   769
2162
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   770
procedure chZoomIn(var s: shortstring);
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   771
begin
2579
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   772
{$IFDEF IPHONEOS}
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   773
if ZoomValue < 3.5 then
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   774
{$ELSE}
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   775
if ZoomValue < 3.0 then
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   776
{$ENDIF}
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   777
        ZoomValue:= ZoomValue + 0.25;
2162
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   778
end;
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   779
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   780
procedure chZoomOut(var s: shortstring);
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   781
begin
2579
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   782
{$IFDEF IPHONEOS}
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   783
if ZoomValue > 0.5 then
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   784
{$ELSE}
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   785
if ZoomValue > 1.0 then
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   786
{$ENDIF}
e5e4ebf528b5 more updates on touch input/control
koda
parents: 2576
diff changeset
   787
        ZoomValue:= ZoomValue - 0.25;
2162
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   788
end;
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   789
2379
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   790
procedure chZoomReset(var s: shortstring);
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   791
begin
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   792
ZoomValue:= 2.0
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   793
end;
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   794
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   795
procedure chChat(var s: shortstring);
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   796
begin
990
dfa6a6fe1542 Implement history for chat (27 entries), no key binding yet
unc0rr
parents: 970
diff changeset
   797
GameState:= gsChat;
dfa6a6fe1542 Implement history for chat (27 entries), no key binding yet
unc0rr
parents: 970
diff changeset
   798
KeyPressChat(27)
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   799
end;
991
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   800
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   801
procedure chHistory(var s: shortstring);
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   802
begin
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   803
uChat.showAll:= not uChat.showAll
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   804
end;