171 DeleteVisualGear(Gear) |
171 DeleteVisualGear(Gear) |
172 else |
172 else |
173 dec(Gear^.FrameTicks, Steps) |
173 dec(Gear^.FrameTicks, Steps) |
174 end; |
174 end; |
175 |
175 |
|
176 procedure doStepHealth(Gear: PVisualGear; Steps: Longword); |
|
177 begin |
|
178 Gear^.X:= Gear^.X + Gear^.dX * Steps; |
|
179 Gear^.Y:= Gear^.Y - Gear^.dY * Steps; |
|
180 |
|
181 if Gear^.FrameTicks <= Steps then |
|
182 DeleteVisualGear(Gear) |
|
183 else |
|
184 dec(Gear^.FrameTicks, Steps); |
|
185 end; |
|
186 |
176 procedure doStepSteam(Gear: PVisualGear; Steps: Longword); |
187 procedure doStepSteam(Gear: PVisualGear; Steps: Longword); |
177 begin |
188 begin |
178 Gear^.X:= Gear^.X + (cWindSpeed * 100 + Gear^.dX) * Steps; |
189 Gear^.X:= Gear^.X + (cWindSpeed * 100 + Gear^.dX) * Steps; |
179 Gear^.Y:= Gear^.Y - cDrownSpeed * Steps; |
190 Gear^.Y:= Gear^.Y - cDrownSpeed * Steps; |
180 |
191 |
393 end; |
405 end; |
394 vgtSmallDamageTag: begin |
406 vgtSmallDamageTag: begin |
395 Result^.FrameTicks:= 1100 |
407 Result^.FrameTicks:= 1100 |
396 end; |
408 end; |
397 vgtBubble: begin |
409 vgtBubble: begin |
398 t:= random(1024); |
|
399 sp:= _0_001 * (random(85) + 95); |
|
400 dx.isNegative:= random(2) = 0; |
410 dx.isNegative:= random(2) = 0; |
401 dx.QWordValue:= random(100000000); |
411 dx.QWordValue:= random(100000000); |
402 dy:= sp; |
412 dy:= _0_001 * (random(85) + 95); |
403 dy.isNegative:= false; |
413 dy.isNegative:= false; |
404 FrameTicks:= 250 + random(1751); |
414 FrameTicks:= 250 + random(1751); |
405 Frame:= random(5) |
415 Frame:= random(5) |
406 end; |
416 end; |
407 vgtSteam: begin |
417 vgtSteam: begin |
408 t:= random(1024); |
|
409 sp:= _0_001 * (random(95) + 70); |
|
410 dx.isNegative:= random(2) = 0; |
418 dx.isNegative:= random(2) = 0; |
411 dx.QWordValue:= random(100000000); |
419 dx.QWordValue:= random(100000000); |
412 dy:= sp; |
420 dy:= _0_001 * (random(85) + 95); |
413 dy.isNegative:= false; |
421 dy.isNegative:= false; |
414 Frame:= 7 - random(3); |
422 Frame:= 7 - random(3); |
415 FrameTicks:= cExplFrameTicks * 2; |
423 FrameTicks:= cExplFrameTicks * 2; |
|
424 end; |
|
425 vgtHealth: begin |
|
426 dx:= _0_001 * random(45); |
|
427 dx.isNegative:= random(2) = 0; |
|
428 dy:= _0_001 * (random(20) + 25); |
|
429 Frame:= 0; |
|
430 FrameTicks:= random(750) + 1250; |
416 end; |
431 end; |
417 end; |
432 end; |
418 |
433 |
419 if VisualGearsList <> nil then |
434 if VisualGearsList <> nil then |
420 begin |
435 begin |
470 end; |
485 end; |
471 1: while Gear <> nil do |
486 1: while Gear <> nil do |
472 begin |
487 begin |
473 if not cReducedQuality then |
488 if not cReducedQuality then |
474 case Gear^.Kind of |
489 case Gear^.Kind of |
475 vgtExplPart: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 7 - Gear^.Frame); |
490 vgtExplPart: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
476 vgtExplPart2: DrawSprite(sprExplPart2, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 7 - Gear^.Frame); |
491 vgtExplPart2: DrawSprite(sprExplPart2, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
477 vgtFire: DrawSprite(sprFlame, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, (RealTicks div 64 + Gear^.Frame) mod 8); |
492 vgtFire: DrawSprite(sprFlame, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy, (RealTicks div 64 + Gear^.Frame) mod 8); |
478 vgtBubble: DrawSprite(sprBubbles, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8); |
493 vgtBubble: DrawSprite(sprBubbles, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8); |
479 vgtSteam: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 7 - Gear^.Frame); |
494 vgtSteam: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
|
495 vgtHealth: begin |
|
496 case Gear^.Frame div 10 of |
|
497 0:glColor4f(0, 1, 0, Gear^.FrameTicks / 1000); |
|
498 1:glColor4f(1, 0, 0, Gear^.FrameTicks / 1000); |
|
499 end; |
|
500 DrawSprite(sprHealth, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, 0); |
|
501 glColor4f(1, 1, 1, 1); |
|
502 end; |
480 end; |
503 end; |
481 case Gear^.Kind of |
504 case Gear^.Kind of |
482 vgtSmallDamageTag: DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); |
505 vgtSmallDamageTag: DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); |
483 vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); |
506 vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); |
484 end; |
507 end; |