static gboolean dt_bauhaus_popup_scroll(GtkWidget *widget, GdkEventScroll *event, gpointer user_data) { gtk_widget_queue_draw(darktable.bauhaus->popup_area); dt_bauhaus_widget_t *w = darktable.bauhaus->current; switch(w->type) { case DT_BAUHAUS_COMBOBOX: { gint wx, wy; GtkWidget *w = GTK_WIDGET(darktable.bauhaus->current); const int ht = w->allocation.height; const int skip = ht + get_line_space(); gdk_window_get_origin (gtk_widget_get_window (w), &wx, &wy); dt_bauhaus_combobox_data_t *d = &darktable.bauhaus->current->data.combobox; if(event->direction == GDK_SCROLL_UP) dt_bauhaus_combobox_set(w, CLAMP(d->active-1, 0, d->num_labels-1)); else dt_bauhaus_combobox_set(w, CLAMP(d->active+1, 0, d->num_labels-1)); gdk_window_move(gtk_widget_get_window(darktable.bauhaus->popup_window), wx, wy - d->active * skip); } break; case DT_BAUHAUS_SLIDER: break; default: break; } return TRUE; }
void initialize_main_menu_buttons() { main_menu_buttons[0] = initialize_button_t(to_coord_t(get_h_res()/2, get_v_res() / 2 - 50), "Single Player", sp_game, MAIN_MENU_BUTTON_SIZE, 0.9); main_menu_buttons[1] = initialize_button_t(to_coord_t(get_h_res()/2, get_v_res() / 2 +50), "Multiplayer", mp_lobby, MAIN_MENU_BUTTON_SIZE,0.9); main_menu_buttons[2] = initialize_button_t(to_coord_t(get_h_res()/2, get_v_res() / 2 + 150), "Quit", exit_game, MAIN_MENU_BUTTON_SIZE, 0.9); main_menu_buttons[3] = initialize_button_t(to_coord_t(10,get_v_res()-get_line_space(2)),get_program_playername(), get_player_name, 2, 0.9); main_menu_buttons[3]->pos.x = 10; }
int main_menu_render() { memcpy(get_program_secondary_buf(),get_background()->color,get_vram_size()); //draw_cursor(get_program_secondary_buf(),cursor); draw_cursor(get_program_secondary_buf(),get_cursor()); size_t i; for(i = 0; i < NUM_MAIN_MENU_BUTTONS-1; i++) { draw_button_t_centered(main_menu_buttons[i]); } draw_name_button_t(main_menu_buttons[i]); printgr_shade_centered(get_program_secondary_buf(),"O",get_v_res()/2-325, 0.75,0xFFFF,5,5, .1, 10); printgr_shade(get_program_secondary_buf(),"2",get_h_res()/2+35, get_v_res()/2-215, 0.75,0xFFFF,5,5, .1,9); if(*get_date_str_ptr() != NULL) printgr_shade_centered(get_program_secondary_buf(),*get_date_str_ptr(),0, 0.75,0xFFFF,5,5, .1, 1); if(darken > 0) darken_buf(get_program_secondary_buf(),darken); if(darken > 0 && !fade_condition) { darken-= FADE_RATE; } if(fade_condition) { if(darken <= 127) { darken += FADE_RATE; } else { if(function_to_call == NULL) continue_condition = false; else { fade_condition = false; function_to_call(); if(main_menu_buttons[3] != NULL) free (main_menu_buttons[3]); main_menu_buttons[3] = initialize_button_t(to_coord_t(10,get_v_res()-get_line_space(2)),get_program_playername(), get_player_name, 2, 0.9); main_menu_buttons[3]->pos.x = 10; function_to_call = NULL; } } } copy_video_buffer(get_program_video_mem(), get_program_secondary_buf()); return 0; }
button_t* initialize_button_t (coord_t pos,char * text, int(*action)(), int size, float trans) { button_t* out = malloc(sizeof(button_t)); out->text = text; out->pos.y = pos.y; out->action = action; out->height = get_line_space(size); size_t i = 0; out->width = 0; for(; text[i] != '\0'; i++) { out->width += get_char_width(text[i], size) + get_char_sep(size); } out->width -= get_char_sep(size); out->pos.x = get_h_res()/2 - out->width /2; out->size = size; out->trans = trans; return out; }
int mp_lobby_render() { memcpy(get_program_secondary_buf(),get_background()->color,get_vram_size()); printgr_shade_centered(get_program_secondary_buf(),"Lobby",get_v_res()/2-200, 0.75,0xFFFF,5,5, .1, 8); printgr_shade(get_program_secondary_buf(),get_program_playername(),10, get_v_res()- get_line_space(2), 0.75,0xFFFF,5,5, .1, 2); if(*get_date_str_ptr() != NULL) printgr_shade_centered(get_program_secondary_buf(),*get_date_str_ptr(),0, 0.75,0xFFFF,5,5, .1, 1); if(get_role() == SEARCHING) { if(get_ticks() % 120 < 30) printgr_shade_centered(get_program_secondary_buf(),"Searching",get_v_res()/2, 0.75,0xFFFF,5,5, .1, 7); else if(get_ticks() % 120 < 60) printgr_shade_centered(get_program_secondary_buf(),"Searching.",get_v_res()/2, 0.75,0xFFFF,5,5, .1, 7); else if(get_ticks() % 120 < 90) printgr_shade_centered(get_program_secondary_buf(),"Searching..",get_v_res()/2, 0.75,0xFFFF,5,5, .1, 7); else printgr_shade_centered(get_program_secondary_buf(),"Searching...",get_v_res()/2, 0.75,0xFFFF,5,5, .1, 7); } else if(get_role() == FAILED) { printgr_shade_centered(get_program_secondary_buf(),"Connection Failed",get_v_res()/2, 0.75,0xFFFF,5,5, .1, 7); printgr_shade_centered(get_program_secondary_buf(),"Player Names must not be the same",get_v_res()/2+100, 0.75,0xFFFF,5,5, .1, 7); } if(get_role() == CLIENT || get_role() == SERVER) { strcpy(opponentmessage, "Opponent: "); strcat(opponentmessage, get_program_playername2()); printgr_shade_centered(get_program_secondary_buf(),opponentmessage,get_v_res()/2 +200, 0.75,0xFFFF,5,5, .1, 5); draw_cursor(get_program_secondary_buf(),get_cursor()); size_t i; if(lobby_state == PLAYER2_READY) { lobby_buttons[0]->text = "Play"; lobby_buttons[0]->trans = 0.9; } else if(lobby_state == PLAYER1_READY) { lobby_buttons[0]->text = "Unready"; lobby_buttons[0]->trans = 0.6; } else if(lobby_state == BOTH_READY) { lobby_buttons[0]->text = "Launching"; lobby_buttons[0]->trans = 0.9; } else { lobby_buttons[0]->text = "Ready"; lobby_buttons[0]->trans = 0.9; } lobby_buttons[0]->width = get_string_width(lobby_buttons[0]->text, lobby_buttons[0]->size); lobby_buttons[0]->pos.x = get_h_res()/2- lobby_buttons[0]->width/2; for(i = 0; i < NUM_LOBBY_BUTTONS; i++) { draw_button_t_centered(lobby_buttons[i]); } for(i = 0; i < size(im_message_log) && i < 20; ++i) { if(**(char**)at(im_message_log,size(im_message_log)-i-1) == 'm') printgr_shade(get_program_secondary_buf(),*(char**)at(im_message_log, size(im_message_log)-i-1),20,get_v_res()-100-(i+1)*20, .75,RGB(0,63,16),5,5, .1, 2); else printgr_shade(get_program_secondary_buf(),*(char**)at(im_message_log, size(im_message_log)-i-1),20,get_v_res()-100-(i+1)*20, .75,0xFFFF,5,5, .1, 2); } printgr_shade(get_program_secondary_buf(),">",10,get_v_res()-100, 0.75,0xFFFF,5,5, .1, 2); printgr_shade(get_program_secondary_buf(),current_im,20,get_v_res()-100, 0.75,0xFFFF,5,5, .1, 2); } if(darken > 0) darken_buf(get_program_secondary_buf(),darken); if(darken > 0 && !fade_condition) { darken-= FADE_RATE; } if(fade_condition) { if(darken <= 127) { darken += FADE_RATE; } else { if(lobby_state == BOTH_READY) { mp_game(); fade_condition = false; lobby_state = NOT_READY; } else continue_condition = false; } } copy_video_buffer(get_program_video_mem(), get_program_secondary_buf()); return 0; }