/** * @brief Fills the UI with ufo yard data */ static void INS_FillUFOYardData_f (void) { installation_t* ins; cgi->UI_ExecuteConfunc("ufolist_clear"); if (cgi->Cmd_Argc() < 2 || atoi(cgi->Cmd_Argv(1)) < 0) { ins = INS_GetCurrentSelectedInstallation(); if (!ins || ins->installationTemplate->type != INSTALLATION_UFOYARD) ins = INS_GetFirstUFOYard(false); } else { ins = INS_GetByIDX(atoi(cgi->Cmd_Argv(1))); if (!ins) Com_DPrintf(DEBUG_CLIENT, "Installation not founded (idx %i)\n", atoi(cgi->Cmd_Argv(1))); } if (ins) { const nation_t* nat = GEO_GetNation(ins->pos); const int timeToBuild = std::max(0, ins->installationTemplate->buildTime - (ccs.date.day - ins->buildStart)); const char* buildTime = (timeToBuild > 0 && ins->installationStatus == INSTALLATION_UNDER_CONSTRUCTION) ? va(ngettext("%d day", "%d days", timeToBuild), timeToBuild) : "-"; const int freeCap = std::max(0, ins->ufoCapacity.max - ins->ufoCapacity.cur); const char* nationName = nat ? _(nat->name) : ""; cgi->UI_ExecuteConfunc("ufolist_addufoyard %d \"%s\" \"%s\" %d %d \"%s\"", ins->idx, ins->name, nationName, ins->ufoCapacity.max, freeCap, buildTime); US_Foreach(ufo) { if (ufo->installation != ins) continue; const char* ufoName = UFO_GetName(ufo->ufoTemplate); const char* condition = va(_("Condition: %3.0f%%"), ufo->condition * 100); const char* status = US_StoredUFOStatus(ufo); cgi->UI_ExecuteConfunc("ufolist_addufo %d \"%s\" \"%s\" \"%s\" \"%s\"", ufo->idx, ufoName, condition, ufo->ufoTemplate->model, status); } } }
/** * @brief console function for destroying an installation * @sa INS_DestroyInstallation */ static void INS_DestroyInstallation_f (void) { installation_t* installation; if (cgi->Cmd_Argc() < 2 || atoi(cgi->Cmd_Argv(1)) < 0) { installation = INS_GetCurrentSelectedInstallation(); } else { installation = INS_GetByIDX(atoi(cgi->Cmd_Argv(1))); if (!installation) { Com_DPrintf(DEBUG_CLIENT, "Installation not founded (idx %i)\n", atoi(cgi->Cmd_Argv(1))); return; } } /* Ask 'Are you sure?' by default */ if (cgi->Cmd_Argc() < 3 || !atoi(cgi->Cmd_Argv(2))) { char command[MAX_VAR]; Com_sprintf(command, sizeof(command), "mn_installation_destroy %d 1; ui_pop;", installation->idx); cgi->UI_PopupButton(_("Destroy Installation"), _("Do you really want to destroy this installation?"), command, _("Destroy"), _("Destroy installation"), "ui_pop;", _("Cancel"), _("Forget it"), nullptr, nullptr, nullptr); return; } INS_DestroyInstallation(installation); }
/** * @brief Called when an installation is opened or a new installation is created on geoscape. * For a new installation the installationID is -1. */ static void INS_SelectInstallation_f (void) { int installationID; installation_t* installation; if (cgi->Cmd_Argc() < 2) { Com_Printf("Usage: %s <installationID>\n", cgi->Cmd_Argv(0)); return; } installationID = atoi(cgi->Cmd_Argv(1)); installation = INS_GetByIDX(installationID); if (installation != nullptr) INS_SelectInstallation(installation); }
/** * @brief Send Stored UFOs of the destination UFO Yard */ static void US_FillUFOTransferUFOs_f (void) { if (cgi->Cmd_Argc() < 2) { Com_DPrintf(DEBUG_CLIENT, "Usage: %s <idx>\n", cgi->Cmd_Argv(0)); return; } installation_t *ins = INS_GetByIDX(atoi(cgi->Cmd_Argv(1))); if (!ins) { Com_DPrintf(DEBUG_CLIENT, "Installation with idx: %i does not exist\n", atoi(cgi->Cmd_Argv(1))); return; } cgi->UI_ExecuteConfunc("ufotransferlist_clearufos %d", ins->idx); US_Foreach(ufo) { if (ufo->installation != ins) continue; cgi->UI_ExecuteConfunc("ufotransferlist_addufos %d %d \"%s\"", ins->idx, ufo->idx, ufo->ufoTemplate->model); } }
/** * @brief Callback to start the transfer of a stored UFO */ static void US_TransferUFO_f (void) { storedUFO_t *ufo; installation_t *ins = nullptr; if (cgi->Cmd_Argc() < 3) { Com_Printf("Usage: %s <stored-ufo-idx> <ufoyard-idx>\n", cgi->Cmd_Argv(0)); return; } ufo = US_GetStoredUFOByIDX(atoi(cgi->Cmd_Argv(1))); if (ufo == nullptr) { Com_Printf("Stored ufo with idx %i not found.\n", atoi(cgi->Cmd_Argv(1))); return; } ins = INS_GetByIDX(atoi(cgi->Cmd_Argv(2))); if (!ins) { Com_Printf("Installation with idx: %i does not exist\n", atoi(cgi->Cmd_Argv(2))); return; } US_TransferUFO(ufo, ins); }