/* Add the Transporter Button form */ bool intAddTransButtonForm(void) { WIDGET *transForm = widgGetFromID(psWScreen, IDTRANS_FORM); /* Add the button form */ IntListTabWidget *transList = new IntListTabWidget(transForm); transList->setChildSize(OBJ_BUTWIDTH, OBJ_BUTHEIGHT*2); transList->setChildSpacing(OBJ_GAP, OBJ_GAP); int objListWidth = OBJ_BUTWIDTH*5 + OBJ_GAP*4; transList->setGeometry((OBJ_BACKWIDTH - objListWidth)/2, TRANS_TABY, objListWidth, transForm->height() - TRANS_TABY); /* Add the transporter and status buttons */ int nextObjButtonId = IDTRANS_START; int nextStatButtonId = IDTRANS_STATSTART; //add each button for (DROID *psDroid = transInterfaceDroidList(); psDroid; psDroid = psDroid->psNext) { if ((psDroid->droidType != DROID_TRANSPORTER && psDroid->droidType != DROID_SUPERTRANSPORTER) || psDroid->action == DACTION_TRANSPORTOUT || psDroid->action == DACTION_TRANSPORTIN) { continue; } WIDGET *buttonHolder = new WIDGET(transList); transList->addWidgetToLayout(buttonHolder); IntStatusButton *statButton = new IntStatusButton(buttonHolder); statButton->id = nextStatButtonId; statButton->setGeometry(0, 0, OBJ_BUTWIDTH, OBJ_BUTHEIGHT); IntObjectButton *objButton = new IntObjectButton(buttonHolder); objButton->id = nextObjButtonId; objButton->setGeometry(0, OBJ_STARTY, OBJ_BUTWIDTH, OBJ_BUTHEIGHT); /* Set the tip and add the button */ objButton->setTip(droidGetName(psDroid)); objButton->setObject(psDroid); //set the first Transporter to be the current one if not already set if (psCurrTransporter == nullptr) { psCurrTransporter = psDroid; } /* if the current droid matches psCurrTransporter lock the button */ if (psDroid == psCurrTransporter) { objButton->setState(WBUT_LOCK); transList->setCurrentPage(transList->pages() - 1); } //now do status button statButton->setObject(nullptr); /* Update the init struct for the next buttons */ ++nextObjButtonId; ASSERT(nextObjButtonId < IDTRANS_END, "Too many Transporter buttons"); ++nextStatButtonId; ASSERT(nextStatButtonId < IDTRANS_STATEND, "Too many Transporter status buttons"); } return true; }