+Added SignalElements class parsing and storing extended information about signals +Added support for standard and dwarf EHA/ERI signals extended parsing (excluding eha_top_l, eha_top_r, eha_ps_k and eri_ps_k prefabs) (signs are not being parsed yet) +Added SignalElementsEnums const that will help to translate different signal types into one unified structure
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import SceneryParserLog from "../scenery-parser-log";
|
|
import SignalElementsEnums from "./enums";
|
|
import SignalElementsParsersList from "./parsers-list";
|
|
|
|
export default class SignalElements {
|
|
type = SignalElementsEnums.Type.UNKNOWN;
|
|
headPosition = SignalElementsEnums.HeadPosition.UNKNOWN;
|
|
units = [];
|
|
bar;
|
|
signs = [];
|
|
|
|
constructor(type, headPosition, units = [], bar = null, signs = []) {
|
|
Object.assign(this, {
|
|
type,
|
|
headPosition,
|
|
units,
|
|
bar,
|
|
signs
|
|
});
|
|
}
|
|
|
|
static fromPrefabText(id, text) {
|
|
const prefabName = text.split(",", 2)[0].trim();
|
|
|
|
for(const parser of Object.values(SignalElementsParsersList)) {
|
|
if (!parser.regex.test(prefabName)) continue;
|
|
|
|
for(const subtype of parser.subtypes) {
|
|
if (subtype.isAppliable(prefabName)) {
|
|
return subtype.fromPrefabText(id, text);
|
|
}
|
|
}
|
|
|
|
SceneryParserLog.warn('signalElemsRecognizedUnknownPrefab', `Signal ${id} recognized as ${parser.name} but has unknown prefab name: ${prefabName}`);
|
|
return null;
|
|
}
|
|
|
|
SceneryParserLog.warn('signalElemsUnknownPrefab', `Signal ${id} has unknown prefab name: ${prefabName}`);
|
|
return null;
|
|
}
|
|
}
|