Files
maps-saas/packages/tactical_app/lib/controllers/overlays_controller.dart
T

67 lines
2.7 KiB
Dart

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<TacticalOverlayLayer> overlayLayers = <TacticalOverlayLayer>[
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();
}