sources » AITriggerTypeClass » CreateFromINIList
// This is called twice on map load: to load them from ai(md).ini, and from the map itself:
/*
* AITriggerTypeClass::CreateFromINIList(aimd_ini, 1);
* AITriggerTypeClass::CreateFromINIList(map_ini, 0);
*/
static void AITriggerTypeClass::CreateFromINIList(INIClass *iniFile, bool isGlobal) {
AITriggerTypeClass *Trigger;
int length = iniFile->Section_GetValueCount("AITriggerTypes");
int idx = 0;
while ( idx < length ) {
char *nthKey = iniFile->Section_GetNthKeyName("AITriggerTypes", idx);
if ( !strcmpi("<none>", nthKey) ) {
Trigger = NULL;
}
else if ( !strcmpi("none", nthKey) ) {
Trigger = NULL;
} else {
int testIdx = 0;
bool found = 0;
bool error = 0;
if ( vector_AITriggerTypes.length > 0 ) {
while ( !found && !error && strcmpi(vector_AITriggerTypes[testIdx]->iniName, nthKey) ) {
++testIdx;
if ( testIdx >= vector_AITriggerTypes.length )
error = 1;
}
if ( !error )
Trigger = vector_AITriggerTypes[testIdx];
found = 1;
}
if( !found )
Trigger = new AITriggerTypeClass(nthKey);
if ( Trigger ) {
Trigger->LoadFromINI(iniFile);
Trigger->isGlobal = isGlobal;
} else {
Trigger = NULL;
}
}
if ( isGlobal == 1 )
Trigger->isEnabled = 1;
++idx;
}
if ( !isGlobal ) {
length = iniFile->Section_GetValueCount("AITriggerTypesEnable");
for ( idx = 0; idx < length; ++idx ) {
char *curKey = iniFile->Section_GetNthKeyName("AITriggerTypesEnable", idx);
int testIdx = 0;
bool found = 0;
bool error = 0;
if ( vector_AITriggerTypes.length > 0 ) {
while ( !found && !error && strcmpi(vector_AITriggerTypes[testIdx]->nameINI, curKey) ) {
++testIdx;
if ( testIdx >= vector_AITriggerTypes.length )
error = 1;
}
if( error )
continue;
Trigger = vector_AITriggerTypes[testIdx];
if ( Trigger )
Trigger->isEnabled = iniFile->GetBool("AITriggerTypesEnable", curKey, 0) || (GameSession.GameMode != gmSingleCampaign);
}
}
}
}