static void render(void) { view_render_parent(); uint8_t alpha_byte = (uint8_t)(0xFF * alpha); SDL_SetRenderDrawBlendMode(display.renderer, SDL_BLENDMODE_BLEND); SDL_SetRenderDrawColor(display.renderer, target.r, target.g, target.b, alpha_byte); SDL_RenderFillRect(display.renderer, NULL); if (view_fade_done()) { view_pop(); } }
static void update(void) { brightness = 1.f - fabsf((float)rotate_timeout - (ROTATE_INTERVAL / 2)) / ((float)ROTATE_INTERVAL / 2); rotate_timeout -= 1; if (rotate_timeout == 0) { rotate_index = (rotate_index + 1) % 2; rotate_timeout = ROTATE_INTERVAL; } if (ticks_countup < game.ended_at_ticks) ticks_countup += 10; if (ticks_countup > game.ended_at_ticks) ticks_countup = game.ended_at_ticks; if (input_timeout == 0) { if (keyboard_is_down(SDLK_LEFT) && achievement_count > 0) { if (achievement_index == ach_no_left_arrow) { deactivate(); game.score.bprops[ach_no_no_left_arrow] = true; activate(); ticks_countup = game.ended_at_ticks; achievement_index = ach_no_no_left_arrow; audio_play("sfx/ach.wav"); } else { do { achievement_index = achievement_index - 1; if (achievement_index < 0) achievement_index = bp__last - 1; } while (! achieved_now[achievement_index]); } input_timeout = INPUT_INTERVAL; } if (keyboard_is_down(SDLK_RIGHT) && achievement_count > 0) { do { achievement_index = (achievement_index + 1) % bp__last; } while (! achieved_now[achievement_index]); input_timeout = INPUT_INTERVAL; } } else { --input_timeout; } if (keyboard_is_down(SDLK_ESCAPE)) { while (view_pop()) {} game_init(); } }
static void process_dude_gibs(thing_t *dt) { if (view_fade_done()) { set_score(); // Pop everything (pause? fade? who cares) while (view_pop()) { }; view_fade_in((SDL_Color) { 255, 255, 255, 255 }); view_push(&view_score); view_push(&view_fade); audio_music_fade(); process_init(); } else { uint32_t since_ended = game.active_ticks - game.ended_at_ticks; if (since_ended == 60) { view_push(&view_fade); } } }