//--------------------------------------------------------------------- /// <summary> /// Schedules the next harvest for a stand that's been set aside /// (reserved). /// </summary> protected void ScheduleNextHarvest(Stand stand) { int nextTimeToHarvest = Model.Core.CurrentTime + repeatHarvest.Interval; if (nextTimeToHarvest <= Model.Core.EndTime && stand.RepeatNumber < this.repeatHarvest.TimesToRepeat) { reservedStands.Enqueue(new ReservedStand(stand, nextTimeToHarvest)); } else { if (stand.RepeatNumber >= this.repeatHarvest.TimesToRepeat) { stand.SetAsideUntil(Model.Core.CurrentTime); } stand.ResetRepeatNumber(); } }
//--------------------------------------------------------------------- /// <summary> /// Sets a stand aside for multiple additional harvests. /// </summary> public void SetAsideForMultipleHarvests(Stand stand) { stand.SetAsideUntil(EndTime); }
//--------------------------------------------------------------------- /// <summary> /// Sets a stand aside for a single additional harvest. /// </summary> public void SetAsideForSingleHarvest(Stand stand) { stand.SetAsideUntil(Math.Min(Model.Core.CurrentTime + repeatHarvest.Interval, EndTime)); }