UNPKG

homm3-parsers

Version:

Collection of binary parsers able to parse various file formats related to Heroes of Might and Magic III

18 lines 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const binary_markup_1 = require("binary-markup"); const common_bml_1 = require("./common.bml"); const constants_1 = require("./constants"); const Hero_1 = require("./contracts/enums/Hero"); const mainTown = binary_markup_1.struct(binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.byte) `createHero`, binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.byte) `type`, binary_markup_1.byte `x`, binary_markup_1.byte `y`, binary_markup_1.byte `z`); const startingHeroRoE = binary_markup_1.struct(binary_markup_1.flag `isRandom`, common_bml_1.hero `hero`, binary_markup_1.when(binary_markup_1.ctx `hero`.neq(Hero_1.Hero.NONE), binary_markup_1.byte) `face`, binary_markup_1.when(binary_markup_1.ctx `hero`.neq(Hero_1.Hero.NONE), common_bml_1.hommString) `name`); const startingHeroAbSoD = binary_markup_1.struct( // binary_markup_1.flag `isRandom`, common_bml_1.hero `hero`, binary_markup_1.byte `face`, common_bml_1.hommString `name`); const startingHero = binary_markup_1.when(common_bml_1.isRoE, startingHeroRoE, startingHeroAbSoD); const additionalHeroInfo = binary_markup_1.struct(common_bml_1.hero `hero`, common_bml_1.hommString `name`); const additionalInfo = binary_markup_1.struct(binary_markup_1.skip(1), binary_markup_1.uint32 `heroesCount`, binary_markup_1.array(additionalHeroInfo, binary_markup_1.ctx `heroesCount`) `heroes`); exports.player = binary_markup_1.struct(binary_markup_1.flag `canBeHuman`, binary_markup_1.flag `canBeComputer`, binary_markup_1.enums(binary_markup_1.uint8, constants_1.behaviorEnum) `behavior`, binary_markup_1.when(common_bml_1.isSoD, binary_markup_1.uint8) `allowedAlignments`, binary_markup_1.uint8 `townTypes`, // bitfield binary_markup_1.when(common_bml_1.isNotRoE, binary_markup_1.uint8) `townConflux`, // 8-Con, AB/SOD feature binary_markup_1.flag `hasRandomTown`, binary_markup_1.flag `hasMainTown`, binary_markup_1.when(binary_markup_1.ctx `hasMainTown`, mainTown) `mainTown`, startingHero `startingHero`, binary_markup_1.when((context) => common_bml_1.isNotRoE(context) && context.get('startingHero').hero !== Hero_1.Hero.NONE, additionalInfo) `additionaInfo`); //# sourceMappingURL=player.bml.js.map