void fill_glass(int sel) { disable_joystick(); // Disable user input LCD_Clear(); LCD_DrawString(2, 8, (u8*)"Filling...", 10); LCD_DrawString(4, 8, (u8*)drink[sel], strlen(drink[sel]));; set_all_valves(0); // Safety check; close all valves int empty_weight = get_weight(); switch(sel) { case 0: // Tequila Sunrise; 30.75% Tequila, 61.5% Orange Juice, 7.75% Grenadine LCD_DrawChar(0, 0, '1'); fill_liquid(TEQUILA, (empty_weight + 0.3075*MAX_WEIGHT)); LCD_DrawChar(0, 0, '2'); fill_liquid(ORANGE, (empty_weight + 0.9225*MAX_WEIGHT)); LCD_DrawChar(0, 0, '3'); fill_liquid(GRENADINE, (empty_weight + MAX_WEIGHT)); break; case 1: // The Gilbert; 58% Vodka, 30% Soda, 12% Orange Juice LCD_DrawChar(0, 0, '1'); fill_liquid(VODKA, (empty_weight + 0.58*MAX_WEIGHT)); LCD_DrawChar(0, 0, '2'); fill_liquid(SODA, (empty_weight + 0.88*MAX_WEIGHT)); LCD_DrawChar(0, 0, '3'); fill_liquid(ORANGE, (empty_weight + MAX_WEIGHT)); break; case 2: // Pink Polar Bear; 58% Vodka, 42% Grenadine LCD_DrawChar(0, 0, '1'); fill_liquid(VODKA, (empty_weight + 0.58*MAX_WEIGHT)); LCD_DrawChar(0, 0, '2'); fill_liquid(GRENADINE, (empty_weight + MAX_WEIGHT)); break; case 3: // Screwdriver; 48% Vodka, 52% Orange Juice LCD_DrawChar(0, 0, '1'); fill_liquid(VODKA, (empty_weight + 0.48*MAX_WEIGHT)); LCD_DrawChar(0, 15*8, '2'); fill_liquid(ORANGE, (empty_weight + MAX_WEIGHT)); break; default: break; } set_all_valves(0); // Safety check; close all valves LCD_Clear(); LCD_DrawString(1, 8, (u8*)"Enjoy...", 8); LCD_DrawString(3, 8, (u8*)"Press Joystick", 14); LCD_DrawString(5, 8, (u8*)"for new drink", 13); enable_joystick(); // Enable user input }
/********************************************************************* * list_dlgproc [internal] * */ static INT_PTR CALLBACK list_dlgproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { static struct JoystickData *data; TRACE("(%p, 0x%08x/%d, 0x%lx)\n", hwnd, msg, msg, lparam); switch (msg) { case WM_INITDIALOG: { data = (struct JoystickData*) ((PROPSHEETPAGEW*)lparam)->lParam; initialize_joysticks_list(hwnd, data); initialize_disabled_joysticks_list(hwnd); EnableWindow(GetDlgItem(hwnd, IDC_BUTTONENABLE), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_BUTTONDISABLE), FALSE); /* Store the hwnd to be used with MapDialogRect for unit conversions */ data->graphics.hwnd = hwnd; return TRUE; } case WM_COMMAND: switch (LOWORD(wparam)) { case IDC_BUTTONDISABLE: { int sel = SendDlgItemMessageW(hwnd, IDC_JOYSTICKLIST, LB_GETCURSEL, 0, 0); if (sel >= 0) { enable_joystick(data->joysticks[sel].instance.tszInstanceName, FALSE); initialize_disabled_joysticks_list(hwnd); } } break; case IDC_BUTTONENABLE: { int sel = SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_GETCURSEL, 0, 0); if (sel >= 0) { WCHAR text[MAX_PATH]; SendDlgItemMessageW(hwnd, IDC_DISABLEDLIST, LB_GETTEXT, sel, (LPARAM) text); enable_joystick(text, TRUE); initialize_disabled_joysticks_list(hwnd); } } break; case IDC_JOYSTICKLIST: EnableWindow(GetDlgItem(hwnd, IDC_BUTTONENABLE), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_BUTTONDISABLE), TRUE); break; case IDC_DISABLEDLIST: EnableWindow(GetDlgItem(hwnd, IDC_BUTTONENABLE), TRUE); EnableWindow(GetDlgItem(hwnd, IDC_BUTTONDISABLE), FALSE); break; } return TRUE; case WM_NOTIFY: return TRUE; default: break; } return FALSE; }