UNPKG

md5-fight-plus

Version:

71 lines (70 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBattleField = createBattleField; exports.initPlayer = initPlayer; exports.initFight = initFight; exports.initHooks = initHooks; exports.initLogger = initLogger; const SyncBailHook_1 = require("../hooks/SyncBailHook"); const registerRoundHooks_1 = require("../hooks/registrant/registerRoundHooks"); const registerHooks_1 = require("../hooks/registrant/registerHooks"); const initRound_1 = require("./initRound"); const roundTimeOut_1 = require("../events/roundTimeOut"); const registerIntercept_1 = require("./registerIntercept"); const logs_1 = require("../logs"); function createBattleField(p1, p2) { const battleFieldInstance = {}; //初始化参数 initPlayer(battleFieldInstance, p1, p2); (0, initRound_1.initRound)(battleFieldInstance); initFight(battleFieldInstance); initHooks(battleFieldInstance); initLogger(battleFieldInstance); //注册一些钩子 (0, registerHooks_1.registerHooks)(battleFieldInstance); (0, registerRoundHooks_1.registerRoundHooks)(battleFieldInstance); (0, registerIntercept_1.registerAfterActionHook)(battleFieldInstance); battleFieldInstance.hooks.init.call(battleFieldInstance); return battleFieldInstance; } function initPlayer(battleField, p1, p2) { if (!battleField.players) battleField.players = { left: undefined, right: undefined }; if (p1) battleField.players.left = p1; if (p2) battleField.players.right = p2; p1.battleField = battleField; p2.battleField = battleField; } function initFight(battleField) { battleField.fight = () => { battleField.hooks.fightStart.call(battleField); try { for (; battleField.roundCount < 200; battleField.roundCount++) { battleField.round(); } throw new roundTimeOut_1.RoundTimeOutEvent(); } catch (err) { const message = err.message ? err.message : err; battleField.logger.addInfo(`游戏结束,原因: ${message}`, "game over"); battleField.logger.addError(`游戏结束,原因: ${message}`, "game over"); } }; } function initHooks(battleField) { battleField.hooks = { init: new SyncBailHook_1.SyncBailHook(), // 计算运行时属性 // 计算玩家技能组 fightStart: new SyncBailHook_1.SyncBailHook(), }; } function initLogger(battleField) { battleField.logger = (0, logs_1.createLogger)({ filePath: "battleField.log.json", mode: "JSON", battleField, }); }