147 Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount |
147 Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount |
148 else exit; |
148 else exit; |
149 StepTicks:= 200; |
149 StepTicks:= 200; |
150 exit |
150 exit |
151 end; |
151 end; |
|
152 |
152 if ((Gear^.Message and gm_LJump ) <> 0) then |
153 if ((Gear^.Message and gm_LJump ) <> 0) then |
153 begin |
154 begin |
154 Gear^.Message:= 0; |
155 Gear^.Message:= 0; |
|
156 DeleteCI(Gear); |
155 if not TestCollisionYwithGear(Gear, -1) then |
157 if not TestCollisionYwithGear(Gear, -1) then |
156 if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else |
158 if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else |
157 if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _1; |
159 if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _1; |
158 if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) |
160 if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) |
159 or TestCollisionYwithGear(Gear, -1)) then |
161 or TestCollisionYwithGear(Gear, -1)) then |
162 Gear^.dX:= SignAs(_0_15, Gear^.dX); |
164 Gear^.dX:= SignAs(_0_15, Gear^.dX); |
163 Gear^.State:= Gear^.State or gstFalling or gstHHJumping; |
165 Gear^.State:= Gear^.State or gstFalling or gstHHJumping; |
164 exit |
166 exit |
165 end; |
167 end; |
166 end; |
168 end; |
|
169 |
167 if ((Gear^.Message and gm_HJump ) <> 0) then |
170 if ((Gear^.Message and gm_HJump ) <> 0) then |
168 begin |
171 begin |
|
172 DeleteCI(Gear); |
169 Gear^.Message:= 0; |
173 Gear^.Message:= 0; |
170 if not TestCollisionYwithGear(Gear, -1) then |
174 if not TestCollisionYwithGear(Gear, -1) then |
171 begin |
175 begin |
172 Gear^.dY:= -_0_2; |
176 Gear^.dY:= -_0_2; |
173 SetLittle(Gear^.dX); |
177 SetLittle(Gear^.dX); |
174 Gear^.State:= Gear^.State or gstFalling or gstHHJumping; |
178 Gear^.State:= Gear^.State or gstFalling or gstHHJumping; |
175 exit |
179 exit |
176 end; |
180 end; |
177 end; |
181 end; |
|
182 |
178 PrevdX:= hwSign(Gear^.dX); |
183 PrevdX:= hwSign(Gear^.dX); |
179 if (Gear^.Message and gm_Left )<>0 then Gear^.dX:= -cLittle else |
184 if (Gear^.Message and gm_Left )<>0 then Gear^.dX:= -cLittle else |
180 if (Gear^.Message and gm_Right )<>0 then Gear^.dX:= cLittle else exit; |
185 if (Gear^.Message and gm_Right )<>0 then Gear^.dX:= cLittle else exit; |
|
186 DeleteCI(Gear); |
|
187 |
181 StepTicks:= cHHStepTicks; |
188 StepTicks:= cHHStepTicks; |
182 if PrevdX <> hwSign(Gear^.dX) then exit; |
189 if PrevdX <> hwSign(Gear^.dX) then exit; |
183 PHedgehog(Gear^.Hedgehog)^.visStepPos:= (PHedgehog(Gear^.Hedgehog)^.visStepPos + 1) and 7; |
190 PHedgehog(Gear^.Hedgehog)^.visStepPos:= (PHedgehog(Gear^.Hedgehog)^.visStepPos + 1) and 7; |
184 if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
191 if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
185 begin |
192 begin |
220 Gear^.Y:= Gear^.Y + _1; |
227 Gear^.Y:= Gear^.Y + _1; |
221 if not TestCollisionYwithGear(Gear, 1) then |
228 if not TestCollisionYwithGear(Gear, 1) then |
222 begin |
229 begin |
223 Gear^.Y:= Gear^.Y - _6; |
230 Gear^.Y:= Gear^.Y - _6; |
224 Gear^.dY:= _0; |
231 Gear^.dY:= _0; |
225 Gear^.State:= Gear^.State or gstFalling |
232 Gear^.State:= Gear^.State or gstFalling; |
226 end; |
233 exit |
227 end |
234 end; |
228 end |
235 end |
229 end |
236 end |
230 end |
237 end |
231 end |
238 end |
232 end |
239 end |
|
240 end; |
|
241 AddGearCI(Gear) |
233 end |
242 end |
234 end; |
243 end; |
235 |
244 |
236 procedure HedgehogChAngle(Gear: PGear); |
245 procedure HedgehogChAngle(Gear: PGear); |
237 begin |
246 begin |