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>
|
<tbody>
|
||||||
<SceneryInfoViewItem label="Name" value={sceneryInfo.name} />
|
<SceneryInfoViewItem label="Name" value={sceneryInfo.name} />
|
||||||
<SceneryInfoViewItem label="Version" value={sceneryInfo.version} />
|
<SceneryInfoViewItem label="Version" value={sceneryInfo.version} />
|
||||||
|
<SceneryInfoViewItem label="Format version" value={sceneryInfo.infoVersion} />
|
||||||
<SceneryInfoViewItem label="Author" value={sceneryInfo.author} />
|
<SceneryInfoViewItem label="Author" value={sceneryInfo.author} />
|
||||||
<SceneryInfoViewItem label="Description" value={sceneryInfo.description} />
|
<SceneryInfoViewItem label="Description" value={sceneryInfo.description} />
|
||||||
<SceneryInfoViewItem label="Link" value={sceneryInfo.link} isLink={true} />
|
<SceneryInfoViewItem label="Link" value={sceneryInfo.link} isLink={true} />
|
||||||
|
|||||||
@ -77,16 +77,6 @@ export default class SceneryParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static _parseSceneryInfo(text) {
|
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);
|
return SceneryInfo.fromText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
import SpecialObject from "./special-object";
|
import SpecialObject from "./special-object";
|
||||||
|
import SceneryParserLog from '../parsing/scenery-parser-log';
|
||||||
|
import Constants from '../../helpers/constants';
|
||||||
|
|
||||||
export default class SceneryInfo extends SpecialObject {
|
export default class SceneryInfo extends SpecialObject {
|
||||||
name;
|
name;
|
||||||
@ -8,9 +10,10 @@ export default class SceneryInfo extends SpecialObject {
|
|||||||
author;
|
author;
|
||||||
main_signalbox;
|
main_signalbox;
|
||||||
uuid;
|
uuid;
|
||||||
|
infoVersion;
|
||||||
type = "SceneryInfo";
|
type = "SceneryInfo";
|
||||||
|
|
||||||
constructor(name, version, description, link, author, main_signalbox, uuid) {
|
constructor(name, version, description, link, author, main_signalbox, uuid, infoVersion) {
|
||||||
super();
|
super();
|
||||||
Object.assign(this, {
|
Object.assign(this, {
|
||||||
name,
|
name,
|
||||||
@ -19,12 +22,24 @@ export default class SceneryInfo extends SpecialObject {
|
|||||||
link,
|
link,
|
||||||
author,
|
author,
|
||||||
main_signalbox,
|
main_signalbox,
|
||||||
uuid
|
uuid,
|
||||||
|
infoVersion
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static fromText(text) {
|
static fromText(text) {
|
||||||
const values = text.split(";");
|
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(
|
const sceneryInfo = new SceneryInfo(
|
||||||
values[1], // name
|
values[1], // name
|
||||||
parseInt(values[2]), // version
|
parseInt(values[2]), // version
|
||||||
@ -32,7 +47,8 @@ export default class SceneryInfo extends SpecialObject {
|
|||||||
values[4], // link
|
values[4], // link
|
||||||
values[5], // author
|
values[5], // author
|
||||||
values[6], // main_signalbox
|
values[6], // main_signalbox
|
||||||
values[7] // uuid
|
values[7], // uuid
|
||||||
|
infoVersion
|
||||||
);
|
);
|
||||||
|
|
||||||
return sceneryInfo;
|
return sceneryInfo;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user