@@ -42,7 +42,6 @@ unsigned char dinorunner_init(struct dinorunner_s* dinorunner, const struct dime
4242 - DINORUNNER_CONFIG_HORIZON_GAP_COEFFICIENT , dinorunner -> user_data );
4343 res &= dinorunner_trex_init (& dinorunner -> trex , dimension -> width , dimension -> height , dinorunner -> user_data );
4444 res &= dinorunner_gameoverpanel_init (& dinorunner -> gameoverpanel , dimension );
45- res &= dinorunner_clearcanvas (dinorunner -> user_data );
4645 res &= dinorunner_distancemeter_init (& dinorunner -> distance_meter , & text_dimension , dimension -> width ,
4746 dinorunner -> user_data );
4847 return res ;
@@ -59,13 +58,12 @@ unsigned char dinorunner_startgame(struct dinorunner_s* dinorunner) {
5958unsigned char dinorunner_restart (struct dinorunner_s * dinorunner ) {
6059 dinorunner -> play_count ++ ;
6160 dinorunner -> running_time = 0u ;
62- dinorunner -> playing = 0u ;
61+ dinorunner -> playing = 1u ;
6362 dinorunner -> distance_ran = 0u ;
6463 dinorunner -> crashed = 0u ;
6564 dinorunner -> current_speed = DINORUNNER_CONFIG_SPEED ;
6665 // set_speed(DINORUNNER_CONFIG_SPEED);
6766 dinorunner -> time = dinorunner_gettimestamp (dinorunner -> user_data );
68- dinorunner_clearcanvas (dinorunner -> user_data );
6967 dinorunner_distancemeter_reset (& dinorunner -> distance_meter , dinorunner -> distance_meter .high_score ,
7068 dinorunner -> user_data );
7169 dinorunner_horizon_reset (& dinorunner -> horizon , dinorunner -> user_data );
@@ -94,26 +92,19 @@ void dinorunner_stop(struct dinorunner_s* dinorunner) {
9492}
9593
9694static void dinorunner_gameover (struct dinorunner_s * dinorunner ) {
97- if (dinorunner -> playing ) {
98- dinorunner_playsound (DINORUNNER_SOUND_HIT , dinorunner -> user_data );
99- dinorunner_vibrate (200 , dinorunner -> user_data );
100- }
95+ dinorunner_playsound (DINORUNNER_SOUND_HIT , dinorunner -> user_data );
96+ dinorunner_vibrate (200 , dinorunner -> user_data );
10197 dinorunner_stop (dinorunner );
10298 dinorunner -> crashed = 1u ;
10399 dinorunner -> distance_meter .achievement = 0u ;
104100 dinorunner_trex_update (& dinorunner -> trex , 100 , TREX_STATUS_CRASHED , dinorunner -> user_data );
105- dinorunner_gameoverpanel_draw (& dinorunner -> gameoverpanel , dinorunner -> user_data );
106101 unsigned last_score = dinorunner_distancemeter_getactualdistance (dinorunner -> distance_ran );
107102 if (last_score > dinorunner -> distance_meter .high_score ) {
108103 dinorunner -> distance_meter .high_score = last_score ;
109104 dinorunner_distancemeter_writehighscore (& dinorunner -> distance_meter , dinorunner -> distance_meter .high_score ,
110105 dinorunner -> user_data );
111106 }
112- dinorunner_distancemeter_draw (& dinorunner -> distance_meter , 0 , last_score , 0 , dinorunner -> user_data );
113- dinorunner_distancemeter_draw (& dinorunner -> distance_meter , 0 , dinorunner -> distance_meter .high_score , 1 ,
114- dinorunner -> user_data );
115107 dinorunner -> time = dinorunner_gettimestamp (dinorunner -> user_data );
116- dinorunner_clearcanvas (dinorunner -> user_data );
117108}
118109
119110static inline void dinorunner_createadjustedcollisionbox (const struct collision_box_s * box ,
@@ -188,8 +179,8 @@ unsigned char dinorunner_update(struct dinorunner_s* dinorunner) {
188179 unsigned long now = dinorunner_gettimestamp (dinorunner -> user_data );
189180 unsigned long delta_time = now - dinorunner -> time ;
190181 dinorunner -> time = now ;
182+ dinorunner_clearcanvas (dinorunner -> user_data );
191183 if (dinorunner -> playing ) {
192- dinorunner_clearcanvas (dinorunner -> user_data );
193184 if (dinorunner -> trex .jumping ) {
194185 dinorunner_trex_updatejump (& dinorunner -> trex , delta_time , dinorunner -> user_data );
195186 }
@@ -244,16 +235,21 @@ unsigned char dinorunner_update(struct dinorunner_s* dinorunner) {
244235 }
245236 if (dinorunner -> crashed ) {
246237 dinorunner_gameoverpanel_draw (& dinorunner -> gameoverpanel , dinorunner -> user_data );
247- } else if ((dinorunner -> playing )) {
238+ dinorunner_horizon_update (& dinorunner -> horizon , 0 , 0 , 1 , dinorunner -> inverted , dinorunner -> user_data );
239+ dinorunner_distancemeter_draw (& dinorunner -> distance_meter , 0 ,
240+ dinorunner_distancemeter_getactualdistance (dinorunner -> distance_ran ), 0 ,
241+ dinorunner -> user_data );
242+ dinorunner_distancemeter_draw (& dinorunner -> distance_meter , 0 , dinorunner -> distance_meter .high_score , 1 ,
243+ dinorunner -> user_data );
244+ dinorunner_trex_update (& dinorunner -> trex , delta_time , TREX_STATUS_CRASHED , dinorunner -> user_data );
245+ } else if (dinorunner -> playing ) {
248246 dinorunner_trex_update (& dinorunner -> trex , delta_time , TREX_STATUS_NONE , dinorunner -> user_data );
249247 } else if ((!dinorunner -> activated ) && (dinorunner -> trex .blink_count < DINORUNNER_CONFIG_MAX_BLINK_COUNT )) {
250248 dinorunner_trex_update (& dinorunner -> trex , delta_time , TREX_STATUS_NONE , dinorunner -> user_data );
251249 dinorunner_horizonline_draw (& dinorunner -> horizon .horizon_line , dinorunner -> user_data );
252- dinorunner_clearcanvas (dinorunner -> user_data );
253250 } else {
254251 dinorunner_trex_update (& dinorunner -> trex , delta_time , TREX_STATUS_WAITING , dinorunner -> user_data );
255252 dinorunner_horizonline_draw (& dinorunner -> horizon .horizon_line , dinorunner -> user_data );
256- dinorunner_clearcanvas (dinorunner -> user_data );
257253 }
258254 return 1u ;
259255}
0 commit comments