hedgewars/CCHandlers.inc
changeset 602 f7628ebfccde
parent 595 5ee863f2f568
child 604 2f1165467a66
--- 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);