21 interface |
21 interface |
22 uses SDLh, uConsts; |
22 uses SDLh, uConsts; |
23 {$INCLUDE options.inc} |
23 {$INCLUDE options.inc} |
24 const trigTurns = $80000001; |
24 const trigTurns = $80000001; |
25 |
25 |
26 procedure AddTrigger(id, Ticks, Lives: Longword); |
26 type TTrigAction = (taSpawnGear); |
|
27 |
|
28 procedure AddTriggerSpawner(id, Ticks, Lives: Longword; X, Y: LongInt; GearType: TGearType; GearTriggerId: Longword); |
27 procedure TickTrigger(id: Longword); |
29 procedure TickTrigger(id: Longword); |
28 |
30 |
29 implementation |
31 implementation |
30 uses uGears, uFloat, uMisc; |
32 uses uGears, uFloat, uMisc; |
31 type PTrigger = ^TTrigger; |
33 type PTrigger = ^TTrigger; |
32 TTrigger = record |
34 TTrigger = record |
33 id: Longword; |
35 id: Longword; |
34 Ticks: Longword; |
36 Ticks: Longword; |
35 Lives: Longword; |
37 Lives: Longword; |
36 TicksPerLife: LongWord; |
38 TicksPerLife: LongWord; |
|
39 Action: TTrigAction; |
|
40 X, Y: LongInt; |
|
41 SpawnGearType: TGearType; |
|
42 SpawnGearTriggerId: Longword; |
37 Next: PTrigger; |
43 Next: PTrigger; |
38 end; |
44 end; |
39 var TriggerList: PTrigger = nil; |
45 var TriggerList: PTrigger = nil; |
40 |
46 |
41 procedure AddTrigger(id, Ticks, Lives: Longword); |
47 procedure AddTriggerSpawner(id, Ticks, Lives: Longword; X, Y: LongInt; GearType: TGearType; GearTriggerId: Longword); |
42 var tmp: PTrigger; |
48 var tmp: PTrigger; |
43 begin |
49 begin |
44 if (Ticks = 0) or (Lives = 0) then exit; |
50 if (Ticks = 0) or (Lives = 0) then exit; |
45 {$IFDEF DEBUGFILE}AddFileLog('Add trigger: ' + inttostr(id));{$ENDIF} |
51 {$IFDEF DEBUGFILE}AddFileLog('Add spawner trigger: ' + inttostr(id) + ', gear triggers ' + inttostr(GearTriggerId));{$ENDIF} |
46 new(tmp); |
52 new(tmp); |
47 FillChar(tmp^, sizeof(TGear), 0); |
53 FillChar(tmp^, sizeof(TTrigger), 0); |
48 |
54 |
49 tmp^.id:= id; |
55 tmp^.id:= id; |
50 tmp^.Ticks:= Ticks; |
56 tmp^.Ticks:= Ticks; |
51 tmp^.TicksPerLife:= Ticks; |
57 tmp^.TicksPerLife:= Ticks; |
52 tmp^.Lives:= Lives; |
58 tmp^.Lives:= Lives; |
|
59 tmp^.Action:= taSpawnGear; |
|
60 tmp^.X:= X; |
|
61 tmp^.Y:= Y; |
|
62 tmp^.SpawnGearType:= GearType; |
|
63 tmp^.SpawnGearTriggerId:= GearTriggerId; |
53 if TriggerList <> nil then tmp^.Next:= TriggerList; |
64 if TriggerList <> nil then tmp^.Next:= TriggerList; |
54 TriggerList:= tmp |
65 TriggerList:= tmp |
55 end; |
66 end; |
56 |
67 |
57 procedure TickTriggerT(Trigger: PTrigger); |
68 procedure TickTriggerT(Trigger: PTrigger); |
58 begin |
69 begin |
59 AddGear(1024, -140, gtTarget, 0, _0, _0, 0) |
70 with Trigger^ do |
|
71 case Action of |
|
72 taSpawnGear: AddGear(X, Y, SpawnGearType, 0, _0, _0, 0)^.TriggerId:= SpawnGearTriggerId; |
|
73 end |
60 end; |
74 end; |
61 |
75 |
62 procedure TickTrigger(id: Longword); |
76 procedure TickTrigger(id: Longword); |
63 var t, pt, nt: PTrigger; |
77 var t, pt, nt: PTrigger; |
64 begin |
78 begin |