import 'dart:convert'; import '../../domain/mission/terrain_math.dart'; /// JSON-(De-)Serialisierung fuer [TerrainProfile] - gemeinsam genutzt von /// der Missions-Persistenz ([MissionRepository]) und dem Mission-Sharing /// ([MissionShareCodec]), analog waypoint_json_codec.dart. Map terrainProfileToJson(TerrainProfile profile) => { 'routeKey': profile.routeKey, 'points': [ for (final p in profile.points) {'distanceM': p.distanceM, 'elevationRelM': p.elevationRelM}, ], }; TerrainProfile terrainProfileFromJson(Map json) => TerrainProfile( routeKey: json['routeKey'] as String, points: [ for (final entry in json['points'] as List) TerrainSamplePoint( distanceM: (entry['distanceM'] as num).toDouble(), elevationRelM: (entry['elevationRelM'] as num?)?.toDouble(), ), ], ); String encodeTerrainProfile(TerrainProfile profile) => jsonEncode(terrainProfileToJson(profile)); TerrainProfile decodeTerrainProfile(String json) => terrainProfileFromJson(jsonDecode(json) as Map);