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; } /*