hedgewars/CCHandlers.inc
author nemo
Sun, 10 Oct 2010 20:16:17 -0400
changeset 3951 c9a63db3e603
parent 3943 9835060e5c01
child 3968 b73bf885e127
permissions -rw-r--r--
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     1
(*
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
     2
* Hedgewars, a free turn based strategy game
3236
4ab3917d7d44 Update (c) lines to 2010 as unc0rr requested - they all had varying values so I just took the first year mentioned, then tacked on -2010
nemo
parents: 3006
diff changeset
     3
* Copyright (c) 2004-2010 Andrey Korotaev <unC0Rr@gmail.com>
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
     4
*
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
     5
* This program is free software; you can redistribute it and/or modify
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
     6
* it under the terms of the GNU General Public License as published by
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
     7
* the Free Software Foundation; version 2 of the License
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
     8
*
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
     9
* This program is distributed in the hope that it will be useful,
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    12
* GNU General Public License for more details.
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    13
*
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    14
* You should have received a copy of the GNU General Public License
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    15
* along with this program; if not, write to the Free Software
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    16
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    17
*)
4
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
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
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
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
    34
s:= s; // avoid compiler hint
1022
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    35
if GameState <> gsConfirm then
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    36
        begin
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    37
        prevGState:= GameState;
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    38
        GameState:= gsConfirm
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    39
        end else
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    40
        GameState:= prevGState
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    41
end;
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    42
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    43
procedure chConfirm(var s: shortstring);
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    44
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
    45
s:= s; // avoid compiler hint
1022
f6a3fcb329ca Start exit confirmation implementation
unc0rr
parents: 991
diff changeset
    46
if GameState = gsConfirm then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    47
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    48
    SendIPC('Q');
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    49
    GameState:= gsExit
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    50
    end
2130
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    51
else
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    52
    begin
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    53
    GameState:= gsChat;
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    54
    KeyPressChat(27);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    55
    KeyPressChat(47);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    56
    KeyPressChat(116);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    57
    KeyPressChat(101);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    58
    KeyPressChat(97);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    59
    KeyPressChat(109);
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    60
    KeyPressChat(32)
708758635955 Please don't take away my checkin privileges - Tiy asked me to keep working on this
nemo
parents: 2125
diff changeset
    61
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    62
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    63
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    64
procedure chCheckProto(var s: shortstring);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
    65
var i, c: LongInt;
205
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
if isDeveloperMode then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    68
begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    69
val(s, i, c);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    70
if (c <> 0) or (i = 0) then exit;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    71
TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old', true);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    72
TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new', true)
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    73
end
205
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    74
end;
8d9aff55e6ab - Set version to 0.8
unc0rr
parents: 192
diff changeset
    75
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    76
procedure chAddTeam(var s: shortstring);
549
4278a80140a8 - Introduce clans (teams with same color)
unc0rr
parents: 547
diff changeset
    77
var Color: Longword;
2874
3c7c2bf1ba38 A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents: 2855
diff changeset
    78
    ts, cs: shortstring;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    79
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
    80
cs:= '';
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
    81
ts:= '';
145
e593d5266e01 - Fix crash in AI
unc0rr
parents: 110
diff changeset
    82
if isDeveloperMode then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    83
begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    84
SplitBySpace(s, cs);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    85
SplitBySpace(cs, ts);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    86
val(cs, Color);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    87
TryDo(Color <> 0, 'Error: black team color', true);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
    88
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    89
// color is always little endian so the mask must be constant also in big endian archs
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    90
Color:= Color or $FF000000;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    91
    
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    92
AddTeam(Color);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    93
CurrentTeam^.TeamName:= ts;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    94
CurrentTeam^.PlayerHash:= s;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    95
if GameType in [gmtDemo, gmtSave] then CurrentTeam^.ExtDriven:= true;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
    96
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    97
CurrentTeam^.voicepack:= AskForVoicepack('Default')
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
    98
