191 Result.HalfWidth:= 3; |
192 Result.HalfWidth:= 3; |
192 Result.HalfHeight:= 3; |
193 Result.HalfHeight:= 3; |
193 Result.Elasticity:= 0.55; |
194 Result.Elasticity:= 0.55; |
194 Result.Friction:= 0.995; |
195 Result.Friction:= 0.995; |
195 Result.Timer:= 3000; |
196 Result.Timer:= 3000; |
|
197 end; |
|
198 gtCase: begin |
|
199 Result.HalfWidth:= 10; |
|
200 Result.HalfHeight:= 10; |
|
201 Result.Elasticity:= 0.6 |
196 end; |
202 end; |
197 end; |
203 end; |
198 if GearsList = nil then GearsList:= Result |
204 if GearsList = nil then GearsList:= Result |
199 else begin |
205 else begin |
200 GearsList.PrevGear:= Result; |
206 GearsList.PrevGear:= Result; |
443 end; |
449 end; |
444 gtExplosion: DrawSprite(sprExplosion50, Round(Gear.X) + WorldDx, Round(Gear.Y) + WorldDy, Gear.State, Surface); |
450 gtExplosion: DrawSprite(sprExplosion50, Round(Gear.X) + WorldDx, Round(Gear.Y) + WorldDy, Gear.State, Surface); |
445 gtMine: if ((Gear.State and gstAttacking) = 0)or((Gear.Timer and $3FF) < 420) |
451 gtMine: if ((Gear.State and gstAttacking) = 0)or((Gear.Timer and $3FF) < 420) |
446 then DrawSprite(sprMineOff , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface) |
452 then DrawSprite(sprMineOff , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface) |
447 else DrawSprite(sprMineOn , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface); |
453 else DrawSprite(sprMineOn , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface); |
|
454 gtCase: DrawSprite(sprCase, Round(Gear.X) - 12 + WorldDx, Round(Gear.Y) - 12 + WorldDy, 0, Surface); |
448 end; |
455 end; |
449 Gear:= Gear.NextGear |
456 Gear:= Gear.NextGear |
450 end; |
457 end; |
451 end; |
458 end; |
452 |
459 |
468 procedure AddMiscGears; |
475 procedure AddMiscGears; |
469 var i, x, y: integer; |
476 var i, x, y: integer; |
470 begin |
477 begin |
471 for i:= 0 to cCloudsNumber do AddGear( - cScreenWidth + i * ((cScreenWidth * 2 + 2304) div cCloudsNumber), -128, gtCloud, random(4), (0.5-random)*0.01); |
478 for i:= 0 to cCloudsNumber do AddGear( - cScreenWidth + i * ((cScreenWidth * 2 + 2304) div cCloudsNumber), -128, gtCloud, random(4), (0.5-random)*0.01); |
472 AddGear(0, 0, gtActionTimer, gtsStartGame, 0, 0, 2000).Health:= 3; |
479 AddGear(0, 0, gtActionTimer, gtsStartGame, 0, 0, 2000).Health:= 3; |
473 for i:= 0 to 3 do |
480 for i:= 0 to 2 do |
474 begin |
481 begin |
475 GetHHPoint(x, y); |
482 GetHHPoint(x, y); |
476 AddGear(X, Y + 9, gtMine, 0); |
483 AddGear(X, Y + 9, gtMine, 0); |
|
484 end; |
|
485 |
|
486 for i:= 0 to 0 do |
|
487 begin |
|
488 GetHHPoint(x, y); |
|
489 AddGear(X, Y, gtCase, 0) |
477 end; |
490 end; |
478 end; |
491 end; |
479 |
492 |
480 procedure doMakeExplosion(X, Y, Radius: integer; Mask: LongWord); |
493 procedure doMakeExplosion(X, Y, Radius: integer; Mask: LongWord); |
481 var Gear: PGear; |
494 var Gear: PGear; |