Exemplo n.º 1
0
/**
 * @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);
}
Exemplo n.º 2
0
/**
 * @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);
}