コード例 #1
0
ファイル: savereplay.c プロジェクト: piaopolar/taisei
void draw_saverpy_menu(MenuData *m) {
	int i;
	
	draw_options_menu_bg(m);
		
	draw_menu_selector(SCREEN_W/2 + 100 * m->drawdata[0] - 50, SCREEN_H/2, 1, 0.5, m->frames);
	
	glPushMatrix();
	glColor4f(1, 1, 1, 1);
	glTranslatef(SCREEN_W/2, SCREEN_H/2 - 100, 0);
	draw_text(AL_Center, 0, 0, "Save Replay?", _fonts.mainmenu);
	glTranslatef(0, 100, 0);
	
	m->drawdata[0] += (m->cursor - m->drawdata[0])/10.0;
	
	for(i = 0; i < m->ecount; i++) {
		MenuEntry *e = &(m->entries[i]);
		
		e->drawdata += 0.2 * (10*(i == m->cursor) - e->drawdata);
		float a = e->drawdata * 0.1;
		
		if(e->action == NULL)
			glColor4f(0.5, 0.5, 0.5, 0.5);
		else {
			float ia = 1-a;
			glColor4f(0.9 + ia * 0.1, 0.6 + ia * 0.4, 0.2 + ia * 0.8, 0.7 + 0.3 * a);
		}
		
		if(e->name)
			draw_text(AL_Center, -50 + 100 * i, 0, e->name, _fonts.mainmenu);
	}
	
	glPopMatrix();
}
コード例 #2
0
ファイル: ingamemenu.c プロジェクト: piaopolar/taisei
void draw_ingame_menu(MenuData *menu) {	
	glPushMatrix();
		glTranslatef(VIEWPORT_X, VIEWPORT_Y, 0);
	
	draw_ingame_menu_bg(1.0-menu_fade(menu));
	
	glPushMatrix();
	glTranslatef(VIEWPORT_W/2, VIEWPORT_H/4, 0);
		
	draw_menu_selector(0, menu->drawdata[0], menu->drawdata[1]/45.0, 0.25, menu->frames);
	
	menu->drawdata[0] += (menu->cursor*35 - menu->drawdata[0])/7.0;
	menu->drawdata[1] += (strlen(menu->entries[menu->cursor].name)*5 - menu->drawdata[1])/10.0;
	
	if(menu->context) {
		float s = 0.3 + 0.2 * sin(menu->frames/10.0);
		glColor4f(1-s/2, 1-s/2, 1-s, 1-menu_fade(menu));
		draw_text(AL_Center, 0, -2 * 35, menu->context, _fonts.standard);
	}
	
	int i;
	for(i = 0; i < menu->ecount; i++) {
		if(menu->entries[i].action) {
			float s = 0, t = 0.7;
			if(i == menu->cursor) {
				t = 1;
				s = 0.3 + 0.2*sin(menu->frames/7.0);
			}
			
			glColor4f(t-s,t-s,t-s/2, 1-menu_fade(menu));
		} else
			glColor4f(0.5, 0.5, 0.5, 0.5);
		
		draw_text(AL_Center, 0, i*35, menu->entries[i].name, _fonts.standard);
	}
		
	glColor4f(1,1,1,1);
	glPopMatrix();
	glPopMatrix();
	
	draw_hud();
}
コード例 #3
0
ファイル: options.c プロジェクト: laochailan/taisei
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,
		});