bool TaskAutoPilot::do_advance(TaskAccessor& task) { if (task.is_ordered() && (awp==0)) { awp++; } awp++; if (has_finished(task)) return false; task.setActiveTaskPoint(awp); get_awp(task); return true; }
void TaskAutoPilot::advance_if_required(TaskAccessor& task) { bool manual_start = false; if (task.is_started() && (task.getActiveTaskPointIndex()==0)) { manual_start = true; awp++; } if (current_has_target(task) || manual_start) { if (task.getActiveTaskPointIndex() < awp) { // manual advance task.setActiveTaskPoint(awp); on_manual_advance(); get_awp(task); } } if (task.getActiveTaskPointIndex() > awp) { awp = task.getActiveTaskPointIndex(); get_awp(task); } }