/** * Handles Click event for the "Up" button in production window. * * @return True, always. */ bool GUI_Production_Up_Click(Widget *w) { bool locdi = false; if (g_factoryWindowSelected != 0) { g_timerTimeout = 10; GUI_FactoryWindow_B495_0F30(); g_factoryWindowSelected--; GUI_FactoryWindow_UpdateSelection(true); locdi = true; } else { if (g_factoryWindowBase != 0) { g_timerTimeout = 10; g_factoryWindowBase--; locdi = true; GUI_FactoryWindow_ScrollList(-1); GUI_FactoryWindow_UpdateSelection(true); } else { locdi = false; GUI_FactoryWindow_DrawDetails(); GUI_FactoryWindow_FailScrollList(-1); } } do { GUI_FactoryWindow_UpdateSelection(false); sleepIdle(); } while (g_timerTimeout != 0); if (locdi) GUI_FactoryWindow_DrawDetails(); GUI_Widget_MakeNormal(w, false); return true; }
/** * Handles Click event for the list in production window. * * @return True, always. */ bool GUI_Production_List_Click(Widget *w) { GUI_FactoryWindow_B495_0F30(); g_factoryWindowSelected = w->index - 46; GUI_FactoryWindow_DrawDetails(); GUI_FactoryWindow_UpdateSelection(true); return true; }
/** * Handles Click event for the "Down" button in production window. * * @return True, always. */ bool GUI_Production_Down_Click(Widget *w) { bool locdi = false; if (g_factoryWindowSelected < 3 && (g_factoryWindowSelected + 1) < g_factoryWindowTotal) { g_timerTimeout = 10; GUI_FactoryWindow_B495_0F30(); g_factoryWindowSelected++; GUI_FactoryWindow_UpdateSelection(true); locdi = true; } else { if (g_factoryWindowBase + 4 < g_factoryWindowTotal) { g_timerTimeout = 10; g_factoryWindowBase++; locdi = true; GUI_FactoryWindow_ScrollList(1); GUI_FactoryWindow_UpdateSelection(true); } else { locdi = false; GUI_FactoryWindow_DrawDetails(); GUI_FactoryWindow_FailScrollList(1); } } for (; g_timerTimeout != 0; sleepIdle()) { GUI_FactoryWindow_UpdateSelection(false); } if (locdi) GUI_FactoryWindow_DrawDetails(); GUI_Widget_MakeNormal(w, false); return true; }
static void GUI_Purchase_ShowInvoice(void) { Widget *w = g_widgetInvoiceTail; Screen oldScreenID; uint16 y = 48; uint16 total = 0; uint16 x; char textBuffer[12]; oldScreenID = GFX_Screen_SetActive(SCREEN_1); GUI_DrawFilledRectangle(128, 48, 311, 159, 20); GUI_DrawText_Wrapper(String_Get_ByIndex(STR_ITEM_NAME_QTY_TOTAL), 128, y, 12, 0, 0x11); y += 7; GUI_DrawLine(129, y, 310, y, 12); y += 2; if (g_factoryWindowOrdered != 0) { uint16 i; for (i = 0; i < g_factoryWindowTotal; i++) { ObjectInfo *oi; uint16 amount; if (g_factoryWindowItems[i].amount == 0) continue; amount = g_factoryWindowItems[i].amount * g_factoryWindowItems[i].credits; total += amount; snprintf(textBuffer, sizeof(textBuffer), "%02d %5d", g_factoryWindowItems[i].amount, amount); oi = g_factoryWindowItems[i].objectInfo; GUI_DrawText_Wrapper(String_Get_ByIndex(oi->stringID_full), 128, y, 8, 0, 0x11); GUI_DrawText_Monospace(textBuffer, 311 - strlen(textBuffer) * 6, y, 15, 0, 6); y += 8; } } else { GUI_DrawText_Wrapper(String_Get_ByIndex(STR_NO_UNITS_ON_ORDER), 220, 99, 6, 0, 0x112); } GUI_DrawLine(129, 148, 310, 148, 12); GUI_DrawLine(129, 150, 310, 150, 12); snprintf(textBuffer, sizeof(textBuffer), "%d", total); x = 311 - strlen(textBuffer) * 6; /* "Total Cost :" */ GUI_DrawText_Wrapper(GUI_String_Get_ByIndex(STR_TOTAL_COST_), x - 3, 152, 11, 0, 0x211); GUI_DrawText_Monospace(textBuffer, x, 152, 11, 0, 6); GUI_Mouse_Hide_Safe(); GUI_Screen_Copy(16, 48, 16, 48, 23, 112, SCREEN_1, SCREEN_0); GUI_Mouse_Show_Safe(); GFX_Screen_SetActive(SCREEN_0); GUI_FactoryWindow_DrawCaption(String_Get_ByIndex(STR_INVOICE_OF_UNITS_ON_ORDER)); Input_History_Clear(); for (; GUI_Widget_HandleEvents(w) == 0; sleepIdle()) { GUI_DrawCredits(g_playerHouseID, 0); GUI_FactoryWindow_UpdateSelection(false); GUI_PaletteAnimate(); } GFX_Screen_SetActive(oldScreenID); w = GUI_Widget_Get_ByIndex(w, 10); if (w != NULL && Mouse_InsideRegion(w->offsetX, w->offsetY, w->offsetX + w->width, w->offsetY + w->height) != 0) { while (Input_Test(0x41) != 0 || Input_Test(0x42) != 0) sleepIdle(); Input_History_Clear(); } if (g_factoryWindowResult == FACTORY_CONTINUE) GUI_FactoryWindow_DrawDetails(); }