--- a/hedgewars/CCHandlers.inc Thu Sep 20 20:00:10 2007 +0000
+++ b/hedgewars/CCHandlers.inc Fri Sep 21 18:55:44 2007 +0000
@@ -19,7 +19,7 @@
function CheckNoTeamOrHH: boolean;
var Result: boolean;
begin
-Result:= (CurrentTeam = nil) or (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = nil);
+Result:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil);
{$IFDEF DEBUGFILE}
if Result then
if CurrentTeam = nil then AddFileLog('CONSOLE: CurTeam = nil')
@@ -106,9 +106,9 @@
with CurrentTeam^ do
begin
SplitBySpace(id, s);
- val(id, Hedgehogs[HedgehogsNumber].BotLevel);
+ CurrentHedgehog:= @Hedgehogs[HedgehogsNumber];
+ val(id, CurrentHedgehog^.BotLevel);
Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0);
- Gear^.Hedgehog:= @Hedgehogs[HedgehogsNumber];
val(s, Gear^.Health);
TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true);
PHedgehog(Gear^.Hedgehog)^.Team:= CurrentTeam;
@@ -141,7 +141,7 @@
if CheckNoTeamOrHH then exit;
bShowFinger:= false;
if not CurrentTeam^.ExtDriven then SendIPC('L');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message or gm_Left
end;
@@ -149,7 +149,7 @@
begin
if CheckNoTeamOrHH then exit;
if not CurrentTeam^.ExtDriven then SendIPC('l');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message and not gm_Left
end;
@@ -158,7 +158,7 @@
if CheckNoTeamOrHH then exit;
bShowFinger:= false;
if not CurrentTeam^.ExtDriven then SendIPC('R');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message or gm_Right
end;
@@ -166,7 +166,7 @@
begin
if CheckNoTeamOrHH then exit;
if not CurrentTeam^.ExtDriven then SendIPC('r');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message and not gm_Right
end;
@@ -175,7 +175,7 @@
if CheckNoTeamOrHH then exit;
bShowFinger:= false;
if not CurrentTeam^.ExtDriven then SendIPC('U');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message or gm_Up
end;
@@ -183,7 +183,7 @@
begin
if CheckNoTeamOrHH then exit;
if not CurrentTeam^.ExtDriven then SendIPC('u');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message and not gm_Up
end;
@@ -192,7 +192,7 @@
if CheckNoTeamOrHH then exit;
bShowFinger:= false;
if not CurrentTeam^.ExtDriven then SendIPC('D');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message or gm_Down
end;
@@ -200,7 +200,7 @@
begin
if CheckNoTeamOrHH then exit;
if not CurrentTeam^.ExtDriven then SendIPC('d');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message and not gm_Down
end;
@@ -209,7 +209,7 @@
if CheckNoTeamOrHH then exit;
bShowFinger:= false;
if not CurrentTeam^.ExtDriven then SendIPC('j');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message or gm_LJump
end;
@@ -218,7 +218,7 @@
if CheckNoTeamOrHH then exit;
bShowFinger:= false;
if not CurrentTeam^.ExtDriven then SendIPC('J');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message or gm_HJump
end;
@@ -226,13 +226,13 @@
begin
if CheckNoTeamOrHH then exit;
bShowFinger:= false;
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
begin
{$IFDEF DEBUGFILE}AddFileLog('/+attack: Gear^.State = '+inttostr(State));{$ENDIF}
if ((State and gstHHDriven) <> 0) and
((State and (gstAttacked or gstHHChooseTarget)) = 0) then
begin
- FollowGear:= CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear;
+ FollowGear:= CurrentHedgehog^.Gear;
if not CurrentTeam^.ExtDriven then SendIPC('A');
Message:= Message or gm_Attack
end
@@ -242,7 +242,7 @@
procedure chAttack_m(var s: shortstring);
begin
if CheckNoTeamOrHH then exit;
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
begin
if not CurrentTeam^.ExtDriven and
((Message and gm_Attack) <> 0) then SendIPC('a');
@@ -254,7 +254,7 @@
begin
if CheckNoTeamOrHH then exit;
if not CurrentTeam^.ExtDriven then SendIPC('S');
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^ do
+with CurrentHedgehog^.Gear^ do
Message:= Message or gm_Switch
end;
@@ -279,7 +279,7 @@
begin
if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or (CurrentTeam = nil) then exit;
bShowFinger:= false;
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do
+with CurrentHedgehog^ do
if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Timerable) <> 0 then
begin
Ammo^[CurSlot, CurAmmo].Timer:= 1000 * (byte(s[1]) - 48);
@@ -331,8 +331,8 @@
exit
end;
-with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^,
- CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do
+with CurrentHedgehog^.Gear^,
+ CurrentHedgehog^ do
if (State and gstHHChooseTarget) <> 0 then
begin
isCursorVisible:= false;
@@ -450,7 +450,7 @@
begin
if CheckNoTeamOrHH then exit;
bShowFinger:= true;
-FollowGear:= CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear
+FollowGear:= CurrentHedgehog^.Gear
end;
procedure chPause(var s: shortstring);