import '../../domain/waypoint/flat_waypoint_list.dart'; /// JSON-(De-)Serialisierung fuer [Waypoint] - gemeinsam genutzt von der /// Missions-Persistenz ([MissionRepository]) und dem Mission-Sharing /// ([MissionShareCodec]), damit das Datei-Feldformat an beiden Stellen /// garantiert identisch bleibt. Map waypointToJson(Waypoint w) => { 'lat': w.lat, 'lon': w.lon, 'altitudeM': w.altitudeM, 'speedMs': w.speedMs, 'catchRadiusM': w.catchRadiusM, 'action': w.action.name, 'jumpTargetIndex': w.jumpTargetIndex, 'jumpRepeatCount': w.jumpRepeatCount, 'windSpeedMs': w.windSpeedMs, 'windDirFromDeg': w.windDirFromDeg, 'windElevationM': w.windElevationM, }; Waypoint waypointFromJson(Map json) => Waypoint( lat: (json['lat'] as num).toDouble(), lon: (json['lon'] as num).toDouble(), altitudeM: (json['altitudeM'] as num).toDouble(), speedMs: (json['speedMs'] as num).toDouble(), catchRadiusM: (json['catchRadiusM'] as num).toDouble(), action: WaypointAction.values.firstWhere( (a) => a.name == json['action'], orElse: () => WaypointAction.none, ), jumpTargetIndex: json['jumpTargetIndex'] as int?, jumpRepeatCount: json['jumpRepeatCount'] as int?, windSpeedMs: (json['windSpeedMs'] as num?)?.toDouble(), windDirFromDeg: (json['windDirFromDeg'] as num?)?.toDouble(), windElevationM: (json['windElevationM'] as num?)?.toDouble(), );