Skip to content

Commit 0beebbc

Browse files
committed
Fix trade map placement and route labels
1 parent 1cb4930 commit 0beebbc

4 files changed

Lines changed: 46 additions & 35 deletions

File tree

site/admin/index.html

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
})();
1919
</script>
2020
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='10' fill='%2314171a'/%3E%3Cpath d='M8 8h32L8 40z' fill='%23f0c33b'/%3E%3Cpath d='M56 56H24l32-32z' fill='%230d65d9'/%3E%3C/svg%3E">
21-
<link rel="stylesheet" href="../styles.css?v=20260604-sync-perf">
21+
<link rel="stylesheet" href="../styles.css?v=20260604-map-route-fix">
2222
</head>
2323
<body data-app-mode="admin">
2424
<header class="topbar">
@@ -58,19 +58,19 @@ <h1>Global Ledger</h1>
5858
<span id="sourceNote"></span>
5959
</footer>
6060

61-
<script src="../data.js?v=20260604-sync-perf"></script>
62-
<script src="../js/engine/fiscal.js?v=20260604-sync-perf"></script>
63-
<script src="../js/engine/trade.js?v=20260604-sync-perf"></script>
64-
<script src="../engine.js?v=20260604-sync-perf"></script>
65-
<script src="../js/app/config.js?v=20260604-sync-perf"></script>
66-
<script src="../js/app/format.js?v=20260604-sync-perf"></script>
67-
<script src="../js/app/recordsParser.js?v=20260604-sync-perf"></script>
68-
<script src="../js/app/records.js?v=20260604-sync-perf"></script>
69-
<script src="../js/app/tradeMapShapes.js?v=20260604-sync-perf"></script>
70-
<script src="../js/app/tradeZones.js?v=20260604-sync-perf"></script>
71-
<script src="../js/app/tradeRouteMesh.js?v=20260604-sync-perf"></script>
72-
<script src="../js/app/tradeLaneSkeleton.js?v=20260604-sync-perf"></script>
73-
<script src="../js/app/tradeMap.js?v=20260604-sync-perf"></script>
74-
<script src="../app.js?v=20260604-sync-perf"></script>
61+
<script src="../data.js?v=20260604-map-route-fix"></script>
62+
<script src="../js/engine/fiscal.js?v=20260604-map-route-fix"></script>
63+
<script src="../js/engine/trade.js?v=20260604-map-route-fix"></script>
64+
<script src="../engine.js?v=20260604-map-route-fix"></script>
65+
<script src="../js/app/config.js?v=20260604-map-route-fix"></script>
66+
<script src="../js/app/format.js?v=20260604-map-route-fix"></script>
67+
<script src="../js/app/recordsParser.js?v=20260604-map-route-fix"></script>
68+
<script src="../js/app/records.js?v=20260604-map-route-fix"></script>
69+
<script src="../js/app/tradeMapShapes.js?v=20260604-map-route-fix"></script>
70+
<script src="../js/app/tradeZones.js?v=20260604-map-route-fix"></script>
71+
<script src="../js/app/tradeRouteMesh.js?v=20260604-map-route-fix"></script>
72+
<script src="../js/app/tradeLaneSkeleton.js?v=20260604-map-route-fix"></script>
73+
<script src="../js/app/tradeMap.js?v=20260604-map-route-fix"></script>
74+
<script src="../app.js?v=20260604-map-route-fix"></script>
7575
</body>
7676
</html>

site/index.html

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
})();
2929
</script>
3030
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='10' fill='%2314171a'/%3E%3Cpath d='M8 8h32L8 40z' fill='%23f0c33b'/%3E%3Cpath d='M56 56H24l32-32z' fill='%230d65d9'/%3E%3C/svg%3E">
31-
<link rel="stylesheet" href="styles.css?v=20260604-sync-perf">
31+
<link rel="stylesheet" href="styles.css?v=20260604-map-route-fix">
3232
</head>
3333
<body data-app-mode="public">
3434
<header class="topbar">
@@ -70,19 +70,19 @@ <h1>Global Ledger</h1>
7070
</span>
7171
</footer>
7272

73-
<script src="data.js?v=20260604-sync-perf"></script>
74-
<script src="js/engine/fiscal.js?v=20260604-sync-perf"></script>
75-
<script src="js/engine/trade.js?v=20260604-sync-perf"></script>
76-
<script src="engine.js?v=20260604-sync-perf"></script>
77-
<script src="js/app/config.js?v=20260604-sync-perf"></script>
78-
<script src="js/app/format.js?v=20260604-sync-perf"></script>
79-
<script src="js/app/recordsParser.js?v=20260604-sync-perf"></script>
80-
<script src="js/app/records.js?v=20260604-sync-perf"></script>
81-
<script src="js/app/tradeMapShapes.js?v=20260604-sync-perf"></script>
82-
<script src="js/app/tradeZones.js?v=20260604-sync-perf"></script>
83-
<script src="js/app/tradeRouteMesh.js?v=20260604-sync-perf"></script>
84-
<script src="js/app/tradeLaneSkeleton.js?v=20260604-sync-perf"></script>
85-
<script src="js/app/tradeMap.js?v=20260604-sync-perf"></script>
86-
<script src="app.js?v=20260604-sync-perf"></script>
73+
<script src="data.js?v=20260604-map-route-fix"></script>
74+
<script src="js/engine/fiscal.js?v=20260604-map-route-fix"></script>
75+
<script src="js/engine/trade.js?v=20260604-map-route-fix"></script>
76+
<script src="engine.js?v=20260604-map-route-fix"></script>
77+
<script src="js/app/config.js?v=20260604-map-route-fix"></script>
78+
<script src="js/app/format.js?v=20260604-map-route-fix"></script>
79+
<script src="js/app/recordsParser.js?v=20260604-map-route-fix"></script>
80+
<script src="js/app/records.js?v=20260604-map-route-fix"></script>
81+
<script src="js/app/tradeMapShapes.js?v=20260604-map-route-fix"></script>
82+
<script src="js/app/tradeZones.js?v=20260604-map-route-fix"></script>
83+
<script src="js/app/tradeRouteMesh.js?v=20260604-map-route-fix"></script>
84+
<script src="js/app/tradeLaneSkeleton.js?v=20260604-map-route-fix"></script>
85+
<script src="js/app/tradeMap.js?v=20260604-map-route-fix"></script>
86+
<script src="app.js?v=20260604-map-route-fix"></script>
8787
</body>
8888
</html>

