From a1a27a9ca0851f5645daa221686229eb65c5a6c5 Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Thu, 13 Aug 2026 19:05:14 +0200 Subject: [PATCH] Add format version to SceneryInfoView - Slightly refactored scenery info header parsing - Updated SceneryInfo to hold information about scenery info header version - Added "Format version" item to SceneryInfoView --- .../scenery-info-dialog/SceneryInfoView.jsx | 1 + src/model/parsing/scenery-parser.js | 10 --------- src/model/special-objects/scenery-info.js | 22 ++++++++++++++++--- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/components/scenery-info-dialog/SceneryInfoView.jsx b/src/components/scenery-info-dialog/SceneryInfoView.jsx index 106d638..fd4fd76 100644 --- a/src/components/scenery-info-dialog/SceneryInfoView.jsx +++ b/src/components/scenery-info-dialog/SceneryInfoView.jsx @@ -11,6 +11,7 @@ export default function SceneryInfoView({ scenery }) { + diff --git a/src/model/parsing/scenery-parser.js b/src/model/parsing/scenery-parser.js index 5ade62a..feef994 100644 --- a/src/model/parsing/scenery-parser.js +++ b/src/model/parsing/scenery-parser.js @@ -77,16 +77,6 @@ export default class SceneryParser { } static _parseSceneryInfo(text) { - const infoHeader = text.split(";", 2)[0]; - if(!infoHeader.startsWith("scv")) { - SceneryParserLog.error('invalidSceneryInfo', `Invalid scenery info header: ${infoHeader}`); - } - - const version = parseInt(infoHeader.split("v")[1]); - if(version < Constants.parser.sceneryInfoVersionMin || version > Constants.parser.sceneryInfoVersionMax) { - SceneryParserLog.warn('invalidSceneryInfoVersion', `Invalid scenery info version: ${version}. Expected: ${Constants.parser.sceneryInfoVersionMin}-${Constants.parser.sceneryInfoVersionMax}`); - } - return SceneryInfo.fromText(text); } diff --git a/src/model/special-objects/scenery-info.js b/src/model/special-objects/scenery-info.js index 874a71d..6a5ae6d 100644 --- a/src/model/special-objects/scenery-info.js +++ b/src/model/special-objects/scenery-info.js @@ -1,4 +1,6 @@ import SpecialObject from "./special-object"; +import SceneryParserLog from '../parsing/scenery-parser-log'; +import Constants from '../../helpers/constants'; export default class SceneryInfo extends SpecialObject { name; @@ -8,9 +10,10 @@ export default class SceneryInfo extends SpecialObject { author; main_signalbox; uuid; + infoVersion; type = "SceneryInfo"; - constructor(name, version, description, link, author, main_signalbox, uuid) { + constructor(name, version, description, link, author, main_signalbox, uuid, infoVersion) { super(); Object.assign(this, { name, @@ -19,12 +22,24 @@ export default class SceneryInfo extends SpecialObject { link, author, main_signalbox, - uuid + uuid, + infoVersion }); } static fromText(text) { const values = text.split(";"); + + if(!values[0].startsWith("scv")) { + SceneryParserLog.error('invalidSceneryInfo', `Invalid scenery info header: ${text}`); + return null; + } + + const infoVersion = parseInt(values[0].split("v")[1]); + if(!infoVersion || infoVersion < Constants.parser.sceneryInfoVersionMin || infoVersion > Constants.parser.sceneryInfoVersionMax) { + SceneryParserLog.warn('invalidSceneryInfoVersion', `Unsupported scenery info version: ${infoVersion}. Expected: ${Constants.parser.sceneryInfoVersionMin}-${Constants.parser.sceneryInfoVersionMax}`); + } + const sceneryInfo = new SceneryInfo( values[1], // name parseInt(values[2]), // version @@ -32,7 +47,8 @@ export default class SceneryInfo extends SpecialObject { values[4], // link values[5], // author values[6], // main_signalbox - values[7] // uuid + values[7], // uuid + infoVersion ); return sceneryInfo;