hedgewars/VGSHandlers.inc
branchhedgeroid
changeset 5932 5164d17b6374
parent 5874 5cd329cf2460
child 6005 3470f3f547ca
equal deleted inserted replaced
5828:667fb58d7f18 5932:5164d17b6374
   172 Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
   172 Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
   173 
   173 
   174 if Gear^.FrameTicks <= Steps then
   174 if Gear^.FrameTicks <= Steps then
   175     DeleteVisualGear(Gear)
   175     DeleteVisualGear(Gear)
   176 else
   176 else
   177     dec(Gear^.FrameTicks, Steps)
   177     dec(Gear^.FrameTicks, Steps);
       
   178 
       
   179 if Gear^.FrameTicks < $FF then
       
   180    Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or Gear^.FrameTicks
   178 end;
   181 end;
   179 
   182 
   180 ////////////////////////////////////////////////////////////////////////////////
   183 ////////////////////////////////////////////////////////////////////////////////
   181 procedure doStepFire(Gear: PVisualGear; Steps: Longword);
   184 procedure doStepFire(Gear: PVisualGear; Steps: Longword);
   182 var vgt: PVisualGear;
   185 var vgt: PVisualGear;
   585 end;
   588 end;
   586 
   589 
   587 
   590 
   588 ////////////////////////////////////////////////////////////////////////////////
   591 ////////////////////////////////////////////////////////////////////////////////
   589 procedure doStepBigExplosionWork(Gear: PVisualGear; Steps: Longword);
   592 procedure doStepBigExplosionWork(Gear: PVisualGear; Steps: Longword);
   590 //var maxMovement: LongInt;
   593 var maxMovement: LongInt;
   591 begin
   594 begin
   592 
   595 
   593 inc(Gear^.Timer, Steps);
   596 inc(Gear^.Timer, Steps);
   594 (*
       
   595 FIXME - This block desyncs due to the way WorldDx is important for various things network related.
       
   596 One possible solution is, instead of using WorldDx, to use straight gl/SDL calls to jitter the screen a bit.
       
   597 
       
   598 // a comment by unC0Rr: instead of changing WorldDx shake cursor coordinates, that should be safe
       
   599 // ... seems to still desync, and I tried banning when targetting too
       
   600 
       
   601 if (Gear^.Timer and 5) = 0 then
   597 if (Gear^.Timer and 5) = 0 then
   602     begin
   598     begin
   603     maxMovement := max(1, 13 - ((Gear^.Timer * 15) div 250));
   599     maxMovement := max(1, 13 - ((Gear^.Timer * 15) div 250));
   604     ShakeCamera(maxMovement);
   600     ShakeCamera(maxMovement);
   605     end;
   601     end;
   606 *)
       
   607 
   602 
   608 if Gear^.Timer > 250 then DeleteVisualGear(Gear);
   603 if Gear^.Timer > 250 then DeleteVisualGear(Gear);
   609 end;
   604 end;
   610 
   605 
   611 procedure doStepBigExplosion(Gear: PVisualGear; Steps: Longword);
   606 procedure doStepBigExplosion(Gear: PVisualGear; Steps: Longword);
   612 var i: LongWord;
   607 var i: LongWord;
   613     gX,gY: LongInt;
   608     gX,gY: LongInt;
   614     vg: PVisualGear;
   609     vg: PVisualGear;
   615 begin
   610 begin
   616 ScreenFade:= sfFromWhite;
   611 //ScreenFade:= sfFromWhite;
   617 ScreenFadeValue:= 250;
   612 //ScreenFadeValue:= round(60 * zoom * zoom);
   618 ScreenFadeSpeed:= 5;
   613 //ScreenFadeSpeed:= 5;
   619 gX:= round(Gear^.X);
   614 gX:= round(Gear^.X);
   620 gY:= round(Gear^.Y);
   615 gY:= round(Gear^.Y);
   621 AddVisualGear(gX, gY, vgtSmokeRing);
   616 AddVisualGear(gX, gY, vgtSmokeRing);
   622 for i:= 0 to 46 do 
   617 for i:= 0 to 46 do 
   623     begin
   618     begin