Initial commit for first version of project

This commit is contained in:
Dennis Nemec
2026-09-02 20:54:36 +02:00
parent 3d9f1ab6bc
commit 992bb32025
56 changed files with 5139 additions and 31 deletions

View 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)"
}
}