IAssignment IJobSource.FindAssignment(ILivingObject _living)
{
var living = (LivingObject)_living;
if (this.CurrentBuildOrder == null)
return null;
if (m_currentJob == null)
{
var job = CreateJob(this.CurrentBuildOrder);
if (job == null)
{
trace.TraceWarning("XXX failed to create job, removing build order");
RemoveBuildOrder(this.CurrentBuildOrder);
return null;
}
m_currentJob = job;
trace.TraceInformation("new build job created");
}
foreach (var a in m_currentJob.GetAssignments(living))
{
if (a.LaborID == LaborID.None || living.GetLaborEnabled(a.LaborID))
return m_currentJob.FindAssignment(living);
}
return null;
}