extends RefCounted ## Stammdaten für Loks, Waggons und Ausbauten. enum Kind { LOCO, PASSENGER, FREIGHT, DINING } ## Loks. "rep" = benoetigtes Ansehen zum Freischalten. const LOCOS := { "steam": { "name": "Dampf-Veteran", "price": 0, "sell": 0, "rep": 0, "length": 11.0, "max_speed": 15.0, "accel": 3.0, "brake": 8.0, "color": "a83b30", "trim": "7d2a22", "desc": "Gemütlich, laut, zuverlässig.", }, "diesel": { "name": "Diesel-Kurier", "price": 3200, "sell": 1900, "rep": 12, "length": 12.0, "max_speed": 24.0, "accel": 4.6, "brake": 10.0, "color": "2f6f4e", "trim": "24523b", "desc": "Schneller anfahren, höhere Endgeschwindigkeit.", }, "express": { "name": "Elektro-Express", "price": 11000, "sell": 6600, "rep": 40, "length": 13.0, "max_speed": 34.0, "accel": 6.8, "brake": 13.5, "color": "2c4f8a", "trim": "1e3a68", "desc": "Der Fernverkehr lässt grüßen.", }, } ## Waggons. const CARS := { "coach": { "name": "Personenwagen", "kind": Kind.PASSENGER, "price": 900, "sell": 540, "rep": 0, "length": 12.0, "seats": 8, "capacity": 0, "color": "c8ccd2", "trim": "8f959c", "desc": "Acht Sitzplätze, schlichte Ausstattung.", }, "saloon": { "name": "Salonwagen", "kind": Kind.PASSENGER, "price": 2600, "sell": 1560, "rep": 18, "length": 13.0, "seats": 10, "capacity": 0, "color": "e8dcc0", "trim": "b09a6d", "desc": "Zehn Plätze. Gäste zahlen 50 % mehr.", "fare_bonus": 0.5, }, "freight": { "name": "Güterwagen", "kind": Kind.FREIGHT, "price": 700, "sell": 420, "rep": 0, "length": 11.0, "seats": 0, "capacity": 10, "color": "8a5c3c", "trim": "6b4630", "desc": "Zehn Einheiten Ladung.", }, "hopper": { "name": "Großgüterwagen", "kind": Kind.FREIGHT, "price": 2100, "sell": 1260, "rep": 14, "length": 13.0, "seats": 0, "capacity": 22, "color": "6b7a52", "trim": "4f5c3c", "desc": "22 Einheiten Ladung.", }, "dining": { "name": "Speisewagen", "kind": Kind.DINING, "price": 1900, "sell": 1140, "rep": 8, "length": 12.0, "seats": 4, "capacity": 0, "color": "b8874a", "trim": "8d6435", "desc": "Hier gibt es Getränke für die Gäste.", }, } ## Dauerhafte Ausbauten, einmal kaufbar. const UPGRADES := { "loader": { "name": "Schnelllader", "price": 1400, "rep": 6, "desc": "Be- und Entladen läuft doppelt so schnell.", }, "scanner": { "name": "Ticket-Scanner", "price": 1100, "rep": 10, "desc": "Ticketkontrolle in einem Rutsch statt Gast für Gast.", }, "trolley": { "name": "Servierwagen", "price": 1800, "rep": 20, "desc": "Trägt drei Getränke statt einem.", }, "schedule": { "name": "Fahrplan-Tafel", "price": 900, "rep": 4, "desc": "Zeigt Ziel und Wunsch jedes Gastes im HUD.", }, } static func loco(id: String) -> Dictionary: return LOCOS[id] static func car(id: String) -> Dictionary: return CARS[id] static func car_length(id: String) -> float: if LOCOS.has(id): return float(LOCOS[id]["length"]) return float(CARS[id]["length"]) static func kind_of(id: String) -> int: if LOCOS.has(id): return Kind.LOCO return int(CARS[id]["kind"]) static func display_name(id: String) -> String: if LOCOS.has(id): return String(LOCOS[id]["name"]) return String(CARS[id]["name"])