本文整理汇总了C++中DROID_GROUP::add方法的典型用法代码示例。如果您正苦于以下问题:C++ DROID_GROUP::add方法的具体用法?C++ DROID_GROUP::add怎么用?C++ DROID_GROUP::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DROID_GROUP
的用法示例。
在下文中一共展示了DROID_GROUP::add方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: scrGroupAddArea
// Add droids in an area to a group
bool scrGroupAddArea(void)
{
DROID_GROUP *psGroup;
DROID *psDroid;
SDWORD x1, y1, x2, y2, player;
if (!stackPopParams(6, ST_GROUP, &psGroup, VAL_INT, &player,
VAL_INT, &x1, VAL_INT, &y1, VAL_INT, &x2, VAL_INT, &y2))
{
return false;
}
ASSERT(psGroup != NULL,
"scrGroupAdd: Invalid group pointer");
if (player < 0 || player >= MAX_PLAYERS)
{
ASSERT(false, "scrGroupAddArea: invalid player");
return false;
}
for (psDroid = apsDroidLists[player]; psDroid; psDroid = psDroid->psNext)
{
if (((SDWORD)psDroid->pos.x >= x1) && ((SDWORD)psDroid->pos.x <= x2) &&
((SDWORD)psDroid->pos.y >= y1) && ((SDWORD)psDroid->pos.y <= y2) &&
psDroid->droidType != DROID_COMMAND &&
(psDroid->droidType != DROID_TRANSPORTER && psDroid->droidType != DROID_SUPERTRANSPORTER))
{
psGroup->add(psDroid);
}
}
return true;
}
示例2: cmdDroidAddDroid
/** This function adds the droid to the command group commanded by psCommander.
* It creates a group if it doesn't exist.
* If the group is not full, it adds the droid to it and sets all the droid's states and orders to the group's.
*/
void cmdDroidAddDroid(DROID *psCommander, DROID *psDroid)
{
DROID_GROUP *psGroup;
if (psCommander->psGroup == NULL)
{
psGroup = grpCreate();
psGroup->add(psCommander);
psDroid->group = UBYTE_MAX;
}
if (psCommander->psGroup->getNumMembers() < cmdDroidMaxGroup(psCommander))
{
psCommander->psGroup->add(psDroid);
psDroid->group = UBYTE_MAX;
// set the secondary states for the unit
secondarySetState(psDroid, DSO_REPAIR_LEVEL, (SECONDARY_STATE)(psCommander->secondaryOrder & DSS_REPLEV_MASK), ModeImmediate);
secondarySetState(psDroid, DSO_ATTACK_LEVEL, (SECONDARY_STATE)(psCommander->secondaryOrder & DSS_ALEV_MASK), ModeImmediate);
orderDroidObj(psDroid, DORDER_GUARD, (BASE_OBJECT *)psCommander, ModeImmediate);
}
else
{
audio_PlayTrack( ID_SOUND_BUILD_FAIL );
addConsoleMessage(_("Commander needs a higher level to command more units"), DEFAULT_JUSTIFY, SYSTEM_MESSAGE);
}
}
示例3: scrGroupAddDroid
// Add a droid to a group
bool scrGroupAddDroid(void)
{
DROID_GROUP *psGroup;
DROID *psDroid;
if (!stackPopParams(2, ST_GROUP, &psGroup, ST_DROID, &psDroid))
{
return false;
}
ASSERT(psGroup != NULL,
"scrGroupAdd: Invalid group pointer");
ASSERT(psDroid != NULL,
"scrGroupAdd: Invalid droid pointer");
if (psDroid == NULL)
{
return false;
}
if (psDroid->droidType == DROID_COMMAND)
{
debug(LOG_ERROR,
"scrGroupAdd: cannot add a command droid to a group");
return false;
}
if (psDroid->droidType == DROID_TRANSPORTER || psDroid->droidType == DROID_SUPERTRANSPORTER)
{
debug(LOG_ERROR,
"scrGroupAdd: cannot add a transporter to a group");
return false;
}
psGroup->add(psDroid);
return true;
}
示例4: scrCBTransporterLandedB
bool scrCBTransporterLandedB( void )
{
SDWORD player;
DROID_GROUP *psGroup;
DROID *psTransporter, *psDroid, *psNext;
bool retval;
DROID **ppsTransp;
if (!stackPopParams(3, ST_GROUP, &psGroup, VAL_INT, &player,
VAL_REF|ST_DROID, &ppsTransp))
{
debug(LOG_ERROR, "scrCBTransporterLandedB(): stack failed");
return false;
}
psTransporter = transporterGetScriptCurrent();
if ( (psTransporter == NULL) ||
(psTransporter->player != (UDWORD)player) )
{
retval = false;
}
else
{
*ppsTransp = psTransporter; //return landed transporter
/* if not selectedPlayer unload droids */
//if ( (UDWORD)player != selectedPlayer )
//{
/* transfer droids from transporter group to current group */
for(psDroid=psTransporter->psGroup->psList; psDroid; psDroid=psNext)
{
psNext = psDroid->psGrpNext;
if ( psDroid != psTransporter )
{
psGroup->add(psDroid);
}
}
//}
retval = true;
}
scrFunctionResult.v.bval = retval;
if (!stackPushResult(VAL_BOOL, &scrFunctionResult))
{
debug(LOG_ERROR, "scrCBTransporterLandedB: push landed");
return false;
}
return true;
}
示例5: js_groupAddDroid
static QScriptValue js_groupAddDroid(QScriptContext *context, QScriptEngine *engine)
{
int groupId = context->argument(0).toInt32();
DROID_GROUP *psGroup = grpFind(groupId);
QScriptValue droidVal = context->argument(1);
int droidId = droidVal.property("id").toInt32();
int droidPlayer = droidVal.property("player").toInt32();
DROID *psDroid = IdToDroid(droidId, droidPlayer);
SCRIPT_ASSERT(context, psGroup, "Invalid group index %d", groupId);
SCRIPT_ASSERT(context, psDroid, "Invalid droid index %d", droidId);
psGroup->add(psDroid);
return QScriptValue();
}
示例6: scrCBTransporterLanded
bool scrCBTransporterLanded( void )
{
SDWORD player;
DROID_GROUP *psGroup;
DROID *psTransporter, *psDroid, *psNext;
bool retval;
if (!stackPopParams(2, ST_GROUP, &psGroup, VAL_INT, &player))
{
return false;
}
psTransporter = transporterGetScriptCurrent();
if ( (psTransporter == NULL) ||
(psTransporter->player != (UDWORD)player) )
{
retval = false;
}
else
{
/* if not selectedPlayer unload droids */
if ( (UDWORD)player != selectedPlayer )
{
/* transfer droids from transporter group to current group */
for(psDroid=psTransporter->psGroup->psList; psDroid; psDroid=psNext)
{
psNext = psDroid->psGrpNext;
if ( psDroid != psTransporter )
{
psGroup->add(psDroid);
}
}
}
retval = true;
}
scrFunctionResult.v.bval = retval;
if (!stackPushResult(VAL_BOOL, &scrFunctionResult))
{
return false;
}
return true;
}
示例7: js_groupAddArea
static QScriptValue js_groupAddArea(QScriptContext *context, QScriptEngine *engine)
{
int groupId = context->argument(0).toInt32();
int player = engine->globalObject().property("me").toInt32();
int x1 = context->argument(1).toInt32();
int y1 = context->argument(2).toInt32();
int x2 = context->argument(3).toInt32();
int y2 = context->argument(4).toInt32();
DROID_GROUP *psGroup = grpFind(groupId);
SCRIPT_ASSERT(context, psGroup, "Invalid group index %d", groupId);
for (DROID *psDroid = apsDroidLists[player]; psGroup && psDroid; psDroid = psDroid->psNext)
{
if (psDroid->pos.x >= x1 && psDroid->pos.x <= x2 && psDroid->pos.y >= y1 && psDroid->pos.y <= y2
&& psDroid->droidType != DROID_COMMAND && psDroid->droidType != DROID_TRANSPORTER)
{
psGroup->add(psDroid);
}
}
return QScriptValue();
}
示例8: scrValDefLoad
//.........这里部分代码省略.........
if (ini.contains("data"))
{
psVal->v.sval = strdup(ini.value("data").toString().toAscii().constData());
}
break;
case ST_LEVEL:
psVal->v.sval = NULL;
if (ini.contains("data"))
{
psLevel = levFindDataSet(ini.value("data").toString().toAscii().constData());
if (psLevel == NULL)
{
debug(LOG_FATAL, "Could not find level dataset");
}
psVal->v.sval = psLevel->pName;
}
break;
case ST_RESEARCH:
psVal->v.oval = NULL;
if (ini.contains("data"))
{
QString research = ini.value("data").toString();
if (!research.isEmpty())
{
psVal->v.oval = (void*)getResearch(research.toUtf8().constData());
ASSERT_OR_RETURN(false, psVal->v.oval, "Could not find research %s", research.toUtf8().constData());
}
}
break;
case ST_GROUP:
if (psVal->v.oval == NULL)
{
DROID_GROUP *tmp = grpCreate();
tmp->add(NULL);
psVal->v.oval = tmp;
}
psGroup = (DROID_GROUP *)(psVal->v.oval);
members = ini.value("members", 0).toInt();
if (psGroup && members > 0)
{
QStringList droids = ini.value("data").toStringList();
// load the retreat data
psGroup->sRunData.sPos = ini.vector2i("runpos");
psGroup->sRunData.forceLevel = ini.value("forceLevel").toInt();
psGroup->sRunData.leadership = ini.value("leadership").toInt();
psGroup->sRunData.healthLevel = ini.value("healthLevel").toInt();
// load the droids
while (members > 0)
{
id = droids.takeLast().toInt();
psCDroid = (DROID *)getBaseObjFromId(id);
if (!psCDroid)
{
debug(LOG_ERROR, "Could not find object id %d", id);
}
else
{
((DROID_GROUP*)(psVal->v.oval))->add(psCDroid);
}
members--;
}
}
break;
case ST_SOUND:
示例9: scrValDefLoad
//.........这里部分代码省略.........
else
{
psLevel = levFindDataSet(pBuffer);
if (psLevel == NULL)
{
debug( LOG_FATAL, "scrValDefLoad: couldn't find level dataset %s", pBuffer );
abort();
}
psVal->v.sval = psLevel->pName;
}
break;
case ST_RESEARCH:
if ((size == 1) &&
(*pBuffer == 0))
{
psVal->v.oval = NULL;
}
else
{
psVal->v.oval = (void*)getResearch(pBuffer);
if (psVal->v.oval == NULL)
{
debug( LOG_FATAL, "scrValDefLoad: couldn't find research %s", pBuffer );
abort();
}
}
break;
case ST_GROUP:
bObjectDefined = true;
if (psVal->v.oval == NULL)
{
DROID_GROUP *tmp = grpCreate();
tmp->add(NULL);
psVal->v.oval = tmp;
}
pPos = pBuffer;
if (version < 2)
{
members = size / sizeof(UDWORD);
}
else if (version < 3)
{
members = (size - sizeof(SDWORD)*4) / sizeof(UDWORD);
}
else
{
members = (size - sizeof(SDWORD)*6) / sizeof(UDWORD);
// get saved group member count/nullpointer flag
endian_sdword((SDWORD*)pPos);
bObjectDefined = ( *((SDWORD *)pPos) != UNALLOCATED_OBJECT );
if(bObjectDefined)
{
savedMembers = *((SDWORD *)pPos); // get number of saved group members
ASSERT(savedMembers == members, "scrValDefLoad: calculated and saved group member count did not match." );
}
pPos += sizeof(SDWORD);
}
// make sure group was allocated when it was saved (relevant starting from version 3)
if( version < 3 || bObjectDefined )