hedgewars/uAIAmmoTests.pas
changeset 15600 7d3877231b00
parent 15524 fbcee515b946
child 15602 583080b0272b
equal deleted inserted replaced
15599:dc62f1c13bb2 15600:7d3877231b00
    55 function TestAirAttack(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    55 function TestAirAttack(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    56 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    56 function TestTeleport(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    57 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    57 function TestHammer(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    58 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    58 function TestCake(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    59 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    59 function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
       
    60 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    60 
    61 
    61 type TAmmoTestProc = function (Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    62 type TAmmoTestProc = function (Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
    62     TAmmoTest = record
    63     TAmmoTest = record
    63             proc: TAmmoTestProc;
    64             proc: TAmmoTestProc;
    64             flags: Longword;
    65             flags: Longword;
    73             (proc: @TestBee;         flags: amtest_Rare), // amBee
    74             (proc: @TestBee;         flags: amtest_Rare), // amBee
    74             (proc: @TestShotgun;     flags: 0), // amShotgun
    75             (proc: @TestShotgun;     flags: 0), // amShotgun
    75             (proc: nil;              flags: 0), // amPickHammer
    76             (proc: nil;              flags: 0), // amPickHammer
    76             (proc: nil;              flags: 0), // amSkip
    77             (proc: nil;              flags: 0), // amSkip
    77             (proc: nil;              flags: 0), // amRope
    78             (proc: nil;              flags: 0), // amRope
    78             (proc: nil;              flags: 0), // amMine
    79             (proc: @TestMine;        flags: amtest_NoTarget), // amMine
    79             (proc: @TestDesertEagle; flags: amtest_MultipleAttacks), // amDEagle
    80             (proc: @TestDesertEagle; flags: amtest_MultipleAttacks), // amDEagle
    80             (proc: @TestDynamite;    flags: amtest_NoTarget), // amDynamite
    81             (proc: @TestDynamite;    flags: amtest_NoTarget), // amDynamite
    81             (proc: @TestFirePunch;   flags: amtest_NoTarget), // amFirePunch
    82             (proc: @TestFirePunch;   flags: amtest_NoTarget), // amFirePunch
    82             (proc: @TestWhip;        flags: amtest_NoTarget), // amWhip
    83             (proc: @TestWhip;        flags: amtest_NoTarget), // amWhip
    83             (proc: @TestBaseballBat; flags: amtest_NoTarget), // amBaseballBat
    84             (proc: @TestBaseballBat; flags: amtest_NoTarget), // amBaseballBat
  1469     valueResult:= BadTurn;
  1470     valueResult:= BadTurn;
  1470 
  1471 
  1471 TestDynamite:= valueResult
  1472 TestDynamite:= valueResult
  1472 end;
  1473 end;
  1473 
  1474 
       
  1475 function TestMine(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams; Flags: LongWord): LongInt;
       
  1476 var valueResult: LongInt;
       
  1477     x, y, dx, dy: real;
       
  1478     EX, EY, t: LongInt;
       
  1479 begin
       
  1480 Flags:= Flags; // avoid compiler hint
       
  1481 Targ:= Targ; // avoid compiler hint
       
  1482 
       
  1483 x:= hwFloat2Float(Me^.X) + hwSign(Me^.dX) * 7;
       
  1484 y:= hwFloat2Float(Me^.Y);
       
  1485 dx:= hwSign(Me^.dX) * 0.02;
       
  1486 dy:= 0;
       
  1487 t:= 10000;
       
  1488 repeat
       
  1489     dec(t);
       
  1490     x:= x + dx;
       
  1491     dy:= dy + cGravityf;
       
  1492     y:= y + dy;
       
  1493     if ((Me = CurrentHedgehog^.Gear) and TestColl(trunc(x), trunc(y), 2)) or
       
  1494         ((Me <> CurrentHedgehog^.Gear) and TestCollExcludingMe(Me^.Hedgehog^.Gear, trunc(x), trunc(y), 2)) then
       
  1495         t:= 0;
       
  1496 until t = 0;
       
  1497 
       
  1498 EX:= trunc(x);
       
  1499 EY:= trunc(y);
       
  1500 
       
  1501 if Level = 1 then
       
  1502     valueResult:= RateExplosion(Me, EX, EY, 51, afTrackFall or afErasesLand)
       
  1503 else
       
  1504     valueResult:= RateExplosion(Me, EX, EY, 51);
       
  1505 
       
  1506 if (valueResult > 0) then
       
  1507     begin
       
  1508     ap.Angle:= 0;
       
  1509     ap.Power:= 1;
       
  1510     ap.Time:= 0;
       
  1511     ap.ExplR:= 100;
       
  1512     ap.ExplX:= EX;
       
  1513     ap.ExplY:= EY
       
  1514     end else
       
  1515     valueResult:= BadTurn;
       
  1516 
       
  1517 TestMine:= valueResult
       
  1518 end;
       
  1519 
  1474 end.
  1520 end.