static int recipe_controls_click_handler(int mx, int my, Uint32 flags){ int wpx=SLOT_SIZE*NUM_MIX_SLOTS+2; int wpy=manufacture_menu_y_len-37; int lpx=18; int lpy=SLOT_SIZE; if (mx>wpx&&mx<wpx+lpx&&my>wpy+lpy-10&&my<wpy+lpy){ //arrow if (flags & ELW_WHEEL_UP) { cur_recipe=(cur_recipe-1+num_recipe_entries)%num_recipe_entries; use_recipe(cur_recipe); } else if (flags & ELW_WHEEL_DOWN) { cur_recipe=(cur_recipe+1)%num_recipe_entries; use_recipe(cur_recipe); } else { //normal click toggle_recipe_window(); } build_manufacture_list(); do_click_sound(); } else if (mx>wpx+3&&mx<wpx+lpx-3&&my>wpy&&my<wpy+15){ //+ button copy_recipe_from_manu_list(recipes_store[cur_recipe].items); clear_recipe_name(cur_recipe); build_manufacture_list(); do_click_sound(); // save recipes to disk to avoid loss on disconnects/crashes save_recipes(); } return 0; }
// execute options from the recipe context menu static int context_recipe_handler(window_info *win, int widget_id, int mx, int my, int option) { switch (option) { case CMRIC_ADD: { // add additional row and select it if (wanted_num_recipe_entries < max_num_recipe_entries-1) { change_num_recipe_entries(&wanted_num_recipe_entries, wanted_num_recipe_entries+1); set_var_OPT_INT("wanted_num_recipe_entries", wanted_num_recipe_entries); cur_recipe = num_recipe_entries -1; } break; } case CMRIC_CLEAR: { // clear the current recipe size_t i; for(i=0; i<NUM_MIX_SLOTS; i++) recipes_store[cur_recipe].items[i].quantity = 0; clear_recipe_name(cur_recipe); break; } case CMRIC_SORT: { qsort(recipes_store, num_recipe_entries, sizeof(recipe_entry), recipe_cmp); break; } default: return 0; } return 1; }
// execute options from the recipe context menu static int context_recipe_handler(window_info *win, int widget_id, int mx, int my, int option) { switch (option) { case CMRIC_ADD: { // add additional row and select it if (wanted_num_recipe_entries < max_num_recipe_entries-1) { change_num_recipe_entries(&wanted_num_recipe_entries, wanted_num_recipe_entries+1); set_var_OPT_INT("wanted_num_recipe_entries", wanted_num_recipe_entries); cur_recipe = num_recipe_entries -1; } break; } case CMRIC_CLEAR: { // clear the current recipe clear_recipe_name(cur_recipe); init_recipe_slot(cur_recipe); break; } case CMRIC_DELETE: { // delete the current recipe and move the rest down to fill the gap clear_recipe_name(cur_recipe); if (cur_recipe < (num_recipe_entries - 1)) memmove(&recipes_store[cur_recipe], &recipes_store[cur_recipe+1], (num_recipe_entries - cur_recipe -1) * sizeof(recipe_entry)); init_recipe_slot(num_recipe_entries - 1); break; } case CMRIC_SORT: { // alphabetically sort the recipes by name, unnamed then empty slots at the end qsort(recipes_store, num_recipe_entries, sizeof(recipe_entry), recipe_cmp); break; } default: return 0; } return 1; }
int recipe_controls_click_handler(int mx, int my, Uint32 flags){ int i; int wpx=33*6+2; int wpy=manufacture_menu_y_len-37; int lpx=18; int lpy=33; if (mx>wpx&&mx<wpx+lpx&&my>wpy+lpy-10&&my<wpy+lpy){ //arrow if (flags & ELW_WHEEL_UP) { cur_recipe=(cur_recipe-1+SHOW_MAX_RECIPE)%SHOW_MAX_RECIPE; use_recipe(cur_recipe); } else if (flags & ELW_WHEEL_DOWN) { cur_recipe=(cur_recipe+1)%SHOW_MAX_RECIPE; use_recipe(cur_recipe); } else { //normal click recipes_shown=!recipes_shown; } build_manufacture_list(); if (recipes_shown) show_window(recipe_win); else hide_window(recipe_win); do_click_sound(); } else if (mx>wpx+3&&mx<wpx+lpx-3&&my>wpy&&my<wpy+15){ //+ button //copy the recipe for(i=36;i<36+6;i++) recipes[cur_recipe][i-36]=manufacture_list[i]; clear_recipe_name(cur_recipe); build_manufacture_list(); do_click_sound(); // save recipes to disk to avoid loss on disconnects/crashes save_recipes(); } return 0; }
static int recipe_controls_click_handler(window_info *win, int mx, int my, Uint32 flags){ int wpx=pipeline_x + SLOT_SIZE*NUM_MIX_SLOTS; int wpy=manufacture_menu_y_len-recipe_y_offset; int lpx=PIPE_CONTROL_X; int lpy=SLOT_SIZE; if (!recipes_loaded) return 0; if (mx>wpx && mx<wpx+lpx && my>wpy+lpy-control_elem_size*2 && my<wpy+lpy){ //arrow if (flags & ELW_WHEEL_UP) { cur_recipe=(cur_recipe-1+num_recipe_entries)%num_recipe_entries; use_recipe(cur_recipe); } else if (flags & ELW_WHEEL_DOWN) { cur_recipe=(cur_recipe+1)%num_recipe_entries; use_recipe(cur_recipe); } else { //normal click toggle_recipe_window(); } build_manufacture_list(); do_click_sound(); } else if (mx>wpx+win->small_font_len_x/2 && mx<wpx+lpx-win->small_font_len_x/2 && my>wpy && my<wpy+win->small_font_len_y){ //+ button copy_recipe_from_manu_list(recipes_store[cur_recipe].items); clear_recipe_name(cur_recipe); build_manufacture_list(); do_click_sound(); // save recipes to disk to avoid loss on disconnects/crashes save_recipes(); } return 0; }