// // Tank.swift // GasTankAR // // Created by Dennis Nemec on 25.08.26. // import Foundation /// Verfügbare Tankgrößen laut Projektplan Phase 4 (Modell + korrekter Maßstab). enum TankSize: String, CaseIterable, Identifiable, Codable, Hashable { case t1_2 case t2_1 case t2_9 var id: String { rawValue } var displayName: String { switch self { case .t1_2: "1,2 t" case .t2_1: "2,1 t" case .t2_9: "2,9 t" } } } /// Verfügbare Tankfarben (Farbvariante mit Logo). enum TankColor: String, CaseIterable, Identifiable, Codable, Hashable { case white case green var id: String { rawValue } var displayName: String { switch self { case .white: "Weiß" case .green: "Grün" } } } /// Aufstellungsart des Tanks. enum TankPlacement: String, CaseIterable, Identifiable, Codable, Hashable { case aboveGround case belowGround var id: String { rawValue } var displayName: String { switch self { case .aboveGround: "Oberirdisch" case .belowGround: "Unterirdisch" } } /// Name des Asset-Icons für diese Aufstellungsart. var imageName: String { switch self { case .aboveGround: "tank-upper" case .belowGround: "tank-lower" } } } /// Ein für ein Projekt ausgewählter Tank. Kombiniert die in Phase 4 des /// Projektplans vorgesehenen Auswahlmöglichkeiten: Größe, Farbe und /// Aufstellungsart sowie die optionale halbtransparente Darstellung. struct Tank: Hashable, Codable { var size: TankSize = .t1_2 var color: TankColor = .white var placement: TankPlacement = .aboveGround /// Optionale Darstellung, bei der nur der Deckel sichtbar ist. var showLidOnly: Bool = false /// Kurzbeschreibung für Listen und Detailanzeigen. var displayName: String { "\(size.displayName) · \(color.displayName) · \(placement.displayName)" } }