From c29208b21725ae5fe56c80ebefad83d68f8f6f5a Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Wed, 18 Jun 2025 21:44:57 +0200 Subject: [PATCH] Track max speed tweaks *In the "Max speed" track coloring mode, tracks with a maximum speed or derail speed of 0 are now displayed in red *Fixed an issue where max_speed and derailspeed of Track objects could sometimes be NaN --- src/components/map/ObjectsRenderQueue.js | 2 +- src/components/map/object-renderers/TrackRenderer.js | 3 +++ src/model/bezier-track.js | 4 ++-- src/model/standard-track.js | 4 ++-- src/model/switch.js | 4 ++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/map/ObjectsRenderQueue.js b/src/components/map/ObjectsRenderQueue.js index 20d6bc2..4f21274 100644 --- a/src/components/map/ObjectsRenderQueue.js +++ b/src/components/map/ObjectsRenderQueue.js @@ -60,7 +60,7 @@ const ObjectRendererQueue = [ 'renderer': TrackObjectRenderer, 'cond': (layers) => layers['track-objects'], 'pointerEvents': true - }, + } ] export default ObjectRendererQueue; \ No newline at end of file diff --git a/src/components/map/object-renderers/TrackRenderer.js b/src/components/map/object-renderers/TrackRenderer.js index fcf82fc..e3061bd 100644 --- a/src/components/map/object-renderers/TrackRenderer.js +++ b/src/components/map/object-renderers/TrackRenderer.js @@ -84,6 +84,9 @@ function getTrackColor(object, trackColorMode) { case "slope": return `url(#track-slope-${object.id})`; case "max-speed": + if(!object.maxspeed || !object.derailspeed) { + return "#f22"; + } return `rgb(128, ${Math.min(255, Math.max(0, object.maxspeed * Constants.map.trackMaxSpeedScale))}, 128)`; } } diff --git a/src/model/bezier-track.js b/src/model/bezier-track.js index f397be4..68e3683 100644 --- a/src/model/bezier-track.js +++ b/src/model/bezier-track.js @@ -40,8 +40,8 @@ export default class BezierTrack extends Track ...Track.slopesFromText(values[18]), // start_slope, end_slope values[21], // id_isolation values[23], // prefab_name - parseFloat(values[24]), // maxspeed - parseFloat(values[25]) // derailspeed + parseFloat(values[24]) || 0, // maxspeed + parseFloat(values[25]) || 0 // derailspeed ); return track; diff --git a/src/model/standard-track.js b/src/model/standard-track.js index e62cd67..daf0606 100644 --- a/src/model/standard-track.js +++ b/src/model/standard-track.js @@ -30,8 +30,8 @@ export default class StandardTrack extends Track ...Track.slopesFromText(values[14]), // start_slope, end_slope values[17], // id_isolation values[19], // prefab_name - parseFloat(values[20]), // maxspeed - parseFloat(values[21]) // derailspeed + parseFloat(values[20]) || 0, // maxspeed + parseFloat(values[21]) || 0 // derailspeed ); return track; diff --git a/src/model/switch.js b/src/model/switch.js index bc1c217..98bf52c 100644 --- a/src/model/switch.js +++ b/src/model/switch.js @@ -44,8 +44,8 @@ export default class Switch extends SceneryObject { values[9], // data values[10], // id_isolation values[11], // id_switch - parseFloat(values[13]), // maxspeed - parseFloat(values[14]), // derailspeed + parseFloat(values[13]) || 0, // maxspeed + parseFloat(values[14]) || 0, // derailspeed values[15] // track_prefab_name );