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
This commit is contained in:
parent
daa86d7b85
commit
a1a27a9ca0
@ -11,6 +11,7 @@ export default function SceneryInfoView({ scenery }) {
|
||||
<tbody>
|
||||
<SceneryInfoViewItem label="Name" value={sceneryInfo.name} />
|
||||
<SceneryInfoViewItem label="Version" value={sceneryInfo.version} />
|
||||
<SceneryInfoViewItem label="Format version" value={sceneryInfo.infoVersion} />
|
||||
<SceneryInfoViewItem label="Author" value={sceneryInfo.author} />
|
||||
<SceneryInfoViewItem label="Description" value={sceneryInfo.description} />
|
||||
<SceneryInfoViewItem label="Link" value={sceneryInfo.link} isLink={true} />
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user