end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    99
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   100
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   101
procedure chTeamLocal(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   102
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   103
s:= s; // avoid compiler hint
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   104
if not isDeveloperMode then exit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   105
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/rdriven"', true);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   106
CurrentTeam^.ExtDriven:= true
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   107
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   108
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   109
procedure chGrave(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   110
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   111
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/grave"', true);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   112
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   113
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   114
CurrentTeam^.GraveName:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   115
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   116
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   117
procedure chFort(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   118
begin
764
7513452b1d51 Now game looks almost like it did before switching to OpenGL
unc0rr
parents: 753
diff changeset
   119
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/fort"', true);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   120
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   121
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   122
CurrentTeam^.FortName:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   123
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   124
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   125
procedure chVoicepack(var s: shortstring);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   126
begin
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   127
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   128
if s[1]='"' then Delete(s, 1, 1);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   129
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   130
CurrentTeam^.voicepack:= AskForVoicepack(s)
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   131
end;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1639
diff changeset
   132
2747
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   133
procedure chFlag(var s: shortstring);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   134
begin
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   135
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/flag"', true);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   136
if s[1]='"' then Delete(s, 1, 1);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   137
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   138
CurrentTeam^.flag:= s
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   139
end;
7889a3a9724f Server:
smxx
parents: 2738
diff changeset
   140
2786
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   141
procedure chScript(var s: shortstring);
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   142
begin
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   143
if s[1]='"' then Delete(s, 1, 1);
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   144
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   145
ScriptLoad(s)
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   146
end;
85f6425a4d74 Engine:
smxx
parents: 2747
diff changeset
   147
312
c36d0b34ac3d Use new parameters, small protocol change
unc0rr
parents: 288
diff changeset
   148
procedure chAddHH(var id: shortstring);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   149
var s: shortstring;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   150
    Gear: PGear;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   151
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   152
s:= '';
394
4c017ae1226a - Implement hack to let ammo stores work without needed assistance of frontend
unc0rr
parents: 393
diff changeset
   153
if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
312
c36d0b34ac3d Use new parameters, small protocol change
unc0rr
parents: 288
diff changeset
   154
with CurrentTeam^ do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   155
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   156
    SplitBySpace(id, s);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   157
    CurrentHedgehog:= @Hedgehogs[HedgehogsNumber];
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   158
    val(id, CurrentHedgehog^.BotLevel);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   159
    Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   160
    SplitBySpace(s, id);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   161
    val(s, Gear^.Health);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   162
    TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   163
    PHedgehog(Gear^.Hedgehog)^.Team:= CurrentTeam;
2881
70d7976fa829 Flag the sharing of ammo between clan teams.
nemo
parents: 2874
diff changeset
   164
    if (GameFlags and gfSharedAmmo) <> 0 then CurrentHedgehog^.AmmoStore:= Clan^.ClanIndex
3943
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3935
diff changeset
   165
    else if (GameFlags and gfPerHogAmmo) <> 0 then
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3935
diff changeset
   166
        begin
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3935
diff changeset
   167
        AddAmmoStore;
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3935
diff changeset
   168
        CurrentHedgehog^.AmmoStore:= StoreCnt - 1
9835060e5c01 Add per-hog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents: 3935
diff changeset
   169
        end
2881
70d7976fa829 Flag the sharing of ammo between clan teams.
nemo
parents: 2874
diff changeset
   170
    else CurrentHedgehog^.AmmoStore:= TeamsCount - 1;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   171
    CurrentHedgehog^.Gear:= Gear;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   172
    CurrentHedgehog^.Name:= id;
2808
8f48b538d591 Need this too to set it to last hog for current switch alg
nemo
parents: 2800
diff changeset
   173
    CurrHedgehog:= HedgehogsNumber;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   174
    inc(HedgehogsNumber)
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   175
    end
1242
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   176
end;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   177
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   178
procedure chSetHat(var s: shortstring);
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   179
begin
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   180
if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
4aca5f7b2504 Hats now fully implemented for local game
unc0rr
parents: 1127
diff changeset
   181
with CurrentTeam^ do
2726
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   182
    begin
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   183
    if not CurrentHedgehog^.King then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   184
    if (s = '') or 
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   185
        (((GameFlags and gfKing) <> 0) and (s = 'crown')) or
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   186
        ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   187
        CurrentHedgehog^.Hat:= 'NoHat'
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   188
    else
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   189
        CurrentHedgehog^.Hat:= s
2726
a84fc5113d01 Update translation files, add "King Mode"
nemo
parents: 2724
diff changeset
   190
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   191
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   192
604
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   193
procedure chSetHHCoords(var x: shortstring);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   194
var y: shortstring;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   195
    t: Longint;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   196
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   197
y:= '';
604
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   198
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
   199
SplitBySpace(x, y);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   200
val(x, t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   201
CurrentHedgehog^.Gear^.X:= int2hwFloat(t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   202
val(y, t);
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   203
CurrentHedgehog^.Gear^.Y:= int2hwFloat(t)
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   204
end;
2f1165467a66 Let hedgehog position be taken from config, still more work is needed
unc0rr
parents: 602
diff changeset
   205
3346
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   206
procedure chSetAmmoLoadout(var descr: shortstring);
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   207
begin
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   208
SetAmmoLoadout(descr)
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   209
end;
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   210
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   211
procedure chSetAmmoDelay(var descr: shortstring);
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   212
begin
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   213
SetAmmoDelay(descr)
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   214
end;
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   215
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   216
procedure chSetAmmoProbability(var descr: shortstring);
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   217
begin
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   218
SetAmmoProbability(descr)
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   219
end;
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   220
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   221
procedure chSetAmmoReinforcement(var descr: shortstring);
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   222
begin
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   223
SetAmmoReinforcement(descr)
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   224
end;
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   225
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   226
procedure chAddAmmoStore(var descr: shortstring);
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   227
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   228
descr:= ''; // avoid compiler hint
3346
967fd96f7373 Engine/Frontend:
smxx
parents: 3336
diff changeset
   229
AddAmmoStore
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   230
end;
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 281
diff changeset
   231
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   232
procedure chBind(var id: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   233
var s: shortstring;
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 358
diff changeset
   234
    b: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   235
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   236
s:= '';
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   237
if CurrentTeam = nil then exit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   238
SplitBySpace(id, s);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   239
if s[1]='"' then Delete(s, 1, 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   240
if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   241
b:= KeyNameToCode(id);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   242
if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false)
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   243
        else CurrentTeam^.Binds[b]:= s
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   244
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   245
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   246
procedure chCurU_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   247
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   248
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   249
CursorMovementY:= -1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   250
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   251
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   252
procedure chCurU_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   253
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   254
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   255
CursorMovementY:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   256
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   257
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   258
procedure chCurD_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   259
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   260
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   261
CursorMovementY:= 1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   262
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   263
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   264
procedure chCurD_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   265
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   266
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   267
CursorMovementY:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   268
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   269
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   270
procedure chCurL_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   271
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   272
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   273
CursorMovementX:= -1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   274
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   275
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   276
procedure chCurL_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   277
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   278
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   279
CursorMovementX:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   280
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   281
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   282
procedure chCurR_p(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   283
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   284
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   285
CursorMovementX:= 1;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   286
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   287
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   288
procedure chCurR_m(var s: shortstring);
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   289
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   290
s:= s; // avoid compiler hint
2428
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   291
CursorMovementX:= 0;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   292
end;
6800f8aa0184 Huge Smaxx patch with some fixes by me:
unc0rr
parents: 2407
diff changeset
   293
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   294
procedure chLeft_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   295
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   296
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   297
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   298
if not CurrentTeam^.ExtDriven then SendIPC('L');
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   299
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   300
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   301
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   302
    Message:= Message or gmLeft
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   303
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   304
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   305
procedure chLeft_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   306
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   307
s:= s; // avoid compiler hint
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   308
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   309
if not CurrentTeam^.ExtDriven then SendIPC('l');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   310
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   311
    Message:= Message and not gmLeft
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   312
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   313
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   314
procedure chRight_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   315
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   316
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   317
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   318
if not CurrentTeam^.ExtDriven then SendIPC('R');
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   319
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   320
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   321
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   322
    Message:= Message or gmRight
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   323
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   324
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   325
procedure chRight_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   326
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   327
s:= s; // avoid compiler hint
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   328
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   329
if not CurrentTeam^.ExtDriven then SendIPC('r');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   330
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   331
    Message:= Message and not gmRight
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   332
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   333
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   334
procedure chUp_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   335
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   336
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   337
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   338
if not CurrentTeam^.ExtDriven then SendIPC('U');
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   339
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   340
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   341
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   342
    Message:= Message or gmUp
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   343
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   344
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   345
procedure chUp_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   346
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   347
s:= s; // avoid compiler hint
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   348
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   349
if not CurrentTeam^.ExtDriven then SendIPC('u');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   350
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   351
    Message:= Message and not gmUp
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   352
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   353
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   354
procedure chDown_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   355
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   356
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   357
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   358
if not CurrentTeam^.ExtDriven then SendIPC('D');
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   359
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   360
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   361
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   362
    Message:= Message or gmDown
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   363
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   364
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   365
procedure chDown_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   366
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   367
s:= s; // avoid compiler hint
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   368
if CheckNoTeamOrHH then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   369
if not CurrentTeam^.ExtDriven then SendIPC('d');
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   370
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   371
    Message:= Message and not gmDown
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   372
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   373
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   374
procedure chPrecise_p(var s: shortstring);
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   375
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   376
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   377
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   378
if not CurrentTeam^.ExtDriven then SendIPC('Z');
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   379
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   380
bShowFinger:= false;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   381
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   382
    Message:= Message or gmPrecise
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   383
end;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   384
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   385
procedure chPrecise_m(var s: shortstring);
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   386
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   387
s:= s; // avoid compiler hint
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   388
if CheckNoTeamOrHH then exit;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   389
if not CurrentTeam^.ExtDriven then SendIPC('z');
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   390
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   391
    Message:= Message and not gmPrecise
1639
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   392
end;
89b536a3cf3c Implement precise aiming when pressing left shift
unc0rr
parents: 1525
diff changeset
   393
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   394
procedure chLJump(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   395
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   396
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   397
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   398
if not CurrentTeam^.ExtDriven then SendIPC('j');
3797
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   399
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   400
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   401
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   402
    Message:= Message or gmLJump
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   403
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   404
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   405
procedure chHJump(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   406
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   407
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   408
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   409
if not CurrentTeam^.ExtDriven then SendIPC('J');
3797
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   410
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   411
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   412
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   413
    Message:= Message or gmHJump
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   414
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   415
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   416
procedure chAttack_p(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   417
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   418
s:= s; // avoid compiler hint
3336
d7c1ffed1e15 Engine:
smxx
parents: 3236
diff changeset
   419
if CheckNoTeamOrHH or isPaused then exit;
3797
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   420
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   421
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   422
with CurrentHedgehog^.Gear^ do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   423
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   424
    {$IFDEF DEBUGFILE}AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State));{$ENDIF}
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   425
    if ((State and gstHHDriven) <> 0) then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   426
        begin
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   427
        FollowGear:= CurrentHedgehog^.Gear;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   428
        if not CurrentTeam^.ExtDriven then SendIPC('A');
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   429
        Message:= Message or gmAttack
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   430
        end
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   431
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   432
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   433
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   434
procedure chAttack_m(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   435
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   436
s:= s; // avoid compiler hint
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   437
if CheckNoTeamOrHH then exit;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   438
with CurrentHedgehog^.Gear^ do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   439
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   440
    if not CurrentTeam^.ExtDriven and
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   441
        ((Message and gmAttack) <> 0) then SendIPC('a');
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   442
    Message:= Message and not gmAttack
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   443
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   444
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   445
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   446
procedure chSwitch(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   447
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   448
s:= s; // avoid compiler hint
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   449
if CheckNoTeamOrHH or isPaused then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   450
if not CurrentTeam^.ExtDriven then SendIPC('S');
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   451
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   452
bShowFinger:= false;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   453
with CurrentHedgehog^.Gear^ do
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   454
    Message:= Message or gmSwitch
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   455
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   456
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   457
procedure chNextTurn(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   458
begin
3639
b5cdbcc89b61 use a button instead of label and simplify a lot touch interaction
koda
parents: 3638
diff changeset
   459
    s:= s; // avoid compiler hint
b5cdbcc89b61 use a button instead of label and simplify a lot touch interaction
koda
parents: 3638
diff changeset
   460
    TryDo(AllInactive, '/nextturn called when not all gears are inactive', true);
2046
57fb5673ff17 Oops, some debug stuff left
unc0rr
parents: 2045
diff changeset
   461
3639
b5cdbcc89b61 use a button instead of label and simplify a lot touch interaction
koda
parents: 3638
diff changeset
   462
    if not CurrentTeam^.ExtDriven then SendIPC('N');
b5cdbcc89b61 use a button instead of label and simplify a lot touch interaction
koda
parents: 3638
diff changeset
   463
{$IFDEF DEBUGFILE}
b5cdbcc89b61 use a button instead of label and simplify a lot touch interaction
koda
parents: 3638
diff changeset
   464
    AddFileLog('Doing SwitchHedgehog: time '+inttostr(GameTicks));
b5cdbcc89b61 use a button instead of label and simplify a lot touch interaction
koda
parents: 3638
diff changeset
   465
{$ENDIF}
3935
5ca27a0e9a63 made the new menu toggable
koda
parents: 3928
diff changeset
   466
    perfExt_NewTurnBeginning();
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   467
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   468
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   469
procedure chSay(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   470
begin
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1242
diff changeset
   471
SendIPC('s' + s);
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   472
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   473
if copy(s, 1, 4) = '/me ' then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   474
    s:= #2'* ' + UserNick + ' ' + copy(s, 5, Length(s) - 4)
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   475
else
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   476
    s:= #1 + UserNick + ': ' + s;
1378
1a391883261d Allow /me in chat
unc0rr
parents: 1356
diff changeset
   477
1356
77ab8735401d Share chat between frontend and engine
unc0rr
parents: 1242
diff changeset
   478
AddChatString(s)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   479
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   480
2124
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   481
procedure chTeamSay(var s: shortstring);
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   482
begin
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   483
SendIPC('b' + s);
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   484
2962
38237a443f74 Engine:
smxx
parents: 2957
diff changeset
   485
s:= #4 + '[Team] ' + UserNick + ': ' + s;
2124
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   486
2396
e13a1117152b Colorize chat messages in frontend and engine
unc0rr
parents: 2379
diff changeset
   487
AddChatString(s)
2124
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   488
end;
d39c61eaca15 experiment in only sending a message to your clan
nemo
parents: 2114
diff changeset
   489
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   490
procedure chTimer(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   491
begin
2314
953771a06c64 Better fix
unc0rr
parents: 2313
diff changeset
   492
if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or CheckNoTeamOrHH then exit;
953771a06c64 Better fix
unc0rr
parents: 2313
diff changeset
   493
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   494
if not CurrentTeam^.ExtDriven then SendIPC(s);
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   495
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   496
bShowFinger:= false;
926
d231e007452a Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents: 917
diff changeset
   497
with CurrentHedgehog^.Gear^ do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   498
    begin
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   499
    Message:= Message or gmTimer;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   500
    MsgParam:= byte(s[1]) - ord('0')
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   501
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   502
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   503
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   504
procedure chSlot(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   505
var slot: LongWord;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   506
begin
95
1ef5e2c41115 - Fixed compilation
unc0rr
parents: 83
diff changeset
   507
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   508
slot:= byte(s[1]) - 49;
10
edf56dca1587 - Mine weapon
unc0rr
parents: 4
diff changeset
   509
if slot > cMaxSlotIndex then exit;
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   510
if not CurrentTeam^.ExtDriven then SendIPC(char(byte(s[1]) + 79));
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   511
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   512
bShowFinger:= false;
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   513
with CurrentHedgehog^.Gear^ do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   514
    begin
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   515
    Message:= Message or gmSlot;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   516
    MsgParam:= slot
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   517
    end
783
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   518
end;
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   519
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   520
procedure chSetWeapon(var s: shortstring);
4f59db6f147d - New command 'set weapon'
unc0rr
parents: 764
diff changeset
   521
begin
3637
0db298524c3d implement the check on the type of ammo requiring a second tap to confirm
koda
parents: 3611
diff changeset
   522
    if (s[0] <> #1) or CheckNoTeamOrHH then exit;
784
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   523
3637
0db298524c3d implement the check on the type of ammo requiring a second tap to confirm
koda
parents: 3611
diff changeset
   524
    if TAmmoType(s[1]) > High(TAmmoType) then exit;
784
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   525
3637
0db298524c3d implement the check on the type of ammo requiring a second tap to confirm
koda
parents: 3611
diff changeset
   526
    if not CurrentTeam^.ExtDriven then SendIPC('w' + s);
784
b203147d91b5 - Handle new command in game record and net
unc0rr
parents: 783
diff changeset
   527
3637
0db298524c3d implement the check on the type of ammo requiring a second tap to confirm
koda
parents: 3611
diff changeset
   528
    with CurrentHedgehog^.Gear^ do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   529
    begin
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   530
        Message:= Message or gmWeapon;
3637
0db298524c3d implement the check on the type of ammo requiring a second tap to confirm
koda
parents: 3611
diff changeset
   531
        MsgParam:= byte(s[1]);
0db298524c3d implement the check on the type of ammo requiring a second tap to confirm
koda
parents: 3611
diff changeset
   532
    end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   533
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   534
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   535
procedure chTaunt(var s: shortstring);
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   536
begin
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   537
if (s[0] <> #1) or CheckNoTeamOrHH then exit;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   538
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   539
if TWave(s[1]) > High(TWave) then exit;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   540
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   541
if not CurrentTeam^.ExtDriven then SendIPC('t' + s);
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   542
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   543
with CurrentHedgehog^.Gear^ do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   544
    begin
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   545
    Message:= Message or gmAnimate;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   546
    MsgParam:= byte(s[1])
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   547
    end
1035
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   548
end;
6f5842bc481b Hopefully done taunts implementation
unc0rr
parents: 1022
diff changeset
   549
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   550
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
   551
var Gear: PVisualGear;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   552
    text: shortstring;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   553
begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   554
text:= copy(s, 2, Length(s)-1);
2110
df2a1fe3617a Some updates
unc0rr
parents: 2079
diff changeset
   555
if CheckNoTeamOrHH
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   556
or ((CurrentHedgehog^.Gear^.State and gstHHDriven) = 0) then
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   557
    begin
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   558
    chSay(text);
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   559
    exit
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   560
    end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   561
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   562
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
   563
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   564
if byte(s[1]) < 4 then
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   565
    begin
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2022
diff changeset
   566
    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
   567
    if Gear <> nil then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   568
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   569
    Gear^.Hedgehog:= CurrentHedgehog;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   570
    Gear^.Text:= text;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   571
    Gear^.FrameTicks:= byte(s[1])
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   572
    end
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   573
    end
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   574
else
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   575
    begin
2022
9bbf8af42ace nemo's tweaks to bubbles
unc0rr
parents: 2017
diff changeset
   576
    SpeechType:= byte(s[1])-3;
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   577
    SpeechText:= text
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   578
    end;
2042
905c554d62e6 Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents: 2022
diff changeset
   579
2017
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   580
end;
7845c77c8d31 nemo's great patch:
unc0rr
parents: 1850
diff changeset
   581
1821
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   582
procedure chNewGrave;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   583
begin
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   584
if CheckNoTeamOrHH or isPaused then exit;
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   585
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   586
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
1821
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   587
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   588
if not CurrentTeam^.ExtDriven then SendIPC('g');
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   589
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   590
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
   591
end;
6b6cf3389f92 Hedgehog drops a grave on "/newgrave" command. Patch by nemo
unc0rr
parents: 1743
diff changeset
   592
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   593
procedure doPut(putX, putY: LongInt; fromAI: boolean);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   594
begin
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   595
if CheckNoTeamOrHH or isPaused then exit;
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   596
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
3776
28849f5a03c9 Engine:
smaxx
parents: 3774
diff changeset
   597
bShowFinger:= false;
2963
0f0789204802 This might be all it takes to prevent the desync. needs local/remote testing. Also toggle 2nd barrel state on 0 movement
nemo
parents: 2962
diff changeset
   598
if not CurrentTeam^.ExtDriven and bShowAmmoMenu then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   599
    begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   600
    bSelected:= true;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   601
    exit
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   602
    end;
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   603
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   604
with CurrentHedgehog^.Gear^,
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   605
    CurrentHedgehog^ do
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   606
    if (State and gstHHChooseTarget) <> 0 then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   607
        begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   608
        isCursorVisible:= false;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   609
        if not CurrentTeam^.ExtDriven then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   610
            begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   611
            if fromAI then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   612
                begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   613
                TargetPoint.X:= putX;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   614
                TargetPoint.Y:= putY
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   615
                end else
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   616
                begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   617
                TargetPoint.X:= CursorPoint.X - WorldDx;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   618
                TargetPoint.Y:= cScreenHeight - CursorPoint.Y - WorldDy;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   619
                end;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   620
            SendIPCXY('p', TargetPoint.X, TargetPoint.Y);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   621
            end
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   622
        else
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   623
            begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   624
            TargetPoint.X:= putX;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   625
            TargetPoint.Y:= putY
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   626
            end;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   627
        {$IFDEF DEBUGFILE}AddFilelog('put: ' + inttostr(TargetPoint.X) + ', ' + inttostr(TargetPoint.Y));{$ENDIF}
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   628
        State:= State and not gstHHChooseTarget;
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3797
diff changeset
   629
        if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackingPut) <> 0 then
3894
9abce5468583 Engine:
smaxx
parents: 3836
diff changeset
   630
            Message:= Message or gmAttack;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   631
        end
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   632
    else
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   633
        if CurrentTeam^.ExtDriven then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   634
            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
   635
end;
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   636
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   637
procedure chPut(var s: shortstring);
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 542
diff changeset
   638
begin
3638
33ee433749ba touch overlay reworked, improvements to zoom and confirmation
koda
parents: 3637
diff changeset
   639
    s:= s; // avoid compiler hint
33ee433749ba touch overlay reworked, improvements to zoom and confirmation
koda
parents: 3637
diff changeset
   640
    doPut(0, 0, false);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   641
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   642
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   643
procedure chCapture(var s: shortstring);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   644
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   645
s:= s; // avoid compiler hint
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   646
flagMakeCapture:= true
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   647
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   648
48
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   649
procedure chSkip(var s: shortstring);
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   650
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   651
s:= s; // avoid compiler hint
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 324
diff changeset
   652
if not CurrentTeam^.ExtDriven then SendIPC(',');
871
f1bf00b7fd5a - Fix sounds when the turn is skipped
unc0rr
parents: 866
diff changeset
   653
uStats.Skipped;
917
e59614bffc3f Fix handling '/skip' command during net game
unc0rr
parents: 905
diff changeset
   654
skipFlag:= true
48
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   655
end;
0f396d0c429d - New /skip command
unc0rr
parents: 37
diff changeset
   656
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   657
procedure chSetMap(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   658
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   659
if isDeveloperMode then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   660
begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   661
Pathz[ptMapCurrent]:= Pathz[ptMaps] + '/' + s;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   662
InitStepsFlags:= InitStepsFlags or cifMap
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   663
end
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   664
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   665
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   666
procedure chSetTheme(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   667
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   668
if isDeveloperMode then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   669
begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   670
Pathz[ptCurrTheme]:= Pathz[ptThemes] + '/' + s;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   671
InitStepsFlags:= InitStepsFlags or cifTheme
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   672
end
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   673
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   674
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   675
procedure chSetSeed(var s: shortstring);
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   676
begin
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   677
if isDeveloperMode then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   678
begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   679
SetRandomSeed(s);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   680
cSeed:= s;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   681
InitStepsFlags:= InitStepsFlags or cifRandomize
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   682
end
55
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   683
end;
e09f7c952a40 Send run parameters by cmd line, game parameters by IPC... breaks network game
unc0rr
parents: 48
diff changeset
   684
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   685
procedure chAmmoMenu(var s: shortstring);
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   686
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   687
s:= s; // avoid compiler hint
3797
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   688
if CheckNoTeamOrHH then
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   689
    bShowAmmoMenu:= true
2855
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   690
else
3797
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   691
    begin
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   692
    with CurrentTeam^ do
2855
7e6adeb57427 Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents: 2853
diff changeset
   693
        with Hedgehogs[CurrHedgehog] do
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   694
            begin
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   695
            bSelected:= false;
682
a37b6966de84 Some misc fixes
unc0rr
parents: 626
diff changeset
   696
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   697
            if bShowAmmoMenu then bShowAmmoMenu:= false
3396
e5b3e5f2818e More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents: 3395
diff changeset
   698
            else if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or 
3836
833c0f32e326 Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents: 3797
diff changeset
   699
                    ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) = 0)) or
3396
e5b3e5f2818e More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents: 3395
diff changeset
   700
                    ((Gear^.State and gstHHDriven) = 0) then else bShowAmmoMenu:= true
3797
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   701
            end;
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   702
    if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1
e097914ac0e2 Engine:
smaxx
parents: 3796
diff changeset
   703
    end
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   704
end;
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   705
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   706
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
   707
var flags: Longword = 0;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   708
    ico: PSDL_Surface;
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   709
{$IFDEF DEBUGFILE}
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   710
    buf: array[byte] of char;
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   711
{$ENDIF}
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   712
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   713
    s:= s; // avoid compiler hint
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   714
    if Length(s) = 0 then cFullScreen:= not cFullScreen
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   715
    else cFullScreen:= s = '1';
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   716
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   717
{$IFDEF DEBUGFILE}
3426
4ec21c6d6d33 buf needs to be used in IFDEF if declared in IFDEF
nemo
parents: 3407
diff changeset
   718
    buf[0]:= char(0); // avoid compiler hint
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   719
    AddFileLog('Prepare to change video parameters...');
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   720
{$ENDIF}
2253
ecd10eaa5daf hypothetical opengles improvements
koda
parents: 2240
diff changeset
   721
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   722
    flags:= SDL_OPENGL;// or SDL_RESIZABLE;
753
40fc0deb388f Start conversion to OpenGL rendering
unc0rr
parents: 691
diff changeset
   723
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   724
    if cFullScreen then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   725
        flags:= flags or SDL_FULLSCREEN;
2351
a4a17b8df591 Set window caption even in fullscreen mode (suggested by Smaxx)
unc0rr
parents: 2314
diff changeset
   726
3006
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   727
{$IFDEF SDL_IMAGE_NEWER}
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   728
    WriteToConsole('Init SDL_image... ');
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   729
    SDLTry(IMG_Init(IMG_INIT_PNG) <> 0, true);
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   730
    WriteLnToConsole(msgOK);
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   731
{$ENDIF}
3405
8fdb08497bf1 js' patch that restores Vsync on snow leopard
koda
parents: 3396
diff changeset
   732
    // load engine icon
3006
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   733
{$IFDEF DARWIN}
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   734
    ico:= LoadImage(Pathz[ptGraphics] + '/hwengine_mac', ifIgnoreCaps);
3006
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   735
{$ELSE}
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   736
    ico:= LoadImage(Pathz[ptGraphics] + '/hwengine', ifIgnoreCaps);
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   737
{$ENDIF}
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   738
    if ico <> nil then
3006
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   739
    begin
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   740
        SDL_WM_SetIcon(ico, 0);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   741
        SDL_FreeSurface(ico)
3006
da6023c2745b restore compilation on simulator and device
koda
parents: 2990
diff changeset
   742
    end;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   743
    
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   744
    // set window caption
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   745
    SDL_WM_SetCaption('Hedgewars', nil);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   746
    
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   747
    if SDLPrimSurface <> nil then
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   748
    begin
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   749
{$IFDEF DEBUGFILE}
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   750
        AddFileLog('Freeing old primary surface...');
2697
75880595a9f1 code cleanup and opengles optimizations
koda
parents: 2695
diff changeset
   751
{$ENDIF}
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   752
        SDL_FreeSurface(SDLPrimSurface);
3522
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3426
diff changeset
   753
        SDLPrimSurface:= nil;
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   754
    end;
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   755
    
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   756
{$IFDEF SDL13}
3598
a8aa06bae895 tiy new overlay graphics
koda
parents: 3551
diff changeset
   757
    if SDLwindow = nil then
a8aa06bae895 tiy new overlay graphics
koda
parents: 3551
diff changeset
   758
    begin
a8aa06bae895 tiy new overlay graphics
koda
parents: 3551
diff changeset
   759
        SDLwindow:= SDL_CreateWindow('Hedgewars', 0, 0, cScreenWidth, cScreenHeight,
a8aa06bae895 tiy new overlay graphics
koda
parents: 3551
diff changeset
   760
                        SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN    
a8aa06bae895 tiy new overlay graphics
koda
parents: 3551
diff changeset
   761
                        {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS{$ENDIF});     
a8aa06bae895 tiy new overlay graphics
koda
parents: 3551
diff changeset
   762
        SDL_CreateRenderer(SDLwindow, -1, 0);
a8aa06bae895 tiy new overlay graphics
koda
parents: 3551
diff changeset
   763
    end;
3395
095273ad0e08 adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents: 3346
diff changeset
   764
    
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2947
diff changeset
   765
    SDL_SetRenderDrawColor(0, 0, 0, 255);    
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2947
diff changeset
   766
    SDL_RenderFill(nil);     
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   767
    SDL_RenderPresent();
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   768
{$ELSE}
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   769
    SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   770
    SDLTry(SDLPrimSurface <> nil, true);
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   771
    PixelFormat:= SDLPrimSurface^.format;
2716
b9ca1bfca24f complete the replacement of init/free wrappers for every unit
koda
parents: 2714
diff changeset
   772
{$ENDIF}
192
b644f61e803f Add video driver name to debug
unc0rr
parents: 189
diff changeset
   773
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   774
{$IFDEF DEBUGFILE}
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   775
    AddFileLog('Setting up OpenGL...');
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   776
    AddFileLog('SDL video driver: ' + shortstring(SDL_VideoDriverName(buf, sizeof(buf))));
905
57fec00e1b66 More verbose video parameters setting
unc0rr
parents: 904
diff changeset
   777
{$ENDIF}
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   778
    SetupOpenGL();
166
2920ab2bf329 Switching between fullscreen and windowed modes on 'F' key
unc0rr
parents: 162
diff changeset
   779
end;
161
d8870bbf960e - AmmoMenu
unc0rr
parents: 154
diff changeset
   780
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   781
procedure chVol_p(var s: shortstring);
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   782
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   783
s:= s; // avoid compiler hint
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   784
inc(cVolumeDelta, 3)
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   785
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   786
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   787
procedure chVol_m(var s: shortstring);
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   788
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   789
s:= s; // avoid compiler hint
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   790
dec(cVolumeDelta, 3)
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   791
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 167
diff changeset
   792
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   793
procedure chFindhh(var s: shortstring);
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   794
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   795
s:= s; // avoid compiler hint
3336
d7c1ffed1e15 Engine:
smxx
parents: 3236
diff changeset
   796
if CheckNoTeamOrHH or isPaused then exit;
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   797
bShowFinger:= true;
602
f7628ebfccde Add CurrentHedgehog variable which simplifies code
unc0rr
parents: 595
diff changeset
   798
FollowGear:= CurrentHedgehog^.Gear
176
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   799
end;
533d03041dcd 'h' marks out current hedgehog
unc0rr
parents: 175
diff changeset
   800
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   801
procedure chPause(var s: shortstring);
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   802
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   803
s:= s; // avoid compiler hint
3796
4ab6d6f78312 Engine:
smaxx
parents: 3776
diff changeset
   804
if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1;
1743
ebc54f5fe4e7 Don't allow pause when playing online
unc0rr
parents: 1656
diff changeset
   805
if gameType <> gmtNet then
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   806
    isPaused:= not isPaused;
281
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   807
SDL_ShowCursor(ord(isPaused))
5b483aa9f2ab Pause support (mouse cursor is released when the game is paused)
unc0rr
parents: 263
diff changeset
   808
end;
539
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   809
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   810
procedure chRotateMask(var s: shortstring);
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   811
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   812
s:= s; // avoid compiler hint
2947
803b277e4894 hate Smaxx (tested)
unc0rr
parents: 2905
diff changeset
   813
if ((GameFlags and gfInvulnerable) = 0) then cTagsMask:= cTagsMasks[cTagsMask] else cTagsMask:= cTagsMasksNoHealth[cTagsMask];
539
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   814
end;
6a9bf1852bbc Ability to choose which info is shown above hedgehogs
unc0rr
parents: 534
diff changeset
   815
626
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   816
procedure chSpeedup_p(var s: shortstring);
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   817
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   818
s:= s; // avoid compiler hint
626
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   819
isSpeed:= true
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   820
end;
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   821
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   822
procedure chSpeedup_m(var s: shortstring);
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   823
begin
3407
dcc129c4352e Engine:
smxx
parents: 3405
diff changeset
   824
s:= s; // avoid compiler hint
626
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   825
isSpeed:= false
a30171dbcd19 's' key to speed up demo playing
unc0rr
parents: 615
diff changeset
   826
end;
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   827
2162
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   828
procedure chZoomIn(var s: shortstring);
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   829
begin
3523
6592fbb969da fix zoom smoothness
koda
parents: 3522
diff changeset
   830
    s:= s; // avoid compiler hint
3638
33ee433749ba touch overlay reworked, improvements to zoom and confirmation
koda
parents: 3637
diff changeset
   831
    if ZoomValue < cMinZoomLevel then
33ee433749ba touch overlay reworked, improvements to zoom and confirmation
koda
parents: 3637
diff changeset
   832
        ZoomValue:= ZoomValue + cZoomDelta;
2162
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   833
end;
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   834
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   835
procedure chZoomOut(var s: shortstring);
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   836
begin
3523
6592fbb969da fix zoom smoothness
koda
parents: 3522
diff changeset
   837
    s:= s; // avoid compiler hint
3638
33ee433749ba touch overlay reworked, improvements to zoom and confirmation
koda
parents: 3637
diff changeset
   838
    if ZoomValue > cMaxZoomLevel then
33ee433749ba touch overlay reworked, improvements to zoom and confirmation
koda
parents: 3637
diff changeset
   839
        ZoomValue:= ZoomValue - cZoomDelta;
2162
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   840
end;
2bce91404d49 - Implement zoom-in and zoom-out
unc0rr
parents: 2130
diff changeset
   841
2379
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   842
procedure chZoomReset(var s: shortstring);
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   843
begin
3523
6592fbb969da fix zoom smoothness
koda
parents: 3522
diff changeset
   844
    s:= s; // avoid compiler hint
6592fbb969da fix zoom smoothness
koda
parents: 3522
diff changeset
   845
    ZoomValue:= cDefaultZoomLevel;
2379
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   846
end;
d62b1f224982 - Implement zoom reset
unc0rr
parents: 2373
diff changeset
   847
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   848
procedure chChat(var s: shortstring);
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   849
begin
3680
aaf832c6fbd7 fix panning when zoomed (finally)
koda
parents: 3663
diff changeset
   850
    s:= s; // avoid compiler hint
aaf832c6fbd7 fix panning when zoomed (finally)
koda
parents: 3663
diff changeset
   851
    GameState:= gsChat;
aaf832c6fbd7 fix panning when zoomed (finally)
koda
parents: 3663
diff changeset
   852
    KeyPressChat(27)
946
42c5cc87cbd1 Preparing to have gsChat gamestate
unc0rr
parents: 929
diff changeset
   853
end;
991
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   854
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   855
procedure chHistory(var s: shortstring);
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   856
begin
3680
aaf832c6fbd7 fix panning when zoomed (finally)
koda
parents: 3663
diff changeset
   857
    s:= s; // avoid compiler hint
aaf832c6fbd7 fix panning when zoomed (finally)
koda
parents: 3663
diff changeset
   858
    uChat.showAll:= not uChat.showAll
991
d17c71ee074e Enable history (bound on ` key)
unc0rr
parents: 990
diff changeset
   859
end;