md5-fight-plus
Version:
71 lines (70 loc) • 2.63 kB
JavaScript
;
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,
});
}