learning_ai_clock/ios/ChronoMind/Shared/Haptics/HapticEngine.swift

56 lines
1.8 KiB
Swift

// Haptic Engine
// Urgency-mapped haptic feedback patterns
import UIKit
enum HapticEngine {
/// Haptic for pre-warning
static func warning(urgency: UrgencyLevel) {
switch urgency {
case .critical, .important:
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.warning)
case .standard:
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.impactOccurred()
case .gentle:
let generator = UIImpactFeedbackGenerator(style: .light)
generator.impactOccurred()
case .passive:
break // no haptic for passive
}
}
/// Haptic for timer fire
static func fire(urgency: UrgencyLevel) {
switch urgency {
case .critical:
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.error)
case .important:
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.warning)
case .standard:
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.success)
case .gentle:
let generator = UIImpactFeedbackGenerator(style: .light)
generator.impactOccurred()
case .passive:
break
}
}
/// Haptic for button tap
static func tap() {
let generator = UIImpactFeedbackGenerator(style: .light)
generator.impactOccurred()
}
/// Haptic for selection change
static func selection() {
let generator = UISelectionFeedbackGenerator()
generator.selectionChanged()
}
}