homm3-parsers
Version:
Collection of binary parsers able to parse various file formats related to Heroes of Might and Magic III
26 lines • 3.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const binary_markup_1 = require("binary-markup");
const constants_1 = require("./constants");
const common_bml_1 = require("./common.bml");
const lose_1 = require("./enums/lose");
const loseConditions_bml_1 = require("./additionalInfo/loseConditions.bml");
const win_1 = require("./enums/win");
const winConditions_bml_1 = require("./additionalInfo/winConditions.bml");
const spell_1 = require("./enums/spell");
const skill_1 = require("./enums/skill");
const rumor = binary_markup_1.struct(
//
common_bml_1.hommString `name`, common_bml_1.hommString `desciption`);
const customHero = binary_markup_1.struct(
//
common_bml_1.hero `hero`, binary_markup_1.uint8 `face`, common_bml_1.hommString `name`, binary_markup_1.uint8 `allowed_players`);
const secondarySkills = binary_markup_1.struct(
//
binary_markup_1.uint32 `count`, binary_markup_1.array(common_bml_1.secondarySkill, binary_markup_1.ctx `count`) `entries`);
const heroData = binary_markup_1.struct(binary_markup_1.flag `hasExperience`, binary_markup_1.when(binary_markup_1.ctx `hasExperience`, binary_markup_1.uint32) `experience`, binary_markup_1.flag `hasSecondarySkills`, binary_markup_1.when(binary_markup_1.ctx `hasSecondarySkills`, secondarySkills) `secondarySkills`, binary_markup_1.flag `hasArtifacts`, binary_markup_1.when(binary_markup_1.ctx `hasArtifacts`, common_bml_1.artifacts) `artifacts`, binary_markup_1.flag `hasBiography`, binary_markup_1.when(binary_markup_1.ctx `hasBiography`, common_bml_1.hommString) `biography`, binary_markup_1.enums(binary_markup_1.uint8, constants_1.genderEnum) `gender`, binary_markup_1.flag `hasSpells`, binary_markup_1.when(binary_markup_1.ctx `hasSpells`, spell_1.spellsMask) `spells`, binary_markup_1.flag `hasPrimarySkills`, binary_markup_1.when(binary_markup_1.ctx `hasPrimarySkills`, common_bml_1.primarySkills) `primarySkills`);
const heroSettings = binary_markup_1.struct(
//
binary_markup_1.flag `hasSettings`, binary_markup_1.when(binary_markup_1.ctx `hasSettings`, heroData) `settings`);
exports.additionalInfo = binary_markup_1.struct(binary_markup_1.enums(binary_markup_1.uint8, win_1.winConditionsEnum) `winCondition`, binary_markup_1.branch(binary_markup_1.ctx `winCondition`, winConditions_bml_1.winConditionsBranches) `winConditionData`, binary_markup_1.enums(binary_markup_1.uint8, lose_1.loseConditionsEnum) `loseCondition`, binary_markup_1.branch(binary_markup_1.ctx `loseCondition`, loseConditions_bml_1.loseConditionsBranches) `loseConditionData`, binary_markup_1.uint8 `teamsCount`, binary_markup_1.when(binary_markup_1.ctx `teamsCount`.gt(0), binary_markup_1.array(binary_markup_1.byte, constants_1.H3M_MAX_PLAYERS)) `teams`, binary_markup_1.bytes((context) => (common_bml_1.isRoE(context) ? 16 : 20)) `availableHeroes`, binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.uint32), binary_markup_1.when(common_bml_1.isSoD, binary_markup_1.uint8) `customHeroesCount`, binary_markup_1.when(common_bml_1.isSoD, binary_markup_1.array(customHero, binary_markup_1.ctx `customHeroesCount`)) `customHeroes`, binary_markup_1.skip(31), binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.bytes((context) => (common_bml_1.isSoD(context) ? 18 : 17))) `availableArtifacts`, binary_markup_1.when(common_bml_1.isSoD, spell_1.spellsMask) `availableSpells`, binary_markup_1.when(common_bml_1.isSoD, skill_1.skillsMask) `availableSkills`, binary_markup_1.uint32 `rumorsRount`, binary_markup_1.array(rumor, binary_markup_1.ctx `rumorsRount`) `rumors`, binary_markup_1.when(common_bml_1.isSoD, binary_markup_1.array(heroSettings, 156)) `heroSettings`);
//# sourceMappingURL=additionalInfo.bml.js.map