import 'package:flutter/material.dart'; enum LandmarkType { minaret, tower, waterTank, fort, mountain, militaryBase, grainSilo, } class TacticalLandmark { final String id; final String name; final String region; final LandmarkType type; final double lat; final double lng; final int elevationM; final String description; const TacticalLandmark({ required this.id, required this.name, required this.region, required this.type, required this.lat, required this.lng, required this.elevationM, required this.description, }); IconData get typeIcon { switch (type) { case LandmarkType.minaret: return Icons.mosque; case LandmarkType.tower: return Icons.cell_tower; case LandmarkType.waterTank: return Icons.water_drop; case LandmarkType.fort: return Icons.castle; case LandmarkType.mountain: return Icons.terrain; case LandmarkType.militaryBase: return Icons.shield; case LandmarkType.grainSilo: return Icons.inventory_2; } } String get typeLabelArabic { switch (type) { case LandmarkType.minaret: return 'مئذنة / مسجد'; case LandmarkType.tower: return 'برج اتصالات / إرسال'; case LandmarkType.waterTank: return 'خزان مياه عالي'; case LandmarkType.fort: return 'قلعة / موقع أثري'; case LandmarkType.mountain: return 'قمة جبل / نقطة مثلثة'; case LandmarkType.militaryBase: return 'قاعدة / مطار عسكري'; case LandmarkType.grainSilo: return 'صوامع حبوب / منشأة عالية'; } } Map toMap() { return { 'id': id, 'name': name, 'region': region, 'type': type.name, 'lat': lat, 'lng': lng, 'elevationM': elevationM, 'description': description, }; } } class ResectionObservation { final TacticalLandmark landmark; final double observedAzimuthDeg; final double trueAzimuthDeg; final DateTime timestamp; ResectionObservation({ required this.landmark, required this.observedAzimuthDeg, required this.trueAzimuthDeg, DateTime? timestamp, }) : timestamp = timestamp ?? DateTime.now(); } class ResectionResult { final double lat; final double lng; final double estimatedAccuracyMeters; final List observations; final Map distanceToLandmarksKm; const ResectionResult({ required this.lat, required this.lng, required this.estimatedAccuracyMeters, required this.observations, required this.distanceToLandmarksKm, }); }