From b70716e09eb60737a75087c845307498900a46a3 Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Fri, 13 Jun 2025 20:00:07 +0200 Subject: [PATCH] Scenery and Sign bugfixes *Fixed <> and [ ] tags appearing in sign texts *Reduced the number of useless parser warnings by adding TerrainGroup, EndTerrainGroup and all objects with "Forest" in their name to the ignore list --- src/model/scenery.js | 7 +++++++ src/model/sign.js | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/model/scenery.js b/src/model/scenery.js index 1f2f671..42848f1 100644 --- a/src/model/scenery.js +++ b/src/model/scenery.js @@ -120,6 +120,11 @@ export default class Scenery static _parseObject(text) { const type = text.split(";", 2)[0]; + + if(type.indexOf("Forest") !== -1) { + return null; + } + switch(type) { case 'Track': return Scenery._parseTrack(text); @@ -145,6 +150,8 @@ export default class Scenery case 'MainCamera': case 'SSPRepeater': case 'SSPController': + case 'TerrainGroup': + case 'EndTerrainGroup': return null; default: SceneryParserLog.warn('unknownObjectType', `Unknown object type: ${type}`); diff --git a/src/model/sign.js b/src/model/sign.js index a989354..61aa1ab 100644 --- a/src/model/sign.js +++ b/src/model/sign.js @@ -16,10 +16,20 @@ export default class Sign extends TrackObject { } getPrintableSignData() { - if (!this.data) return null; + let data = this.data?.trim(); + if (!data) return null; + + // remove any , [size=...], or [/size] tags + data = this.data.replace(/[<[]size=[^>\]]*[\]>]/g, '')?.trim(); - const parts = this.data.split("_"); - return parts[parts.length - 1]?.trim() || null; + // remove any leading '<' or '[' tags and their content + while(data?.match(/^[<[]/)) { + data = data.replace(/^[<[][^>\]]*[\]>]/, '')?.trim(); + } + + // remove everything before the last underscore (inclusive) + const parts = data?.split("_"); + return parts?.[parts?.length - 1]?.trim() || null; } /*