Initial commit for first version of project
This commit is contained in:
80
GasTankAR/Model/Tank.swift
Normal file
80
GasTankAR/Model/Tank.swift
Normal file
@ -0,0 +1,80 @@
|
||||
//
|
||||
// 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)"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user