import 'package:intaleq_maps/intaleq_maps.dart'; enum UnitRole { commander, infantry, vehicle, medic } class FriendlyUnit { final String deviceId; final String callsign; final LatLng position; final double heading; final UnitRole role; final DateTime lastSeen; FriendlyUnit({ required this.deviceId, required this.callsign, required this.position, required this.heading, required this.role, required this.lastSeen, }); Map toJson() => { 'deviceId': deviceId, 'callsign': callsign, 'lat': position.latitude, 'lng': position.longitude, 'heading': heading, 'role': role.name, 'timestamp': lastSeen.millisecondsSinceEpoch, }; factory FriendlyUnit.fromJson(Map json) { return FriendlyUnit( deviceId: json['deviceId'], callsign: json['callsign'], position: LatLng(json['lat'], json['lng']), heading: (json['heading'] as num).toDouble(), role: UnitRole.values.firstWhere( (e) => e.name == json['role'], orElse: () => UnitRole.infantry, ), lastSeen: DateTime.fromMillisecondsSinceEpoch(json['timestamp']), ); } }