Spaces:
Running
Running
; | |
var __defProp = Object.defineProperty; | |
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
var __getOwnPropNames = Object.getOwnPropertyNames; | |
var __hasOwnProp = Object.prototype.hasOwnProperty; | |
var __export = (target, all) => { | |
for (var name in all) | |
__defProp(target, name, { get: all[name], enumerable: true }); | |
}; | |
var __copyProps = (to, from, except, desc) => { | |
if (from && typeof from === "object" || typeof from === "function") { | |
for (let key of __getOwnPropNames(from)) | |
if (!__hasOwnProp.call(to, key) && key !== except) | |
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
} | |
return to; | |
}; | |
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |
var multi_random_runner_exports = {}; | |
__export(multi_random_runner_exports, { | |
MultiRandomRunner: () => MultiRandomRunner | |
}); | |
module.exports = __toCommonJS(multi_random_runner_exports); | |
var import_prng = require("../prng"); | |
var import_runner = require("./runner"); | |
/** | |
* Battle Simulator multi random runner. | |
* Pokemon Showdown - http://pokemonshowdown.com/ | |
* | |
* @license MIT | |
*/ | |
const _MultiRandomRunner = class { | |
constructor(options) { | |
this.options = { ...options }; | |
this.totalGames = options.totalGames; | |
this.prng = import_prng.PRNG.get(options.prng); | |
this.options.prng = this.prng; | |
this.format = options.format; | |
this.cycle = !!options.cycle; | |
this.all = !!options.all; | |
this.isAsync = !!options.async; | |
this.formatIndex = 0; | |
this.numGames = 0; | |
} | |
async run() { | |
let games = []; | |
let format; | |
let lastFormat = false; | |
let failures = 0; | |
while (format = this.getNextFormat()) { | |
if (this.all && lastFormat && format !== lastFormat) { | |
if (this.isAsync) | |
await Promise.all(games); | |
games = []; | |
} | |
const seed = this.prng.getSeed(); | |
const game = new import_runner.Runner({ format, ...this.options }).run().catch((err) => { | |
failures++; | |
console.error( | |
`Run \`node tools/simulate multi 1 --format=${format} --seed=${seed}\` to debug (optionally with \`--output\` and/or \`--input\` for more info): | |
`, | |
err | |
); | |
}); | |
if (!this.isAsync) | |
await game; | |
games.push(game); | |
lastFormat = format; | |
} | |
if (this.isAsync) | |
await Promise.all(games); | |
return failures; | |
} | |
getNextFormat() { | |
const FORMATS = _MultiRandomRunner.FORMATS; | |
if (this.formatIndex > FORMATS.length) | |
return false; | |
if (this.numGames++ < this.totalGames) { | |
if (this.format) { | |
return this.format; | |
} else if (this.all) { | |
return FORMATS[this.formatIndex]; | |
} else if (this.cycle) { | |
const format = FORMATS[this.formatIndex]; | |
this.formatIndex = (this.formatIndex + 1) % FORMATS.length; | |
return format; | |
} else { | |
return this.prng.sample(FORMATS); | |
} | |
} else if (this.all) { | |
this.numGames = 1; | |
this.formatIndex++; | |
return FORMATS[this.formatIndex]; | |
} | |
return false; | |
} | |
}; | |
let MultiRandomRunner = _MultiRandomRunner; | |
MultiRandomRunner.FORMATS = [ | |
"gen8randombattle", | |
"gen8randomdoublesbattle", | |
"gen8battlefactory", | |
"gen7randombattle", | |
"gen7battlefactory", | |
"gen6randombattle", | |
"gen6battlefactory", | |
"gen5randombattle", | |
"gen4randombattle", | |
"gen3randombattle", | |
"gen2randombattle", | |
"gen1randombattle" | |
]; | |
//# sourceMappingURL=multi-random-runner.js.map | |