Atlas: Deploy-Buendel vor Staustufen-Sprint

- Logistik: Musik-Player Playlist-Modus (5 Gruppen, 20 Tracks)
- Heli: End-Screen auf .ggs-endscreen, Mission-Bilder, Voice-Lines, Briefing-Audio
- Logistik: Layout-Tausch Auftraege+Fahrzeuge links, Karte rechts
- Logistik: Tier-1-Staedte ausgebaut, Auto-Timescale-Badge
- Logistik: Roadnet/Railnet Dijkstra-Routing, Balance-Updates
- Atlas: 5 Atlas-Inbox-Nachrichten (Cards-Pattern, DALL-E-Key, Musik-Playlists)
- Status-Updates Heli + Logistik

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-26 01:05:13 +02:00
parent f811437a35
commit 79ac9dad84
773 changed files with 17482 additions and 541 deletions
+39
View File
@@ -0,0 +1,39 @@
#!/usr/bin/env node
// Testet calculateRoute-Ergebnis fuer Innsbruck->Mailand und Salzburg->Innsbruck.
// Laedt Engine, Seeds aus lg-roadnet.json + lg-locations.json und simuliert.
const fs = require('fs');
const path = require('path');
// UMD-Engine laden
const engineSrc = fs.readFileSync(path.join(__dirname, '..', 'engine.js'), 'utf-8');
const ctx = { window: {}, module: { exports: {} } };
ctx.exports = ctx.module.exports;
new Function('module','exports','window','self', engineSrc)(ctx.module, ctx.exports, ctx.window, ctx.window);
const L = ctx.module.exports.LogistikEngine || ctx.window.LogistikEngine || ctx.module.exports;
const locations = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', '..', 'assets', 'data', 'lg-locations.json')));
const roadnet = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', '..', 'assets', 'data', 'lg-roadnet.json')));
const railnet = { nodes: [], edges: [] };
const game = L.createGame(1);
game.worldState = game.worldState || {};
game.worldState.locations = locations;
game.worldState.roadnet = roadnet;
game.worldState.railnet = railnet;
game.worldState.routesOsm = [];
const TESTS = [
['innsbruck', 'mailand'],
['mailand', 'innsbruck'],
['salzburg', 'innsbruck'],
['innsbruck', 'salzburg'],
['wien', 'innsbruck'],
];
for (const [o, t] of TESTS) {
const r = L.calculateRoute(game, o, t, 'TRUCK_SMALL');
const geom = r.geometry || [];
const segs = (r.segments || []).map(s => `${s.startLat.toFixed(2)},${s.startLon.toFixed(2)}${s.endLat.toFixed(2)},${s.endLon.toFixed(2)}`).join(' · ');
console.log(`${o}${t}: provider=${r.provider} dist=${r.totalDistanceKm.toFixed(0)}km geom=${geom.length} pts, start=[${geom[0] && geom[0].map(n => n.toFixed(2)).join(',')}] end=[${geom[geom.length-1] && geom[geom.length-1].map(n => n.toFixed(2)).join(',')}]`);
console.log(` Segmente: ${segs}`);
}