static void draw_options_menu(MenuData *menu) { OptionsMenuContext *ctx = menu->context; draw_options_menu_bg(menu); draw_menu_title(menu, ctx->title); r_mat_push(); r_mat_translate(100, 100, 0); draw_menu_selector(menu->drawdata[0], menu->drawdata[2], menu->drawdata[1], 34, menu->frames); int i, caption_drawn = 2; for(i = 0; i < menu->ecount; i++) { MenuEntry *e = menu->entries + i; OptionBinding *bind = bind_get(menu, i); Color clr; if(!e->name) { continue; } float a = e->drawdata * 0.1; float alpha = (!bind || bind_isactive(bind))? 1 : 0.5; if(e->action == NULL) { clr = *RGBA_MUL_ALPHA(0.5, 0.5, 0.5, 0.7 * alpha); } else { float ia = 1-a; clr = *RGBA_MUL_ALPHA(0.9 + ia * 0.1, 0.6 + ia * 0.4, 0.2 + ia * 0.8, (0.7 + 0.3 * a) * alpha); } r_shader("text_default"); text_draw(e->name, &(TextParams) { .pos = { (1 + (bind ? bind->pad : 0)) * 20 - e->drawdata, 20*i }, .color = &clr, });
void draw_difficulty_menu(MenuData *menu) { draw_main_menu_bg(menu, 0, 0, 0.05, "menu/mainmenubg", "stage1/cirnobg"); draw_menu_title(menu, "Select Difficulty"); Color c = diff_color; r_color(color_mul(&c, RGBA(0.07, 0.07, 0.07, 0.7))); r_mat_push(); r_mat_translate(SCREEN_W/2, SCREEN_H/2,0); r_mat_rotate_deg(4*menu->drawdata[0]-4,0,0,1); r_mat_push(); r_mat_scale(SCREEN_W*1.5,120,1); r_shader_standard_notex(); r_draw_quad(); r_mat_pop(); r_color3(1,1,1); r_shader("text_default"); float amp = menu->cursor/2.; float shake = 0.3*amp*menu->frames; text_draw(menu->entries[menu->cursor].name, &(TextParams) { .pos = { 120+15*menu->drawdata[0]+amp*sin(shake), -12+amp*cos(1.57*shake) }, });
void draw_stage_menu(MenuData *m) { draw_options_menu_bg(m); draw_menu_title(m, "Select Stage"); animate_menu_list(m); draw_menu_list(m, 100, 100, NULL); }
void draw_spell_menu(MenuData *m) { draw_options_menu_bg(m); draw_menu_title(m, "Spell Practice"); animate_menu_list(m); draw_menu_list(m, 100, 100, NULL); }