# HG changeset patch # User Wuzzy # Date 1547143746 -3600 # Node ID 78363dbfd5dc8045e031fed3b5a94873f0471702 # Parent e68b91abbcf584ddbf56a6f6065f7a91deb754b2 Prevent wind bar from overflowing with high wind values Wind flow overflow does not happen normally, but might be triggered when calling SetWind with extreme values (>100 or <-100). Allows for silly wind experiments in scripts. diff -r e68b91abbcf5 -r 78363dbfd5dc hedgewars/uVisualGearsHandlers.pas --- a/hedgewars/uVisualGearsHandlers.pas Thu Jan 10 18:45:04 2019 +0100 +++ b/hedgewars/uVisualGearsHandlers.pas Thu Jan 10 19:09:06 2019 +0100 @@ -900,6 +900,7 @@ currwindbar: PVisualGear = nil; procedure doStepSmoothWindBarWork(Gear: PVisualGear; Steps: Longword); +const maxWindBarWidth = 73; begin if currwindbar = Gear then begin @@ -912,6 +913,11 @@ inc(WindBarWidth) else if WindBarWidth > Gear^.Tag then dec(WindBarWidth); + // Prevent wind bar from overflowing + if WindBarWidth > maxWindBarWidth then + WindBarWidth:= maxWindBarWidth; + if WindBarWidth < - maxWindBarWidth then + WindBarWidth:= - maxWindBarWidth; end; if cWindspeedf > Gear^.dAngle then begin @@ -925,7 +931,7 @@ end; end; - if ((WindBarWidth = Gear^.Tag) and (cWindspeedf = Gear^.dAngle)) or (currwindbar <> Gear) then + if (((WindBarWidth = Gear^.Tag) or (Abs(WindBarWidth) >= maxWindBarWidth)) and (cWindspeedf = Gear^.dAngle)) or (currwindbar <> Gear) then begin if currwindbar = Gear then currwindbar:= nil; DeleteVisualGear(Gear)