OrderedTaskPoint* AbstractTaskFactory::createMutatedPoint(const OrderedTaskPoint &tp, const LegalPointType_t newtype) const { fixed ozsize = GetOZSize(tp.get_oz()); return createPoint(newtype, tp.GetWaypoint(), ozsize, ozsize, ozsize); }
OrderedTaskPoint* AbstractTaskFactory::CreateMutatedPoint(const OrderedTaskPoint &tp, const TaskPointFactoryType newtype) const { auto ozsize = GetOZSize(tp.GetObservationZone()); return CreatePoint(newtype, tp.GetWaypoint(), ozsize, ozsize, ozsize); }
bool AbstractTaskFactory::validateFAIOZs() { clearValidationErrors(); bool valid = true; for (unsigned i = 0; i < m_task.TaskSize() && valid; i++) { const OrderedTaskPoint *tp = m_task.get_tp(i); const fixed ozsize = GetOZSize(tp->get_oz()); switch (getType(*tp)) { case START_BGA: case START_CYLINDER: valid = false; break; case START_SECTOR: if (ozsize > fixed(1000.01)) valid = false; break; case START_LINE: if (ozsize > fixed(2000.01)) valid = false; break; case FAI_SECTOR: break; case AST_CYLINDER: if (ozsize > fixed(500.01)) valid = false; break; case KEYHOLE_SECTOR: case BGAFIXEDCOURSE_SECTOR: case BGAENHANCEDOPTION_SECTOR: case AAT_CYLINDER: case AAT_SEGMENT: case AAT_ANNULAR_SECTOR: valid = false; break; case FINISH_SECTOR: break; case FINISH_LINE: if (ozsize > fixed(2000.01)) valid = false; break; case FINISH_CYLINDER: valid = false; break; } } if (!valid) addValidationError(NON_FAI_OZS); return valid; }
bool AbstractTaskFactory::ValidateFAIOZs() { ClearValidationErrors(); bool valid = true; for (unsigned i = 0; i < task.TaskSize() && valid; i++) { const auto &tp = task.GetPoint(i); const auto ozsize = GetOZSize(tp.GetObservationZone()); switch (GetType(tp)) { case TaskPointFactoryType::START_BGA: case TaskPointFactoryType::START_CYLINDER: valid = false; break; case TaskPointFactoryType::START_SECTOR: if (ozsize > fixed(1000.01)) valid = false; break; case TaskPointFactoryType::START_LINE: if (ozsize > fixed(2000.01)) valid = false; break; case TaskPointFactoryType::FAI_SECTOR: break; case TaskPointFactoryType::AST_CYLINDER: if (ozsize > fixed(500.01)) valid = false; break; case TaskPointFactoryType::KEYHOLE_SECTOR: case TaskPointFactoryType::BGAFIXEDCOURSE_SECTOR: case TaskPointFactoryType::BGAENHANCEDOPTION_SECTOR: case TaskPointFactoryType::MAT_CYLINDER: case TaskPointFactoryType::AAT_CYLINDER: case TaskPointFactoryType::AAT_SEGMENT: case TaskPointFactoryType::AAT_ANNULAR_SECTOR: case TaskPointFactoryType::AAT_KEYHOLE: case TaskPointFactoryType::SYMMETRIC_QUADRANT: valid = false; break; case TaskPointFactoryType::FINISH_SECTOR: break; case TaskPointFactoryType::FINISH_LINE: if (ozsize > fixed(2000.01)) valid = false; break; case TaskPointFactoryType::FINISH_CYLINDER: valid = false; break; case TaskPointFactoryType::COUNT: gcc_unreachable(); } } if (!valid) AddValidationError(TaskValidationErrorType::NON_FAI_OZS); return valid; }