970 end; |
970 end; |
971 end; |
971 end; |
972 |
972 |
973 |
973 |
974 if Gear^.Timer = 0 then |
974 if Gear^.Timer = 0 then |
975 Gear^.RenderTimer:= false |
975 begin |
|
976 // no "fuel"? just fall |
|
977 doStepFallingGear(Gear); |
|
978 // if drowning, stop bee sound |
|
979 if (Gear^.State and gstDrowning) <> 0 then |
|
980 StopSoundChan(Gear^.SoundChannel); |
|
981 end |
976 else |
982 else |
977 begin |
983 begin |
978 if (GameTicks and $F) = 0 then |
984 if (GameTicks and $F) = 0 then |
979 begin |
985 begin |
980 if (GameTicks and $30) = 0 then |
986 if (GameTicks and $30) = 0 then |
981 AddVisualGear(gX, gY, vgtBeeTrace); |
987 begin |
|
988 if nuw then |
|
989 AddVisualGear(gX, gY, vgtBubble) |
|
990 else |
|
991 AddVisualGear(gX, gY, vgtBeeTrace); |
|
992 end; |
982 Gear^.dX := Gear^.Elasticity * (Gear^.dX + _0_000064 * (Gear^.Target.X - gX)); |
993 Gear^.dX := Gear^.Elasticity * (Gear^.dX + _0_000064 * (Gear^.Target.X - gX)); |
983 Gear^.dY := Gear^.Elasticity * (Gear^.dY + _0_000064 * (Gear^.Target.Y - gY)); |
994 Gear^.dY := Gear^.Elasticity * (Gear^.dY + _0_000064 * (Gear^.Target.Y - gY)); |
984 // make sure new speed isn't higher than original one (which we stored in Friction variable) |
995 // make sure new speed isn't higher than original one (which we stored in Friction variable) |
985 t := Gear^.Friction / Distance(Gear^.dX, Gear^.dY); |
996 t := Gear^.Friction / Distance(Gear^.dX, Gear^.dY); |
986 Gear^.dX := Gear^.dX * t; |
997 Gear^.dX := Gear^.dX * t; |
1017 end; |
1028 end; |
1018 DeleteGear(Gear); |
1029 DeleteGear(Gear); |
1019 end; |
1030 end; |
1020 |
1031 |
1021 if (Gear^.Timer > 0) then |
1032 if (Gear^.Timer > 0) then |
1022 dec(Gear^.Timer) |
1033 begin |
1023 else |
1034 dec(Gear^.Timer); |
1024 begin |
1035 if Gear^.Timer = 0 then |
1025 Gear^.State:= Gear^.State and not gstSubmersible; |
1036 begin |
1026 if nuw then |
1037 // no need to display remaining time anymore |
1027 begin |
1038 Gear^.RenderTimer:= false; |
1028 StopSoundChan(Gear^.SoundChannel); |
1039 // bee can drown when timer reached 0 |
1029 CheckGearDrowning(Gear); |
1040 Gear^.State:= Gear^.State and not gstSubmersible; |
1030 end |
1041 end; |
1031 else |
|
1032 doStepFallingGear(Gear); |
|
1033 end; |
1042 end; |
1034 end; |
1043 end; |
1035 |
1044 |
1036 procedure doStepBee(Gear: PGear); |
1045 procedure doStepBee(Gear: PGear); |
1037 begin |
1046 begin |