88
99#include "dinorunner.h"
1010
11- static float dinorunner_nightmode_updateXPos (float current_pos , float speed , unsigned container_width ) {
11+ static float dinorunner_nightmode_updateXPos (float current_pos , float speed , unsigned container_width ,
12+ float runner_speed ) {
1213 if (current_pos < - DINORUNNER_CONFIG_NIGHTMODE_WIDTH ) {
1314 current_pos = container_width ;
14- } else {
15+ } else if ( runner_speed != 0 ) {
1516 current_pos -= speed ;
1617 }
1718 return current_pos ;
@@ -56,7 +57,7 @@ void dinorunner_nightmode_init(struct nightmode_s* nightmode, unsigned container
5657}
5758
5859unsigned char dinorunner_nightmode_update (struct nightmode_s * nightmode , unsigned char show_nightmode ,
59- unsigned container_width , void * user_data ) {
60+ unsigned container_width , float current_speed , void * user_data ) {
6061 if (show_nightmode && nightmode -> opacity == 0 ) {
6162 nightmode -> current_phase ++ ;
6263 if (nightmode -> current_phase >= DINORUNNER_CONFIG_NIGHTMODE_MOONPHASES ) {
@@ -71,12 +72,12 @@ unsigned char dinorunner_nightmode_update(struct nightmode_s* nightmode, unsigne
7172 nightmode -> opacity -= DINORUNNER_CONFIG_NIGHTMODE_FADESPEED ;
7273 }
7374 if (nightmode -> opacity > 0 ) {
74- nightmode -> x_pos =
75- dinorunner_nightmode_updateXPos ( nightmode -> x_pos , DINORUNNER_CONFIG_NIGHTMODE_MOONSPEED , container_width );
75+ nightmode -> x_pos = dinorunner_nightmode_updateXPos ( nightmode -> x_pos , DINORUNNER_CONFIG_NIGHTMODE_MOONSPEED ,
76+ container_width , current_speed );
7677 if (nightmode -> draw_stars ) {
7778 for (unsigned i = 0 ; i < DINORUNNER_CONFIG_NIGHTMODE_NUMBSTARS ; ++ i ) {
7879 nightmode -> stars [i ].x = dinorunner_nightmode_updateXPos (
79- nightmode -> stars [i ].x , (float )DINORUNNER_CONFIG_NIGHTMODE_STARSPEED , container_width );
80+ nightmode -> stars [i ].x , (float )DINORUNNER_CONFIG_NIGHTMODE_STARSPEED , container_width , current_speed );
8081 }
8182 }
8283 dinorunner_nightmode_draw (nightmode , user_data );
@@ -91,5 +92,5 @@ unsigned char dinorunner_nightmode_update(struct nightmode_s* nightmode, unsigne
9192void dinorunner_nightmode_reset (struct nightmode_s * nightmode , unsigned container_width , void * user_data ) {
9293 nightmode -> current_phase = 0 ;
9394 nightmode -> opacity = 0 ;
94- dinorunner_nightmode_update (nightmode , 0 , container_width , user_data );
95+ dinorunner_nightmode_update (nightmode , 0 , container_width , 0 , user_data );
9596}
0 commit comments