DCS/ruiyiweiUX/Assets/Scripts/Services/AlarmService.cs

164 lines
5.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// using System;
// using System.Collections.Generic;
// public class AlarmService : IAlarmService
// {
// private readonly List<AlarmEvent> _records = new List<AlarmEvent>();
// private int _nextId = 1;
// public event Action<AlarmEvent> OnAlarmRaised;
// public bool IsMuted { get; private set; }
// public AlarmService()
// {
// // 延迟获取AudioService因为它可能还未初始化
// UnityEngine.MonoBehaviour.print("AlarmService: 初始化");
// }
// public void Mute(bool mute)
// {
// IsMuted = mute;
// // 通知音频服务静音状态变化
// NotifyAudioServiceMute(mute);
// }
// /// <summary>
// /// 通知音频服务静音状态
// /// </summary>
// private void NotifyAudioServiceMute(bool mute)
// {
// try
// {
// // 通过反射获取AudioService避免编译时依赖
// var audioServiceType = System.Type.GetType("AudioService");
// if (audioServiceType != null)
// {
// var instanceProperty = audioServiceType.GetProperty("Instance");
// if (instanceProperty != null)
// {
// var audioServiceInstance = instanceProperty.GetValue(null);
// if (audioServiceInstance != null)
// {
// var setMuteMethod = audioServiceType.GetMethod("SetMute", new System.Type[] { typeof(bool) });
// setMuteMethod?.Invoke(audioServiceInstance, new object[] { mute });
// UnityEngine.Debug.Log($"AlarmService: 同步静音状态到音频服务 - {mute}");
// }
// }
// }
// }
// catch (System.Exception ex)
// {
// UnityEngine.Debug.LogWarning($"AlarmService: 无法同步静音状态到音频服务 - {ex.Message}");
// }
// }
// public void RaiseAlarm(AlarmPriority priority, string reason)
// {
// var evt = new AlarmEvent
// {
// Id = _nextId++,
// Priority = priority,
// Reason = reason,
// Time = DateTime.Now
// };
// _records.Add(evt);
// // 检查静音状态:高优先级报警即使在静音状态下也要显示
// bool shouldShowAlarm = !IsMuted;
// if (shouldShowAlarm)
// {
// OnAlarmRaised?.Invoke(evt);
// if (IsMuted && priority == AlarmPriority.High)
// {
// UnityEngine.Debug.Log($"AlarmService: 高优先级报警覆盖静音状态 [{priority}] {reason}");
// }
// else
// {
// UnityEngine.Debug.Log($"AlarmService: 触发报警 [{priority}] {reason}");
// }
// }
// else
// {
// UnityEngine.Debug.Log($"AlarmService: 报警被静音阻止 [{priority}] {reason}");
// }
// }
// public IReadOnlyList<AlarmEvent> GetRecords(int maxCount = 100)
// {
// if (_records.Count <= maxCount) return _records;
// return _records.GetRange(_records.Count - maxCount, maxCount);
// }
// public void ClearRecords()
// {
// _records.Clear();
// UnityEngine.Debug.Log("AlarmService: 报警记录已清空");
// }
// public void Mute(bool mute, int durationInMinutes)
// {
// IsMuted = mute;
// // 同步到音频服务
// NotifyAudioServiceMute(mute, durationInMinutes);
// if (mute && durationInMinutes > 0)
// {
// // 启动一个定时器,在指定时间后取消静音
// System.Timers.Timer timer = new System.Timers.Timer(durationInMinutes * 60 * 1000);
// timer.AutoReset = false; // 只执行一次
// timer.Elapsed += (sender, e) =>
// {
// IsMuted = false;
// NotifyAudioServiceMute(false); // 通知音频服务恢复
// timer.Dispose();
// };
// timer.Start();
// }
// }
// /// <summary>
// /// 通知音频服务定时静音
// /// </summary>
// private void NotifyAudioServiceMute(bool mute, int durationInMinutes)
// {
// try
// {
// var audioServiceType = System.Type.GetType("AudioService");
// if (audioServiceType != null)
// {
// var instanceProperty = audioServiceType.GetProperty("Instance");
// if (instanceProperty != null)
// {
// var audioServiceInstance = instanceProperty.GetValue(null);
// if (audioServiceInstance != null)
// {
// var setMuteMethodWithDuration = audioServiceType.GetMethod("SetMute", new System.Type[] { typeof(bool), typeof(int) });
// if (setMuteMethodWithDuration != null)
// {
// setMuteMethodWithDuration.Invoke(audioServiceInstance, new object[] { mute, durationInMinutes });
// }
// else
// {
// // 回退到基本的SetMute方法
// var setMuteMethod = audioServiceType.GetMethod("SetMute", new System.Type[] { typeof(bool) });
// setMuteMethod?.Invoke(audioServiceInstance, new object[] { mute });
// }
// UnityEngine.Debug.Log($"AlarmService: 同步定时静音状态到音频服务 - {mute}, {durationInMinutes}分钟");
// }
// }
// }
// }
// catch (System.Exception ex)
// {
// UnityEngine.Debug.LogWarning($"AlarmService: 无法同步定时静音状态到音频服务 - {ex.Message}");
// }
// }
// }