package com.siro.siro_driver

import android.os.Handler
import android.os.Looper

/**
 * كائن مشترك (Singleton) يحمل بيانات التوجيه في الوقت الحقيقي.
 * يتم تحديثه من فلاتر عبر MethodChannel في MainActivity،
 * ويتم قراءته من MyCarScreen و MapPresentation لعرض البيانات على شاشة السيارة.
 */
object CarNavigationData {
    // --- بيانات الموقع ---
    var currentLat: Double = 0.0
    var currentLng: Double = 0.0
    var currentBearing: Double = 0.0

    // --- بيانات التوجيه ---
    var currentInstruction: String = "في انتظار بدء الرحلة..."
    var distanceToNextStepMeters: Double = 0.0
    var totalDistanceRemainingMeters: Double = 0.0
    var estimatedTimeRemainingSeconds: Double = 0.0
    var maneuverType: Int = 0  // يطابق قيم Maneuver.TYPE_* من Car App Library

    // --- حالة التوجيه ---
    var isNavigating: Boolean = false
    var currentSpeed: Double = 0.0  // km/h

    // --- نظام المستمعين ---
    private val listeners = mutableListOf<() -> Unit>()

    fun addListener(listener: () -> Unit) {
        listeners.add(listener)
    }

    fun removeListener(listener: () -> Unit) {
        listeners.remove(listener)
    }

    fun notifyListeners() {
        Handler(Looper.getMainLooper()).post {
            listeners.forEach { it.invoke() }
        }
    }
}
