using System; using System.Collections; using System.Collections.Generic; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; public class MainPanel : BasePanel { [Header("信息显示")] // public TextMeshProUGUI PatientInfoText; // public TextMeshProUGUI AlarmInfoText; // public TextMeshProUGUI BatteryText; public TextMeshProUGUI DateTimeText; public TextMeshProUGUI BFIValueText; public TextMeshProUGUI BFIValueLowThresholdText; public TextMeshProUGUI BFIValueHighThresholdText; public TextMeshProUGUI BloodFlowValueText; [Header("音频组件")] public AudioSource AlarmAudioSource; public AudioClip AlarmAudioClip; private float _audioVolume = 0.8f; [Header("图表组件")] public UIChartComponent BFIChart; // 使用UI兼容的图表组件 public UIChartComponent BloodFlowChart; [Header("按钮")] public Button HomeButton; public Button AlarmMuteButton; public Button SettingsButton; public Button ExportButton; private Button StartStopButton; public Button PatientInfoButton; public Button AlarmRecordButton; private TextMeshProUGUI StartStopLabel; public TextMeshProUGUI AlarmMuteLabel; // [Header("报警灯")] // public AlarmLightComponent AlarmLight; // [Header("电量显示")] // public Slider BatterySlider; [Header("时间更新")] public TimeUpdateComponent TimeUpdater; [Header("模型显示")] public GameObject BodyAndOrgans; // BodyAndOrgans模型对象 // [Header("闪烁设置")] public Color normalColor = new Color(0.3f, 0.8f, 1f, 1f); public float blinkInterval = 0.5f; // 500ms闪烁周期 private bool isBlinking = false; private Coroutine blinkCoroutine; private bool _isMuted = false; private DateTime _muteEndTime = DateTime.MinValue; private Coroutine _muteTimerCoroutine = null; private float _bfiLowThreshold = 0f; private float _bfiHighThreshold = 200f; // private IDataService _dataService; // private IPatientInfoService _patientInfoService; public override void Init() { // _dataService = ServiceLocator.Get(); // _patientInfoService = ServiceLocator.Get(); SetAutoBFIRecordingEnabled(true, "进入主界面"); InitializeUI(); InitializeCharts(); InitializeTimeUpdater(); InitializeAudioVolume(); InitializeCurrentSettings(); // 启动/停止按钮已取消,改为自动记录 // UpdateStartStopButton(); // 初始化串口通信 InitializeDCSSerial(); // 初始化BodyAndOrgans控制器 InitializeBodyAndOrgansController(); // 订阅DCSAlarmManager的报警事件 DCSAlarmManager.OnAlarmRaised += OnDCSAlarmRaised; // DCSAlarmManager.OnAlarmCleared += OnAllAlarmsCleared; // DCSAlarmManager.OnMuteStateChanged += UpdateMuteButtonText; // _patientInfoService.OnPatientInfoChanged += LoadPatientInfo; BFIThresholdDialog.OnThresholdChanged += ApplyBFIThresholdChanges; Debug.Log("MainPanel: 已订阅DCSAlarmManager.OnAlarmRaised事件"); } private void InitializeUI() { if (HomeButton != null) { HomeButton.onClick.AddListener(() => { ConfirmDialog.Show( "退出确认", "确定要返回登录界面吗?", () => { SetAutoBFIRecordingEnabled(false, "返回登录界面"); ClearCurrentPatientInfo(); ClosePanel(); UIManager.Instance.ShowPanel(); }, () => Debug.Log("MainPanel: 取消退出"), "确认", "取消", true, true); }); } if (AlarmMuteButton != null) { AlarmMuteButton.onClick.AddListener(() => { ToggleMuteState(); }); } if (SettingsButton != null) { SettingsButton.onClick.AddListener(() => { UIManager.Instance.ShowPanel(); }); } if (ExportButton != null) { ExportButton.onClick.AddListener(() => { Debug.Log("MainPanel: 打开BFI历史记录导出界面"); UIManager.Instance.ShowPanel(); }); } // 启动/停止按钮已取消,改为自动记录 // if (StartStopButton != null) // { // StartStopButton.onClick.AddListener(OnStartStopClicked); // } // 隐藏启动/停止按钮 if (StartStopButton != null) { StartStopButton.gameObject.SetActive(false); } if (PatientInfoButton != null) { PatientInfoButton.onClick.AddListener(() => { UIManager.Instance.ShowPanel(); }); } if (AlarmRecordButton != null) { AlarmRecordButton.onClick.AddListener(() => { UIManager.Instance.ShowPanel(); }); } // 为BFI文本添加点击事件 if (BFIValueText != null) { // 添加Button组件(如果不存在) var button = BFIValueText.GetComponent