/************************************************************************************************ * * RM_Objective.cpp * * Implements the CRMObjective class. This class is reponsible for parsing an objective * from the mission file as well as linking the objective into the world. * ************************************************************************************************/ #include "../server/exe_headers.h" #include "rm_headers.h" /************************************************************************************************ * CRMObjective::CRMObjective * Constructs a random mission objective and fills in the default properties * * inputs: * none * * return: * none * ************************************************************************************************/ CRMObjective::CRMObjective ( CGPGroup* group ) { SetPriority(atoi(group->FindPairValue("priority", "0"))); SetMessage( group->FindPairValue("message",va("Objective %i Completed", GetPriority()) ) ); SetDescription(group->FindPairValue("description",va("Objective %i", GetPriority()) ) ); SetInfo(group->FindPairValue("info",va("Info %i", GetPriority()) ) ); SetTrigger(group->FindPairValue("trigger","")); SetName(group->GetName()); /* const char * soundPath = group->FindPairValue("completed_sound", "" ); if (soundPath) mCompleteSoundID = G_SoundIndex(soundPath); */ mCompleted = false; mOrderIndex = -1; // If no priority was specified for this objective then its active by default. if ( GetPriority ( ) ) { mActive = false; } else { mActive = true; } } /************************************************************************************************ * CRMObjective::FindRandomTrigger * Searches the entitySystem form a random arioche trigger that matches the objective name * * inputs: * none * * return: * trigger: a random trigger or NULL if one couldnt be found * ************************************************************************************************/ /*CTriggerAriocheObjective* CRMObjective::FindRandomTrigger ( ) { CEntity* search; CEntity* triggers[20]; int numTriggers; // Start off the first trigger numTriggers = 0; search = entitySystem->GetEntityFromClassname ( NULL, "trigger_arioche_objective" ); // Make a list of triggers while ( numTriggers < 20 && search ) { CTriggerAriocheObjective* trigger = (CTriggerAriocheObjective*) search; // Move on to the next trigger search = entitySystem->GetEntityFromClassname ( search, "trigger_arioche_objective" ); // See if this trigger is already in use if ( trigger->GetObjective ( ) ) { continue; } // If the objective names dont match then ignore this trigger if ( stricmp ( trigger->GetObjectiveName ( ), GetTrigger() ) ) { continue; } // Add the trigger to the list triggers[numTriggers++] = trigger; } // If no matching triggers then just return NULL if ( 0 == numTriggers ) { return NULL; } // Return a random choice from the trigger list return (CTriggerAriocheObjective*)triggers[TheRandomMissionManager->GetLandScape()->irand(0,numTriggers-1)]; } */ /************************************************************************************************ * CRMObjective::Link * Links the objective into the world using the current state of the world to determine * where it should link * * inputs: * none * * return: * true: objective successfully linked * false: objective failed to link * ************************************************************************************************/ bool CRMObjective::Link ( ) { /* CTriggerAriocheObjective* trigger; // Look for a random trigger to associate this objective to. trigger = FindRandomTrigger ( ); if ( NULL != trigger ) { trigger->SetObjective ( this ); } */ return true; }