Ejemplo n.º 1
0
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
}
Ejemplo n.º 2
0
/*********************************************************************
 * 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;
}