| 2646 | } |
| 2647 | |
| 2648 | static uint32 GUI_FactoryWindow_CreateWidgets(void) |
| 2649 | { |
| 2650 | uint16 i; |
| 2651 | uint16 count = 0; |
| 2652 | WidgetInfo *wi = g_table_factoryWidgetInfo; |
| 2653 | Widget *w = s_factoryWindowWidgets; |
| 2654 | |
| 2655 | memset(w, 0, 13 * sizeof(Widget)); |
| 2656 | |
| 2657 | for (i = 0; i < 13; i++, wi++) { |
| 2658 | if ((i == 8 || i == 9 || i == 10 || i == 12) && !g_factoryWindowStarport) continue; |
| 2659 | if (i == 11 && g_factoryWindowStarport) continue; |
| 2660 | if (i == 7 && g_factoryWindowUpgradeCost == 0) continue; |
| 2661 | |
| 2662 | count++; |
| 2663 | |
| 2664 | w->index = i + 46; |
| 2665 | memset(&w->state, 0, sizeof(w->state)); |
| 2666 | w->offsetX = wi->offsetX; |
| 2667 | w->offsetY = wi->offsetY; |
| 2668 | w->flags.requiresClick = (wi->flags & 0x0001) ? true : false; |
| 2669 | w->flags.notused1 = (wi->flags & 0x0002) ? true : false; |
| 2670 | w->flags.clickAsHover = (wi->flags & 0x0004) ? true : false; |
| 2671 | w->flags.invisible = (wi->flags & 0x0008) ? true : false; |
| 2672 | w->flags.greyWhenInvisible = (wi->flags & 0x0010) ? true : false; |
| 2673 | w->flags.noClickCascade = (wi->flags & 0x0020) ? true : false; |
| 2674 | w->flags.loseSelect = (wi->flags & 0x0040) ? true : false; |
| 2675 | w->flags.notused2 = (wi->flags & 0x0080) ? true : false; |
| 2676 | w->flags.buttonFilterLeft = (wi->flags >> 8) & 0x0f; |
| 2677 | w->flags.buttonFilterRight = (wi->flags >> 12) & 0x0f; |
| 2678 | w->shortcut = (wi->shortcut < 0) ? abs(wi->shortcut) : GUI_Widget_GetShortcut(*String_Get_ByIndex(wi->shortcut)); |
| 2679 | w->clickProc = wi->clickProc; |
| 2680 | w->width = wi->width; |
| 2681 | w->height = wi->height; |
| 2682 | |
| 2683 | if (wi->spriteID < 0) { |
| 2684 | w->drawModeNormal = DRAW_MODE_NONE; |
| 2685 | w->drawModeSelected = DRAW_MODE_NONE; |
| 2686 | w->drawModeDown = DRAW_MODE_NONE; |
| 2687 | } else { |
| 2688 | w->drawModeNormal = DRAW_MODE_SPRITE; |
| 2689 | w->drawModeSelected = DRAW_MODE_SPRITE; |
| 2690 | w->drawModeDown = DRAW_MODE_SPRITE; |
| 2691 | w->drawParameterNormal.sprite = g_sprites[wi->spriteID]; |
| 2692 | w->drawParameterSelected.sprite = g_sprites[wi->spriteID + 1]; |
| 2693 | w->drawParameterDown.sprite = g_sprites[wi->spriteID + 1]; |
| 2694 | } |
| 2695 | |
| 2696 | if (i != 0) { |
| 2697 | g_widgetInvoiceTail = GUI_Widget_Link(g_widgetInvoiceTail, w); |
| 2698 | } else { |
| 2699 | g_widgetInvoiceTail = w; |
| 2700 | } |
| 2701 | |
| 2702 | w++; |
| 2703 | } |
| 2704 | |
| 2705 | GUI_Widget_DrawAll(g_widgetInvoiceTail); |
no test coverage detected