patchwork-mapconverter
Version:
Executable wrapper for https://github.com/ChiefOfGxBxL/WC3MapTranslator
107 lines • 9.87 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.TriggerDataRegistry = exports.TriggerDataSections = void 0;
const fs_1 = require("fs");
const LoggerFactory_1 = require("../logging/LoggerFactory");
const TriggerDefinition_1 = require("./data/TriggerDefinition");
const StatementType_1 = require("../translator/data/statement/StatementType");
const log = LoggerFactory_1.LoggerFactory.createLogger('TriggerDataLoader');
var TriggerDataSections;
(function (TriggerDataSections) {
TriggerDataSections["TRIGGER_ACTIONS"] = "TriggerActions";
TriggerDataSections["TRIGGER_EVENTS"] = "TriggerEvents";
TriggerDataSections["TRIGGER_CONDITIONS"] = "TriggerConditions";
TriggerDataSections["TRIGGER_CALLS"] = "TriggerCalls";
})(TriggerDataSections || (exports.TriggerDataSections = TriggerDataSections = {}));
function convertToSectionRowData(section, key, value) {
const values = value.split(',');
switch (section) {
case TriggerDataSections.TRIGGER_ACTIONS:
values[0] = Number(values[0]);
return new TriggerDefinition_1.TriggerActions(key, values);
case TriggerDataSections.TRIGGER_EVENTS:
values[0] = Number(values[0]);
return new TriggerDefinition_1.TriggerEvents(key, values);
case TriggerDataSections.TRIGGER_CONDITIONS:
values[0] = Number(values[0]);
return new TriggerDefinition_1.TriggerConditions(key, values);
case TriggerDataSections.TRIGGER_CALLS:
values[0] = Number(values[0]);
values[1] = Number(values[1]) === 1;
return new TriggerDefinition_1.TriggerCalls(key, values);
}
}
const registry = new Map();
let loaded = false;
const TriggerDataRegistry = {
loadTriggerData: function (triggerDataFilePath) {
log.info('Loading trigger data from', triggerDataFilePath);
const iniData = (0, fs_1.readFileSync)(triggerDataFilePath, { encoding: 'utf8' });
let currentSection = 'root';
for (const line of iniData.split(/\r\n|\n/)) {
if (line.startsWith('//'))
continue; // ignore comment
if (/\[.*\]/.test(line)) {
currentSection = line.substring(1, line.length - 1);
continue;
}
if (currentSection !== TriggerDataSections.TRIGGER_ACTIONS && currentSection !== TriggerDataSections.TRIGGER_CALLS &&
currentSection !== TriggerDataSections.TRIGGER_CONDITIONS && currentSection !== TriggerDataSections.TRIGGER_EVENTS) {
continue; // ignore irrelevant sections
}
if (line.startsWith('_'))
continue; // ignore irrelevant properties
if (line.includes('=')) {
const [key, value] = line.split('=');
const def = convertToSectionRowData(currentSection, key, value);
const sectionRegistry = registry.get(currentSection);
if (sectionRegistry == null) {
registry.set(currentSection, { [key]: def?.getParameterCount() });
}
else {
sectionRegistry[key] = def?.getParameterCount();
}
}
}
loaded = true;
},
getParameterCount: function (classification, name) {
let sectionRegistry;
if (!loaded) {
throw new Error('TriggerData has not been provided, therefore GUI triggers cannot be converted!');
}
switch (classification) {
case StatementType_1.StatementType.EVENT:
case TriggerDataSections.TRIGGER_EVENTS:
sectionRegistry = registry.get(TriggerDataSections.TRIGGER_EVENTS);
if (sectionRegistry != null) {
return sectionRegistry[name];
}
break;
case StatementType_1.StatementType.CONDITION:
case TriggerDataSections.TRIGGER_CONDITIONS:
sectionRegistry = registry.get(TriggerDataSections.TRIGGER_CONDITIONS);
if (sectionRegistry != null) {
return sectionRegistry[name];
}
break;
case StatementType_1.StatementType.ACTION:
case TriggerDataSections.TRIGGER_ACTIONS:
sectionRegistry = registry.get(TriggerDataSections.TRIGGER_ACTIONS);
if (sectionRegistry != null) {
return sectionRegistry[name];
}
break;
case StatementType_1.StatementType.CALL:
case TriggerDataSections.TRIGGER_CALLS:
sectionRegistry = registry.get(TriggerDataSections.TRIGGER_CALLS);
if (sectionRegistry != null) {
return sectionRegistry[name];
}
break;
}
return 0; // TODO: do actual error handling?
}
};
exports.TriggerDataRegistry = TriggerDataRegistry;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJpZ2dlckRhdGFSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmhhbmNlbWVudHMvVHJpZ2dlckRhdGFSZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBaUM7QUFDakMsNERBQXdEO0FBQ3hELGdFQUFrSjtBQUNsSiw4RUFBMEU7QUFFMUUsTUFBTSxHQUFHLEdBQUcsNkJBQWEsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtBQUUzRCxJQUFLLG1CQUtKO0FBTEQsV0FBSyxtQkFBbUI7SUFDdEIseURBQWtDLENBQUE7SUFDbEMsdURBQWdDLENBQUE7SUFDaEMsK0RBQXdDLENBQUE7SUFDeEMscURBQThCLENBQUE7QUFDaEMsQ0FBQyxFQUxJLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBS3ZCO0FBRUQsU0FBUyx1QkFBdUIsQ0FBRSxPQUE0QixFQUFFLEdBQVcsRUFBRSxLQUFhO0lBQ3hGLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUF1RCxDQUFBO0lBRXJGLFFBQVEsT0FBTyxFQUFFO1FBQ2YsS0FBSyxtQkFBbUIsQ0FBQyxlQUFlO1lBQ3RDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDN0IsT0FBTyxJQUFJLGtDQUFjLENBQUMsR0FBRyxFQUFFLE1BQStCLENBQUMsQ0FBQTtRQUNqRSxLQUFLLG1CQUFtQixDQUFDLGNBQWM7WUFDckMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM3QixPQUFPLElBQUksaUNBQWEsQ0FBQyxHQUFHLEVBQUUsTUFBK0IsQ0FBQyxDQUFBO1FBQ2hFLEtBQUssbUJBQW1CLENBQUMsa0JBQWtCO1lBQ3pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFN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
;