/** * @brief Add a single alien of a given type. */ static void AC_AddOne_f (void) { base_t* base = B_GetCurrentSelectedBase(); if (!base) { Com_Printf("%s: No base selected\n", cgi->Cmd_Argv(0)); return; } if (!base->alienContainment) { Com_Printf("%s: Current base has no alien containment\n", cgi->Cmd_Argv(0)); return; } if (cgi->Cmd_Argc() < 2) { Com_Printf("Usage: %s <alientype> [dead:true|false]\n", cgi->Cmd_Argv(0)); return; } const char* alienName = cgi->Cmd_Argv(1); if (!alienName) return; bool updateAlive = true; if (cgi->Cmd_Argc() == 3) updateAlive = Com_ParseBoolean(cgi->Cmd_Argv(2)); if (updateAlive) base->alienContainment->add(alienName, 1, 0); else base->alienContainment->add(alienName, 0, 1); }
/** * @brief Add a single alien of a given type. */ static void AC_AddOne_f (void) { const char *alienName; teamDef_t *alienType; aliensCont_t *containment; qboolean updateAlive = qtrue; int j; base_t *base = B_GetCurrentSelectedBase(); /* Can be called from everywhere. */ if (!base) return; /* arg parsing */ if (Cmd_Argc() < 2) { Com_Printf("Usage: %s <alientype> [dead:true|false]\n", Cmd_Argv(0)); return; } alienName = Cmd_Argv(1); alienType = Com_GetTeamDefinitionByID(alienName); if (!alienType) { Com_Printf("AC_AddOne_f: Team definition '%s' does not exist.\n", alienName); return; } /* Check that alientType exists */ containment = base->alienscont; for (j = 0; j < ccs.numAliensTD; j++) { aliensCont_t *ac = &containment[j]; assert(ac->teamDef); if (ac->teamDef == alienType) break; } if (j == ccs.numAliensTD) { Com_Printf("AC_AddOne_f: Alien Type '%s' does not exist. Available choices are:\n", alienName); for (j = 0; j < ccs.numAliensTD; j++) Com_Printf("\t* %s\n", containment[j].teamDef->name); return; } if (Cmd_Argc() == 3) updateAlive = Com_ParseBoolean(Com_Argv(2)); /* update alien counter*/ if (B_GetBuildingStatus(base, B_ALIEN_CONTAINMENT)) { containment = base->alienscont; } else { return; } /* call the function that actually changes the persistent datastructure */ AL_AddAliens2(base, alienType, !updateAlive); }