1201 CheckGearDrowning(Gear); |
1201 CheckGearDrowning(Gear); |
1202 end; |
1202 end; |
1203 |
1203 |
1204 if (Gear^.dY.QWordValue = 0) then AddGearCI(Gear) |
1204 if (Gear^.dY.QWordValue = 0) then AddGearCI(Gear) |
1205 else if (Gear^.dY.QWordValue <> 0) then DeleteCI(Gear) |
1205 else if (Gear^.dY.QWordValue <> 0) then DeleteCI(Gear) |
|
1206 end; |
|
1207 |
|
1208 //////////////////////////////////////////////////////////////////////////////// |
|
1209 |
|
1210 procedure doStepTarget(Gear: PGear); |
|
1211 begin |
|
1212 if (Gear^.Timer = 0) and (Gear^.Tag = 0) then |
|
1213 PlaySound(sndWarp, false, nil); |
|
1214 |
|
1215 if (Gear^.Tag = 0) and (Gear^.Timer < 1000) then |
|
1216 inc(Gear^.Timer) |
|
1217 else if Gear^.Tag = 1 then |
|
1218 if Gear^.Timer > 0 then |
|
1219 dec(Gear^.Timer) |
|
1220 else |
|
1221 begin |
|
1222 TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0); |
|
1223 FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); |
|
1224 inc(TurnTimeLeft, TrainingTimeInc); |
|
1225 |
|
1226 if TrainingTimeInc > TrainingTimeInM then |
|
1227 dec(TrainingTimeInc, TrainingTimeInD); |
|
1228 if TurnTimeLeft > TrainingTimeMax then |
|
1229 TurnTimeLeft:= TrainingTimeMax; |
|
1230 |
|
1231 DeleteGear(Gear); |
|
1232 exit; |
|
1233 end; |
|
1234 |
|
1235 doStepCase(Gear) |
1206 end; |
1236 end; |
1207 |
1237 |
1208 //////////////////////////////////////////////////////////////////////////////// |
1238 //////////////////////////////////////////////////////////////////////////////// |
1209 procedure doStepIdle(Gear: PGear); |
1239 procedure doStepIdle(Gear: PGear); |
1210 begin |
1240 begin |
2217 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); |
2247 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); |
2218 |
2248 |
2219 // pickup targets |
2249 // pickup targets |
2220 t:= CheckGearNear(Gear, gtTarget, 36, 36); |
2250 t:= CheckGearNear(Gear, gtTarget, 36, 36); |
2221 if t <> nil then |
2251 if t <> nil then |
2222 begin; |
2252 begin |
2223 // TODO: Sound! |
2253 if t^.Tag = 1 then // collect it only once |
2224 PlaySound(sndGraveImpact, false, nil); |
2254 exit; |
2225 DeleteGear(t); |
2255 PlaySound(sndShotgunReload, false, nil); |
2226 TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0); |
2256 t^.Tag:= 1; |
2227 FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); |
2257 TrainingTargetGear:= nil; // remove target cursor |
2228 inc(TurnTimeLeft, TrainingTimeInc); |
2258 exit; |
2229 |
|
2230 if TrainingTimeInc > TrainingTimeInM then |
|
2231 dec(TrainingTimeInc, TrainingTimeInD); |
|
2232 if TurnTimeLeft > TrainingTimeMax then TurnTimeLeft:= TrainingTimeMax; |
|
2233 end; |
2259 end; |
2234 |
2260 |
2235 if (TurnTimeLeft > 0) then |
2261 if (TurnTimeLeft > 0) then |
2236 dec(TurnTimeLeft) |
2262 dec(TurnTimeLeft) |
2237 else |
2263 else |