1054 |
1054 |
1055 i := 200; |
1055 i := 200; |
1056 repeat |
1056 repeat |
1057 Gear^.X := Gear^.X + Gear^.dX; |
1057 Gear^.X := Gear^.X + Gear^.dX; |
1058 Gear^.Y := Gear^.Y + Gear^.dY; |
1058 Gear^.Y := Gear^.Y + Gear^.dY; |
|
1059 WorldWrap(Gear); |
1059 CheckCollision(Gear); |
1060 CheckCollision(Gear); |
1060 if (Gear^.State and gstCollision) <> 0 then |
1061 if (Gear^.State and gstCollision) <> 0 then |
1061 begin |
1062 begin |
1062 Gear^.X := Gear^.X + Gear^.dX * 8; |
1063 Gear^.X := Gear^.X + Gear^.dX * 8; |
1063 Gear^.Y := Gear^.Y + Gear^.dY * 8; |
1064 Gear^.Y := Gear^.Y + Gear^.dY * 8; |
1119 end; |
1120 end; |
1120 |
1121 |
1121 procedure doStepBulletWork(Gear: PGear); |
1122 procedure doStepBulletWork(Gear: PGear); |
1122 var |
1123 var |
1123 i, x, y: LongWord; |
1124 i, x, y: LongWord; |
1124 oX, oY: hwFloat; |
1125 oX, oY, tX, tY, cX, cY: hwFloat; |
1125 VGear: PVisualGear; |
1126 VGear: PVisualGear; |
1126 begin |
1127 begin |
1127 if WorldWrap(Gear) then |
|
1128 begin |
|
1129 SpawnBulletTrail(Gear); |
|
1130 inc(Gear^.PortalCounter); |
|
1131 Gear^.Elasticity:= Gear^.X; |
|
1132 Gear^.Friction:= Gear^.Y |
|
1133 end; |
|
1134 AllInactive := false; |
1128 AllInactive := false; |
1135 inc(Gear^.Timer); |
1129 inc(Gear^.Timer); |
1136 i := 80; |
1130 i := 80; |
1137 oX := Gear^.X; |
1131 oX := Gear^.X; |
1138 oY := Gear^.Y; |
1132 oY := Gear^.Y; |
1139 repeat |
1133 repeat |
1140 Gear^.X := Gear^.X + Gear^.dX; |
1134 Gear^.X := Gear^.X + Gear^.dX; |
1141 Gear^.Y := Gear^.Y + Gear^.dY; |
1135 Gear^.Y := Gear^.Y + Gear^.dY; |
|
1136 tX:= Gear^.X; |
|
1137 tY:= Gear^.Y; |
|
1138 if WorldWrap(Gear) then |
|
1139 begin |
|
1140 cX:= Gear^.X; |
|
1141 cY:= Gear^.Y; |
|
1142 Gear^.X:= tX; |
|
1143 Gear^.Y:= tY; |
|
1144 SpawnBulletTrail(Gear); |
|
1145 Gear^.X:= cX; |
|
1146 Gear^.Y:= cY; |
|
1147 inc(Gear^.PortalCounter); |
|
1148 Gear^.Elasticity:= Gear^.X; |
|
1149 Gear^.Friction:= Gear^.Y; |
|
1150 SpawnBulletTrail(Gear); |
|
1151 end; |
1142 x := hwRound(Gear^.X); |
1152 x := hwRound(Gear^.X); |
1143 y := hwRound(Gear^.Y); |
1153 y := hwRound(Gear^.Y); |
1144 |
1154 |
1145 if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y, x] <> 0) then |
1155 if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y, x] <> 0) then |
1146 inc(Gear^.Damage); |
1156 inc(Gear^.Damage); |