hedgewars/VGSHandlers.inc
branchwebgl
changeset 8330 aaefa587e277
parent 8026 4a4f21070479
parent 8204 9a6030d96273
child 8446 c18ba8726f5a
equal deleted inserted replaced
8116:d24257910f8d 8330:aaefa587e277
    58     if Angle > 360 then
    58     if Angle > 360 then
    59         Angle:= Angle - 360
    59         Angle:= Angle - 360
    60     else
    60     else
    61         if Angle < - 360 then
    61         if Angle < - 360 then
    62             Angle:= Angle + 360;
    62             Angle:= Angle + 360;
    63     
    63 
    64   
    64 
    65     if (round(X) >= cLeftScreenBorder)
    65     if (round(X) >= cLeftScreenBorder)
    66     and (round(X) <= cRightScreenBorder)
    66     and (round(X) <= cRightScreenBorder)
    67     and (round(Y) - 75 <= LAND_HEIGHT)
    67     and (round(Y) - 75 <= LAND_HEIGHT)
    68     and (Timer > 0) and (Timer-Steps > 0) then
    68     and (Timer > 0) and (Timer-Steps > 0) then
    69         begin
    69         begin
   642     gX,gY: LongInt;
   642     gX,gY: LongInt;
   643     vg: PVisualGear;
   643     vg: PVisualGear;
   644 begin
   644 begin
   645 gX:= round(Gear^.X);
   645 gX:= round(Gear^.X);
   646 gY:= round(Gear^.Y);
   646 gY:= round(Gear^.Y);
   647 for i:= 0 to 31 do 
   647 for i:= 0 to 31 do
   648     begin
   648     begin
   649     vg:= AddVisualGear(gX, gY, vgtFire);
   649     vg:= AddVisualGear(gX, gY, vgtFire);
   650     if vg <> nil then 
   650     if vg <> nil then
   651         begin
   651         begin
   652         vg^.State:= gstTmpFlag;
   652         vg^.State:= gstTmpFlag;
   653         inc(vg^.FrameTicks, vg^.FrameTicks)
   653         inc(vg^.FrameTicks, vg^.FrameTicks)
   654         end
   654         end
   655     end;
   655     end;
   686 //ScreenFadeValue:= round(60 * zoom * zoom);
   686 //ScreenFadeValue:= round(60 * zoom * zoom);
   687 //ScreenFadeSpeed:= 5;
   687 //ScreenFadeSpeed:= 5;
   688 gX:= round(Gear^.X);
   688 gX:= round(Gear^.X);
   689 gY:= round(Gear^.Y);
   689 gY:= round(Gear^.Y);
   690 AddVisualGear(gX, gY, vgtSmokeRing);
   690 AddVisualGear(gX, gY, vgtSmokeRing);
   691 for i:= 0 to 46 do 
   691 for i:= 0 to 46 do
   692     begin
   692     begin
   693     vg:= AddVisualGear(gX, gY, vgtFire);
   693     vg:= AddVisualGear(gX, gY, vgtFire);
   694     if vg <> nil then 
   694     if vg <> nil then
   695         begin
   695         begin
   696         vg^.State:= gstTmpFlag;
   696         vg^.State:= gstTmpFlag;
   697         inc(vg^.FrameTicks, vg^.FrameTicks)
   697         inc(vg^.FrameTicks, vg^.FrameTicks)
   698         end
   698         end
   699     end;
   699     end;
   702 for i:= 0 to 15 do
   702 for i:= 0 to 15 do
   703     AddVisualGear(gX, gY, vgtExplPart2);
   703     AddVisualGear(gX, gY, vgtExplPart2);
   704 Gear^.doStep:= @doStepBigExplosionWork;
   704 Gear^.doStep:= @doStepBigExplosionWork;
   705 if Steps > 1 then
   705 if Steps > 1 then
   706     Gear^.doStep(Gear, Steps-1);
   706     Gear^.doStep(Gear, Steps-1);
   707 performRumble();
   707 with mobileRecord do
       
   708     if (performRumble <> nil) and (not fastUntilLag) then
       
   709         performRumble(kSystemSoundID_Vibrate);
   708 end;
   710 end;
   709 
   711 
   710 procedure doStepChunk(Gear: PVisualGear; Steps: Longword);
   712 procedure doStepChunk(Gear: PVisualGear; Steps: Longword);
   711 begin
   713 begin
   712 Gear^.X:= Gear^.X + Gear^.dX * Steps;
   714 Gear^.X:= Gear^.X + Gear^.dX * Steps;
   764 
   766 
   765 ////////////////////////////////////////////////////////////////////////////////
   767 ////////////////////////////////////////////////////////////////////////////////
   766 procedure doStepSmoothWindBar(Gear: PVisualGear; Steps: Longword);
   768 procedure doStepSmoothWindBar(Gear: PVisualGear; Steps: Longword);
   767 begin
   769 begin
   768 inc(Gear^.Timer, Steps);
   770 inc(Gear^.Timer, Steps);
   769     
   771 
   770 while Gear^.Timer >= 10 do
   772 while Gear^.Timer >= 10 do
   771     begin
   773     begin
   772     dec(Gear^.Timer, 10);
   774     dec(Gear^.Timer, 10);
   773     if WindBarWidth < Gear^.Tag then
   775     if WindBarWidth < Gear^.Tag then
   774         inc(WindBarWidth)
   776         inc(WindBarWidth)
   783 else if cWindspeedf < Gear^.dAngle then
   785 else if cWindspeedf < Gear^.dAngle then
   784     begin
   786     begin
   785     cWindspeedf := cWindspeedf + Gear^.Angle*Steps;
   787     cWindspeedf := cWindspeedf + Gear^.Angle*Steps;
   786     if cWindspeedf > Gear^.dAngle then cWindspeedf:= Gear^.dAngle;
   788     if cWindspeedf > Gear^.dAngle then cWindspeedf:= Gear^.dAngle;
   787     end;
   789     end;
   788         
   790 
   789 if (WindBarWidth = Gear^.Tag) and (cWindspeedf = Gear^.dAngle)  then 
   791 if (WindBarWidth = Gear^.Tag) and (cWindspeedf = Gear^.dAngle)  then
   790     DeleteVisualGear(Gear)
   792     DeleteVisualGear(Gear)
   791 end;
   793 end;
   792 ////////////////////////////////////////////////////////////////////////////////
   794 ////////////////////////////////////////////////////////////////////////////////
   793 procedure doStepStraightShot(Gear: PVisualGear; Steps: Longword);
   795 procedure doStepStraightShot(Gear: PVisualGear; Steps: Longword);
   794 begin
   796 begin
   798 if Gear^.FrameTicks <= Steps then
   800 if Gear^.FrameTicks <= Steps then
   799     DeleteVisualGear(Gear)
   801     DeleteVisualGear(Gear)
   800 else
   802 else
   801     begin
   803     begin
   802     dec(Gear^.FrameTicks, Steps);
   804     dec(Gear^.FrameTicks, Steps);
   803     if (Gear^.FrameTicks < 501) and (Gear^.FrameTicks mod 5 = 0) then 
   805     if (Gear^.FrameTicks < 501) and (Gear^.FrameTicks mod 5 = 0) then
   804         Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or (((Gear^.Tint and $000000FF) * Gear^.FrameTicks) div 500)
   806         Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or (((Gear^.Tint and $000000FF) * Gear^.FrameTicks) div 500)
   805     end
   807     end
   806 end;
   808 end;
   807 
   809