MCPcopy Create free account
hub / github.com/OpenDUNE/OpenDUNE / GUI_FactoryWindow_CreateWidgets

Function GUI_FactoryWindow_CreateWidgets

src/gui/gui.c:2648–2708  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2646}
2647
2648static 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);

Callers 1

GUI_FactoryWindow_InitFunction · 0.85

Calls 4

GUI_Widget_GetShortcutFunction · 0.85
String_Get_ByIndexFunction · 0.85
GUI_Widget_LinkFunction · 0.85
GUI_Widget_DrawAllFunction · 0.85

Tested by

no test coverage detected