UNPKG

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
"use strict"; 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