import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../models/military_operations_models.dart'; /// ============================================================================ /// [OverlaysController] - وحدة التحكم بمنظومة الشفافات العسكرية التكتيكية (IPB) /// ============================================================================ /// English: /// GetX Controller managing Intelligence Preparation of Battlefield (IPB) /// transparent overlays, FEBA lines, mobility corridors, and No-Fire Areas. /// /// العربية: /// متحكم GetX لإدارة منظومة الشفافات العسكرية التكتيكية (IPB)، /// والخطوط الأمامية لمنطقة القتال (FEBA)، وممرات الحركة، ومناطق حظر الرماية. /// ============================================================================ class OverlaysController extends GetxController { // ── Observables / الحالات التفاعلية ────────────────────────────────────── final RxList overlayLayers = [ TacticalOverlayLayer( id: 'layer_feba', nameAr: 'الخط الأمامي لمنطقة القتال (FEBA / FLOT)', color: const Color(0xFF0071E3), isVisible: false, lines: [], ), TacticalOverlayLayer( id: 'layer_mobility', nameAr: 'ممرات الحركة ومحاور التقدم (Mobility Corridors)', color: const Color(0xFF10B981), isVisible: false, lines: [], ), TacticalOverlayLayer( id: 'layer_no_fire', nameAr: 'مناطق الحظر وعدم الرماية (No-Fire Areas - NFA)', color: const Color(0xFFEF4444), isVisible: false, polygons: [], ), ].obs; /// Toggle Overlay Layer Visibility / تبديل إظهار أو إخفاء طبقة معينة void toggleLayer(String layerId, bool isVisible) { final idx = overlayLayers.indexWhere((l) => l.id == layerId); if (idx != -1) { overlayLayers[idx] = overlayLayers[idx].copyWith(isVisible: isVisible); } } /// Show All Overlay Layers / إظهار كافة الشفافات void showAll() { for (int i = 0; i < overlayLayers.length; i++) { overlayLayers[i] = overlayLayers[i].copyWith(isVisible: true); } } /// Hide All Overlay Layers / إخفاء كافة الشفافات void hideAll() { for (int i = 0; i < overlayLayers.length; i++) { overlayLayers[i] = overlayLayers[i].copyWith(isVisible: false); } } /// Reset / إعادة تعيين void reset() => hideAll(); }