// // TankDefinition.swift // GasTankAR // // Created by Dennis Nemec on 14.09.26. // import Foundation /// Eine im Katalog (`Tanks.json`) hinterlegte Tank-Variante. Verbindet die /// Identität eines Tanks (Größe, Farbe, Aufstellungsart) mit dem Pfad zum /// 3D-Modell. Die Anzeigenamen werden separat gepflegt (siehe `TankCatalog`). nonisolated struct TankDefinition: Codable, Hashable, Identifiable { let size: TankSize let color: TankColor let placement: TankPlacement /// Pfad bzw. Dateiname des 3D-Modells im App-Bundle (z. B. `DG-2700_wh.usdz`). let modelPath: String /// Stabile Identität aus der Kombination der Auswahlmerkmale. var id: String { "\(size.rawValue)_\(color.rawValue)_\(placement.rawValue)" } /// Ressourcenname ohne Dateiendung, wie ihn RealityKit/SceneKit zum Laden /// aus dem Bundle erwarten (z. B. `DG-2700_wh`). var modelResourceName: String { (modelPath as NSString).deletingPathExtension } /// Dateiendung des Modells (z. B. `usdz`). var modelFileExtension: String { (modelPath as NSString).pathExtension } /// Entspricht diese Definition der getroffenen Tank-Auswahl? func matches(_ tank: Tank) -> Bool { size == tank.size && color == tank.color && placement == tank.placement } }