From: Holger Schemel Date: Fri, 23 Mar 2018 20:19:12 +0000 (+0100) Subject: fixed bug with extremely slow envelopes when using "request.step_delay: 0" X-Git-Tag: 4.1.0.0~234 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=a59ecddb639a019558ca97f61783fd229dce077e;p=rocksndiamonds.git fixed bug with extremely slow envelopes when using "request.step_delay: 0" Using a step delay of zero for envelope style requests (and also in-game envelopes) resulted in extremely slow envelope animations (instead of very fast animations, as could be expected), because "SkipUntilDelayReached()" won't skip any frames in this case (which should probably be corrected, too). This is fixed by never using a step delay value less than "1". --- diff --git a/src/tools.c b/src/tools.c index 8718bbe1..21f062b4 100644 --- a/src/tools.c +++ b/src/tools.c @@ -2511,7 +2511,7 @@ void AnimateEnvelope(int envelope_nr, int anim_mode, int action) boolean no_delay = (tape.warp_forward); unsigned int anim_delay = 0; int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay); - int anim_delay_value = (no_delay ? 0 : frame_delay_value) / 2; + int anim_delay_value = MAX(1, (no_delay ? 0 : frame_delay_value) / 2); int font_nr = FONT_ENVELOPE_1 + envelope_nr; int font_width = getFontWidth(font_nr); int font_height = getFontHeight(font_nr); @@ -2768,7 +2768,7 @@ void AnimateEnvelopeRequest(int anim_mode, int action) boolean ffwd_delay = (tape.playing && tape.fast_forward); boolean no_delay = (tape.warp_forward); int delay_value = (ffwd_delay ? delay_value_fast : delay_value_normal); - int anim_delay_value = (no_delay ? 0 : delay_value + 500 * 0) / 2; + int anim_delay_value = MAX(1, (no_delay ? 0 : delay_value + 500 * 0) / 2); unsigned int anim_delay = 0; int tile_size = MAX(request.step_offset, 1);