// // GameState.swift // IceGlass // // Copyright 2026 Rouslan Zenetl. All Rights Reserved. // import Foundation enum GameState: String, Codable { case future = "FUT" // More than 30 minutes prior to game start case pre = "PRE" // Pre-game, <30 minutes until puck drops case live = "LIVE" // Game has started case crit = "CRIT" // Last 5 minutes of regulation, OT or SO case over = "OVER" // Soft final case final_ = "FINAL" // Hard final case official = "OFF" // Official var isLive: Bool { self == .live || self == .crit } var isOver: Bool { self == .over || self == .final_ || self == .official } var isFuture: Bool { self == .future || self == .pre } /// Short tag for display in menu rows. Empty for future games — the start /// time already implies that state. var shortTag: String { switch self { case .future: return "" case .pre: return "PRE" case .live: return "LIVE" case .crit: return "CRIT" case .over: return "OVER" case .final_: return "FINAL" case .official: return "OFF" } } var pollingInterval: PollingInterval { switch self { case .future: return .gameDay case .pre: return .preGame case .live, .crit: return .liveGame case .over, .final_: return .everyMinute case .official: return .idle } } }