void RemoveBuildOrder(BuildOrder buildOrder)
{
if (this.CurrentBuildOrder != buildOrder)
{
buildOrder.PropertyChanged -= OnBuildOrderPropertyChanged;
var ok = m_buildOrderQueue.Remove(buildOrder);
Debug.Assert(ok);
}
else
{
StopCurrentJob();
buildOrder.IsUnderWork = false;
var next = FindNextBuildOrder(buildOrder);
if (next == buildOrder)
next = null;
buildOrder.PropertyChanged -= OnBuildOrderPropertyChanged;
m_buildOrderQueue.Remove(buildOrder);
this.CurrentBuildOrder = next;
if (next != null)
next.IsUnderWork = true;
}
}