site/js/app/tradeMap.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
const KHALINDAR_CALIBRATION_AREA_SQ_MI = 7_260_000;
77

88
const SEED_GEOGRAPHY = {
9-
solara: { x: 8, y: 88, region: "southwest_ocean", coastal: true, portStrength: 9, routeAccess: ["deep_ocean", "ocean"] },
10-
empire_of_khalindar: { x: 20, y: 84, region: "southwest", coastal: true, portStrength: 7, routeAccess: ["ocean"] },
9+
solara: { x: 8, y: 88, region: "southwest_ocean", coastal: true, portStrength: 9, routeAccess: ["deep_ocean", "ocean"], landRouteExclusions: ["empire_of_khalindar"] },
10+
empire_of_khalindar: { x: 20, y: 84, region: "southwest", coastal: true, portStrength: 7, routeAccess: ["ocean"], landRouteExclusions: ["solara"] },
1111
people_s_federation_of_xanaqu: { x: 39, y: 75, region: "south_central", coastal: true, portStrength: 8, routeAccess: ["ocean"] },
1212
imperial_dynasty_of_saochai: { x: 34, y: 54, region: "central_west", coastal: false, landlocked: true, portStrength: 0, routeAccess: ["land"] },
1313
okudan_empire: { x: 28, y: 28, region: "northwest", coastal: true, portStrength: 5, routeAccess: ["ocean", "land"] },
@@ -76,7 +76,7 @@
7676
baathist_republic_of_volgastan: { x: 84.4, y: 39.2, pathX: 84.4, pathY: 39.2, width: 13.4, height: 8.4, useRoundedBox: true },
7777
baechong_democratic_republic: { sourceId: "svg_path_62" },
7878
benera_navine: { sourceId: "svg_path_88" },
79-
bingtau_kingdom: { sourceId: "svg_path_158", width: 2.6, height: 2.2, useRoundedBox: true },
79+
bingtau_kingdom: { x: 56.8, y: 25.9, pathX: 56.8, pathY: 25.9, width: 2.6, height: 2.2, useRoundedBox: true },
8080
butonian_state: { sourceId: "svg_path_43" },
8181
crovian_national_union: { sourceId: "svg_path_46" },
8282
democratic_republic_of_suzuharu: { sourceId: "svg_path_28" },

site/js/engine/trade.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,7 @@
473473
capital: raw.capital || null,
474474
primaryPort: raw.primaryPort || null,
475475
neighborIds: Array.isArray(raw.neighborIds) ? raw.neighborIds : [],
476+
landRouteExclusions: Array.isArray(raw.landRouteExclusions) ? raw.landRouteExclusions.map((id) => String(id || "")).filter(Boolean) : [],
476477
borderDistances,
477478
borderCandidates: Array.isArray(raw.borderCandidates) ? raw.borderCandidates : [],
478479
mapPosition: raw.mapPosition || null,
@@ -559,6 +560,15 @@
559560
return Boolean(left?.region && right?.region && left.region !== "global" && right.region !== "global" && left.region === right.region);
560561
}
561562

563+
function landRouteExcluded(left, right) {
564+
return (left?.landRouteExclusions || []).includes(right?.id) || (right?.landRouteExclusions || []).includes(left?.id);
565+
}
566+
567+
function regionalRouteMode(importerGeo, exporterGeo, directBorderUnits) {
568+
if (directBorderUnits !== null && directBorderUnits <= 3.5) return "land";
569+
return landRouteExcluded(importerGeo, exporterGeo) ? "maritime" : "land";
570+
}
571+
562572
function transitModeFor(transitPolicies, blockerId, targetId) {
563573
return normalizeTransitMode(transitPolicies?.[blockerId]?.[targetId]);
564574
}
@@ -999,7 +1009,8 @@
9991009
geo.landlocked === true ? "landlocked" : "",
10001010
roundPercent(number(geo.portStrength, 0)),
10011011
(geo.routeAccess || []).slice().sort().join(","),
1002-
(geo.neighborIds || []).slice().sort().join(",")
1012+
(geo.neighborIds || []).slice().sort().join(","),
1013+
(geo.landRouteExclusions || []).slice().sort().join(",")
10031014
].join(":");
10041015
})
10051016
.join("|");
@@ -1205,7 +1216,7 @@
12051216
const multiplier = routeEfficiencyMultiplier("regional", directMapUnits, scale, exporterGeo, importerGeo, 1);
12061217
candidates.push({
12071218
routeType: "regional",
1208-
routeMode: "land",
1219+
routeMode: regionalRouteMode(importerGeo, exporterGeo, directBorderUnits),
12091220
distanceUnits: directMapUnits,
12101221
multiplier,
12111222
transitPath: [exporterId, importerId],

0 commit comments

Comments
 (0)