# HG changeset patch # User unc0rr # Date 1190400944 0 # Node ID f7628ebfccdeeb954ea53831360488b22c90b020 # Parent 78a68cc4d846b0e039751a49de3d90ed42021567 Add CurrentHedgehog variable which simplifies code diff -r 78a68cc4d846 -r f7628ebfccde QTfrontend/game.cpp --- a/QTfrontend/game.cpp Thu Sep 20 20:00:10 2007 +0000 +++ b/QTfrontend/game.cpp Fri Sep 21 18:55:44 2007 +0000 @@ -252,7 +252,7 @@ arguments << cfgdir->absolutePath(); arguments << QString::number(resolution.width()); arguments << QString::number(resolution.height()); - arguments << "16"; // bpp + arguments << "32"; // bpp arguments << QString("%1").arg(ipc_port); arguments << (config->vid_Fullscreen() ? "1" : "0"); arguments << (config->isSoundEnabled() ? "1" : "0"); diff -r 78a68cc4d846 -r f7628ebfccde hedgewars.kdevelop --- a/hedgewars.kdevelop Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars.kdevelop Fri Sep 21 18:55:44 2007 +0000 @@ -18,20 +18,20 @@ hedgewars . false - + kdevsubversion - + executable / /usr/home/unC0Rr/Sources/Hedgewars/Hedgewars-GNA/bin/hedgewars - + false true - + /usr/home/unC0Rr/Sources/Hedgewars/Hedgewars-GNA false false @@ -164,16 +164,16 @@ make - + false 1 0 false - - - + + + default @@ -181,9 +181,9 @@ 0 - - - + + + default @@ -192,12 +192,12 @@ - + - - - - + + + + true false false @@ -302,7 +302,7 @@ false - + set m_,_ theValue @@ -334,13 +334,13 @@ - - - + + + - + /usr/home/unC0Rr/Sources/Hedgewars/Hedgewars-GNA/tags diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/CCHandlers.inc --- 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); diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars/GSHandlers.inc Fri Sep 21 18:55:44 2007 +0000 @@ -820,7 +820,7 @@ begin DeleteGear(Gear); FreeActionsList; - with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do + with CurrentHedgehog^ do if Gear <> nil then Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump); exit end; @@ -1204,7 +1204,7 @@ OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^); ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); - HHGear:= CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear; + HHGear:= CurrentHedgehog^.Gear; ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); HHGear^.Message:= Msg; exit @@ -1212,7 +1212,7 @@ if (Gear^.Message and gm_Switch) <> 0 then begin - HHGear:= CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear; + HHGear:= CurrentHedgehog^.Gear; HHGear^.Message:= HHGear^.Message and not gm_Switch; State:= HHGear^.State; HHGear^.State:= 0; @@ -1223,9 +1223,9 @@ repeat CurrentTeam^.CurrHedgehog:= Succ(CurrentTeam^.CurrHedgehog) mod (CurrentTeam^.HedgehogsNumber); - until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil); + until (CurrentHedgehog^.Gear <> nil); - HHGear:= CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear; + HHGear:= CurrentHedgehog^.Gear; HHGear^.State:= State; HHGear^.Active:= true; FollowGear:= HHGear; diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars/HHHandlers.inc Fri Sep 21 18:55:44 2007 +0000 @@ -89,8 +89,8 @@ procedure AfterAttack; begin -with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^, - CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do +with CurrentHedgehog^.Gear^, + CurrentHedgehog^ do begin Inc(AttacksNum); State:= State and not gstAttacking; @@ -98,7 +98,7 @@ else begin TurnTimeLeft:= Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].TimeAfterTurn; State:= State or gstAttacked; - OnUsedAmmo(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]) + OnUsedAmmo(CurrentHedgehog^) end; AttackBar:= 0; end diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/uAI.pas --- a/hedgewars/uAI.pas Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars/uAI.pas Fri Sep 21 18:55:44 2007 +0000 @@ -45,7 +45,7 @@ until hasThread = 0 end; -with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do +with CurrentHedgehog^ do if Gear <> nil then if BotLevel <> 0 then begin @@ -68,7 +68,7 @@ for i:= 0 to Pred(Targets.Count) do if (Targets.ar[i].Score >= 0) and (not StopThinking) then begin - with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do + with CurrentHedgehog^ do a:= Ammo^[CurSlot, CurAmmo].AmmoType; aa:= a; repeat @@ -115,7 +115,7 @@ if a = High(TAmmoType) then a:= Low(TAmmoType) else inc(a) until (a = aa) or - (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].AttacksNum > 0) or + (CurrentHedgehog^.AttacksNum > 0) or StopThinking end end; @@ -317,7 +317,7 @@ const StartTicks: Longword = 0; cStopThinkTime = 40; begin -with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do +with CurrentHedgehog^ do if (Gear <> nil) and ((Gear^.State and gstHHDriven) <> 0) and (TurnTimeLeft < cHedgehogTurnTime - 50) then diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/uGame.pas --- a/hedgewars/uGame.pas Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars/uGame.pas Fri Sep 21 18:55:44 2007 +0000 @@ -52,8 +52,7 @@ begin if not CurrentTeam^.ExtDriven then begin - with CurrentTeam^ do - if Hedgehogs[CurrHedgehog].BotLevel <> 0 then ProcessBot; + if CurrentHedgehog^.BotLevel <> 0 then ProcessBot; ProcessGears end else begin diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/uGears.pas --- a/hedgewars/uGears.pas Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars/uGears.pas Fri Sep 21 18:55:44 2007 +0000 @@ -186,8 +186,8 @@ if CurrentTeam <> nil then begin - Result^.Hedgehog:= @(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]); - Result^.IntersectGear:= CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear + Result^.Hedgehog:= CurrentHedgehog; + Result^.IntersectGear:= CurrentHedgehog^.Gear end; case Kind of @@ -327,7 +327,7 @@ inc(StepDamage, t) end; team:= PHedgehog(Gear^.Hedgehog)^.Team; - if CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear = Gear then + if CurrentHedgehog^.Gear = Gear then FreeActionsList; // to avoid ThinkThread on drawned gear PHedgehog(Gear^.Hedgehog)^.Gear:= nil; inc(KilledHHs); @@ -406,7 +406,7 @@ //AwareOfExplosion(0, 0, 0); if isInMultiShoot then isInMultiShoot:= false else begin - with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do + with CurrentHedgehog^ do if MaxStepDamage < StepDamage then MaxStepDamage:= StepDamage; StepDamage:= 0; ParseCommand('/nextturn', true); @@ -417,8 +417,8 @@ if TurnTimeLeft > 0 then if CurrentTeam <> nil then - if CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil then - if ((CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^.State and gstAttacking) = 0) + if CurrentHedgehog^.Gear <> nil then + if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) and not isInMultiShoot then dec(TurnTimeLeft); inc(GameTicks) diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars/uTeams.pas Fri Sep 21 18:55:44 2007 +0000 @@ -71,6 +71,7 @@ end; var CurrentTeam: PTeam = nil; + CurrentHedgehog: PHedgehog = nil; TeamsArray: array[0..Pred(cMaxTeams)] of PTeam; TeamsCount: Longword = 0; ClansArray: array[0..Pred(cMaxTeams)] of PClan; @@ -169,7 +170,8 @@ until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam); until CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil; -with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do +CurrentHedgehog:= @(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]); +with CurrentHedgehog^ do begin with Gear^ do begin @@ -187,7 +189,7 @@ g:= AddGear(0, 0, gtATSmoothWindCh, 0, _0, _0, 1); g^.Tag:= hwRound(cWindSpeed * 72 / cMaxWindSpeed); {$IFDEF DEBUGFILE}AddFileLog('Wind = '+FloatToStr(cWindSpeed));{$ENDIF} -ApplyAmmoChanges(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]); +ApplyAmmoChanges(CurrentHedgehog^); if CurrentTeam^.ExtDriven then SetDefaultBinds else SetBinds(CurrentTeam^.Binds); bShowFinger:= true; diff -r 78a68cc4d846 -r f7628ebfccde hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Thu Sep 20 20:00:10 2007 +0000 +++ b/hedgewars/uWorld.pas Fri Sep 21 18:55:44 2007 +0000 @@ -92,7 +92,7 @@ if CurrentTeam = nil then exit; Slot:= 0; Pos:= -1; -with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do +with CurrentHedgehog^ do begin if Ammo = nil then exit; SlotsNum:= 0; @@ -235,11 +235,11 @@ 1: begin r:= StuffPoz[sPowerBar]; {$WARNINGS OFF} - r.w:= (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^.Power * 256) div cPowerDivisor; + r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor; {$WARNINGS ON} DrawSpriteFromRect(r, cScreenWidth - 272, cScreenHeight - 48, 16, 0, Surface); end; - 2: with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do + 2: with CurrentHedgehog^ do begin tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle); tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle); @@ -329,7 +329,7 @@ if isCursorVisible then begin if not bShowAmmoMenu then - with CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog] do + with CurrentHedgehog^ do if (Gear^.State and gstHHChooseTarget) <> 0 then begin i:= Ammo^[CurSlot, CurAmmo].Pos;