60 ImpactSound: TSound; // first sound, others have to be after it in the sounds def. |
60 ImpactSound: TSound; // first sound, others have to be after it in the sounds def. |
61 nImpactSounds: Word; // count of ImpactSounds |
61 nImpactSounds: Word; // count of ImpactSounds |
62 SoundChannel: LongInt; |
62 SoundChannel: LongInt; |
63 PortalCounter: LongWord // Hopefully temporary, but avoids infinite portal loops in a guaranteed fashion. |
63 PortalCounter: LongWord // Hopefully temporary, but avoids infinite portal loops in a guaranteed fashion. |
64 end; |
64 end; |
|
65 TPGearArray = Array of PGear; |
65 |
66 |
66 var AllInactive: boolean; |
67 var AllInactive: boolean; |
67 PrvInactive: boolean; |
68 PrvInactive: boolean; |
68 CurAmmoGear: PGear; |
69 CurAmmoGear: PGear; |
69 GearsList: PGear; |
70 GearsList: PGear; |
118 procedure DeleteGear(Gear: PGear); forward; |
119 procedure DeleteGear(Gear: PGear); forward; |
119 procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); forward; |
120 procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); forward; |
120 procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); forward; |
121 procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); forward; |
121 procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward; |
122 procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward; |
122 //procedure AmmoFlameWork(Ammo: PGear); forward; |
123 //procedure AmmoFlameWork(Ammo: PGear); forward; |
|
124 function GearsNear(Gear: PGear; Kind: TGearType; r: LongInt): TPGearArray; forward; |
123 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; forward; |
125 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; forward; |
124 procedure SpawnBoxOfSmth; forward; |
126 procedure SpawnBoxOfSmth; forward; |
125 procedure AfterAttack; forward; |
127 procedure AfterAttack; forward; |
126 procedure HedgehogStep(Gear: PGear); forward; |
128 procedure HedgehogStep(Gear: PGear); forward; |
127 procedure doStepHedgehogMoving(Gear: PGear); forward; |
129 procedure doStepHedgehogMoving(Gear: PGear); forward; |
1510 dec(Count) |
1517 dec(Count) |
1511 end |
1518 end |
1512 end |
1519 end |
1513 end; |
1520 end; |
1514 |
1521 |
|
1522 function GearsNear(Gear: PGear; Kind: TGearType; r: LongInt): TPGearArray; |
|
1523 var |
|
1524 t: PGear; |
|
1525 begin |
|
1526 GearsNear := nil; |
|
1527 t := GearsList; |
|
1528 while t <> nil do begin |
|
1529 if (t <> Gear) and (t^.Kind = Kind) then begin |
|
1530 if (Gear^.X - t^.X)*(Gear^.X - t^.X) + (Gear^.Y - |
|
1531 t^.Y)*(Gear^.Y-t^.Y) < int2hwFloat(r)*int2hwFloat(r) then |
|
1532 begin |
|
1533 SetLength(GearsNear, Length(GearsNear)+1); |
|
1534 GearsNear[High(GearsNear)] := t; |
|
1535 end; |
|
1536 end; |
|
1537 t := t^.NextGear; |
|
1538 end; |
|
1539 end; |
|
1540 |
1515 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; |
1541 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; |
1516 var t: PGear; |
1542 var t: PGear; |
1517 begin |
1543 begin |
1518 t:= GearsList; |
1544 t:= GearsList; |
1519 rX:= sqr(rX); |
1545 rX:= sqr(rX); |