52 lines
2.3 KiB
Python
52 lines
2.3 KiB
Python
import re
|
|
|
|
path = "packages/tactical_app/lib/controllers/tactical_map_controller.dart"
|
|
with open(path, "r") as f: content = f.read()
|
|
|
|
imports = """
|
|
import '../models/friendly_unit.dart';
|
|
import '../services/local_network_tracker.dart';
|
|
"""
|
|
if "LocalNetworkTrackerService" not in content:
|
|
content = content.replace("import '../services/offline_los_engine.dart';", "import '../services/offline_los_engine.dart';\n" + imports)
|
|
|
|
# Find the line: final NavigationController navigation = Get.find<NavigationController>();
|
|
service_init = " final LocalNetworkTrackerService tracker = Get.find<LocalNetworkTrackerService>();\n"
|
|
if "final LocalNetworkTrackerService tracker" not in content:
|
|
content = content.replace(" final NavigationController navigation = Get.find<NavigationController>();", " final NavigationController navigation = Get.find<NavigationController>();\n" + service_init)
|
|
|
|
# Inside initGps, update tracker with my position
|
|
update_tracker = """ currentCameraCenter.value = currentGpsPosition.value!;
|
|
|
|
// Feed live GPS to Blue Force Tracker
|
|
tracker.updateMyPosition(currentGpsPosition.value!, pos.heading);
|
|
"""
|
|
content = content.replace(" currentCameraCenter.value = currentGpsPosition.value!;", update_tracker)
|
|
|
|
# Also update tracker in onCameraMove or GPS listener if we had one.
|
|
# Wait, we only get GPS once in initGps!
|
|
# We should probably listen to a continuous GPS stream if we want real-time tracking, but for now we update it.
|
|
|
|
# Finally, in buildMarkers, we add the friendly units!
|
|
marker_logic = """
|
|
// --- Blue Force Tracking (Friendly Units) ---
|
|
for (final unit in tracker.friendlyUnits.values) {
|
|
markers.add(
|
|
Marker(
|
|
markerId: MarkerId('bft_${unit.deviceId}'),
|
|
position: unit.position,
|
|
icon: InlqBitmap.defaultMarkerWithHue(InlqBitmap.hueAzure), // Blue for friendly
|
|
infoWindow: InfoWindow(
|
|
title: '${unit.callsign} (${unit.role.name})',
|
|
snippet: 'آخر ظهور: منذ ${DateTime.now().difference(unit.lastSeen).inSeconds} ثوانٍ',
|
|
),
|
|
),
|
|
);
|
|
}
|
|
"""
|
|
|
|
if "Blue Force Tracking" not in content:
|
|
content = content.replace(" return markers;", marker_logic + "\n return markers;")
|
|
|
|
with open(path, "w") as f: f.write(content)
|