From b952b9c26d76489721d3d39dcc69ffefe2e8a3a9 Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Sun, 1 Jun 2025 00:47:23 +0200 Subject: [PATCH] Added SceneryParserLog +Added SceneryParserLog class that filters warning messages --- src/helpers/constants.js | 7 +++++++ src/model/scenery-parser-log.js | 9 +++++++++ src/model/scenery.js | 5 +++-- src/model/switch.js | 10 ++++++---- src/model/track-object.js | 4 +++- 5 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 src/model/scenery-parser-log.js diff --git a/src/helpers/constants.js b/src/helpers/constants.js index 363a2eb..8e889f0 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -3,6 +3,13 @@ const Constants = { useTrackColors: false, zoomSensitivity: 0.002, }, + warnings: { + all: false, // enable all warnings + trackObjectCannotBeApplied: false, + switchInvalidTrackConnection: true, + unknownObjectType: true, + unknownTrackType: true, + }, layers: [ { id: 'tracks', diff --git a/src/model/scenery-parser-log.js b/src/model/scenery-parser-log.js new file mode 100644 index 0000000..6e279aa --- /dev/null +++ b/src/model/scenery-parser-log.js @@ -0,0 +1,9 @@ +import Constants from "../helpers/constants"; + +export default class SceneryParserLog { + static warn(type, message) { + if(!Constants.warnings[type] && !Constants.warnings.all) return; + + console.warn(`[SceneryParserLog] ${message}`); + } +} diff --git a/src/model/scenery.js b/src/model/scenery.js index 4cbd714..bb6dd76 100644 --- a/src/model/scenery.js +++ b/src/model/scenery.js @@ -4,6 +4,7 @@ import BezierTrack from './bezier-track'; import TrackObject from './track-object'; import Signal from './signal'; import Route from './route'; +import SceneryParserLog from './scenery-parser-log'; export default class Scenery { @@ -74,7 +75,7 @@ export default class Scenery case 'EndRoute': return null; default: - console.warn(`Unknown object type: ${type}`); + SceneryParserLog.warn('unknownObjectType', `Unknown object type: ${type}`); return null; }; } @@ -91,7 +92,7 @@ export default class Scenery case 'BTrack': return BezierTrack.fromText(text); default: - console.warn(`Unknown track type: ${trackType}`); + SceneryParserLog.warn('unknownTrackType', `Unknown track type: ${trackType}`); return null; } } diff --git a/src/model/switch.js b/src/model/switch.js index 2eeae1a..9734166 100644 --- a/src/model/switch.js +++ b/src/model/switch.js @@ -1,5 +1,7 @@ +import Constants from "../helpers/constants.js"; import PointTrack from "./point-track.js"; import SceneryObject from "./scenery-object.js"; +import SceneryParserLog from "./scenery-parser-log.js"; export default class Switch extends SceneryObject { model; @@ -95,10 +97,10 @@ export default class Switch extends SceneryObject { _createGetSwitchTrack(scenery, name, from, to, r) { if(!from) { - console.error(`Switch #${this.id}, track ${name} has no 'from' track set!`); + SceneryParserLog.warn('switchInvalidTrackConnection', `Switch track ${name} has no 'from' track set`); return null; } else if(!to) { - console.error(`Switch #${this.id}, track ${name} has no 'to' track set!`); + SceneryParserLog.warn('switchInvalidTrackConnection', `Switch track ${name} has no 'to' track set`); return null; } @@ -106,10 +108,10 @@ export default class Switch extends SceneryObject { const endTrack = scenery.getObject("tracks", to); if(!startTrack) { - console.error(`Switch #${this.id}, track ${name}, 'from' track ${from} not found!`); + SceneryParserLog.warn('switchInvalidTrackConnection', `Switch track ${name}, 'from' track ${from} not found`); return null; } else if(!endTrack) { - console.error(`Switch #${this.id}, track ${name}, 'to' track ${to} not found!`); + SceneryParserLog.warn('switchInvalidTrackConnection', `Switch track ${name}, 'to' track ${to} not found`); return null; } diff --git a/src/model/track-object.js b/src/model/track-object.js index 70cdd07..9dbdfb7 100644 --- a/src/model/track-object.js +++ b/src/model/track-object.js @@ -1,4 +1,6 @@ +import Constants from '../helpers/constants'; import SceneryObject from './scenery-object'; +import SceneryParserLog from './scenery-parser-log'; export default class TrackObject extends SceneryObject { prefab_name; @@ -38,7 +40,7 @@ export default class TrackObject extends SceneryObject { applyObject(scenery) { const track = scenery.getObject('tracks', this.track_id); if (!track) { - console.warn(`TrackObject ${this.id} cannot be applied: track ${this.track_id} not found.`); + SceneryParserLog.warn('trackObjectCannotBeApplied', `TrackObject ${this.id} cannot be applied: track ${this.track_id} not found`) return; }