From 5b83f8c8172851b114cd202f52bfcf0c1d6b2d09 Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Sun, 20 Jul 2025 23:31:22 +0200 Subject: [PATCH] Added platforms renderer +Added an experimental platforms renderer --- src/components/map/Map.css | 4 ++++ src/components/map/ObjectsRenderQueue.js | 8 ++++++++ .../map/object-renderers/PlatformRenderer.js | 20 +++++++++++++++++++ src/helpers/constants.js | 5 +++++ 4 files changed, 37 insertions(+) create mode 100644 src/components/map/object-renderers/PlatformRenderer.js diff --git a/src/components/map/Map.css b/src/components/map/Map.css index 3e72537..ac1b40c 100644 --- a/src/components/map/Map.css +++ b/src/components/map/Map.css @@ -128,3 +128,7 @@ .map svg g.spawn-point path.background { fill: #111; } + +.map svg g.platform rect { + fill: #333; +} diff --git a/src/components/map/ObjectsRenderQueue.js b/src/components/map/ObjectsRenderQueue.js index 738951c..206e379 100644 --- a/src/components/map/ObjectsRenderQueue.js +++ b/src/components/map/ObjectsRenderQueue.js @@ -11,8 +11,16 @@ import DerailerRenderer from './object-renderers/DerailerRenderer'; import ElectrificationStatusPopup from './additional-layer-components/ElectrificationStatusPopup'; import SpawnPointRenderer from './object-renderers/SpawnPointRenderer'; import IsolationEndRenderer from './object-renderers/IsolationEndRenderer'; +import PlatformRenderer from './object-renderers/PlatformRenderer'; const ObjectRendererQueue = [ + { + 'name': 'platforms', + 'category': 'misc', + 'type': 'Platform', + 'renderer': PlatformRenderer, + 'cond': (layers) => layers['platforms'], + }, { 'name': 'tracks', 'category': 'tracks', diff --git a/src/components/map/object-renderers/PlatformRenderer.js b/src/components/map/object-renderers/PlatformRenderer.js new file mode 100644 index 0000000..b0afcc0 --- /dev/null +++ b/src/components/map/object-renderers/PlatformRenderer.js @@ -0,0 +1,20 @@ +export default function PlatformRenderer(props) { + const { object } = props; + const [x, y] = object.pos.toSVGCoords(); + if(!object.def) return null; + + const [centerX, centerY] = object.def.center.toSVGCoords(); + const sizeX = object.def.size.x; + const sizeY = object.def.size.z; + + return ( + + + + ); +} diff --git a/src/helpers/constants.js b/src/helpers/constants.js index 517c3df..9c3404e 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -63,6 +63,11 @@ const Constants = { fetchListUrl: `${process.env.PUBLIC_URL}/sceneries/sceneries.json`, }, layers: [ + { + id: 'platforms', + name: 'Platforms (WIP)', + default: true, + }, { id: 'tracks', name: 'Tracks',