@opendnd/genetica
Version:
This is a tool for using a simplified genetics system to generate inheritable traits for DnD characters.
71 lines • 3.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const colors = require("colors/safe");
class Renderer {
static leftSpace(c, n) {
let char = `${c}`;
const diff = parseInt(n, 10) - char.length;
for (let i = 0; i < diff; i += 1) {
char = ` ${char}`;
}
return char;
}
static rightSpace(c, n) {
let char = `${c}`;
const diff = parseInt(n, 10) - char.length;
for (let i = 0; i < diff; i += 1) {
char = `${char} `;
}
return char;
}
static chromosome(c, g) {
const parts = g.split("=");
const a = this.leftSpace(parts[0], 10);
const b = this.rightSpace(parts[1], 10);
const label = `Chromosome ${this.leftSpace(c, 4)}: `;
let template = "";
// alternate colors
if (parseInt(c, 10) % 2) {
template += ` ${colors.blue("o")}=${colors.red("O")}\n`;
template += ` ${colors.blue("o")}===${colors.red("O")}\n`;
template += `${colors.white(label)} ${colors.blue(a)}=====${colors.red(b)}\n`;
template += ` ${colors.blue("O")}===${colors.red("o")}\n`;
template += ` ${colors.blue("O")}=${colors.red("o")}\n`;
template += ` ${colors.blue("O")}\n`;
}
else {
template += ` ${colors.red("o")}=${colors.blue("O")}\n`;
template += ` ${colors.red("o")}===${colors.blue("O")}\n`;
template += `${colors.white(label)} ${colors.red(a)}=====${colors.blue(b)}\n`;
template += ` ${colors.red("O")}===${colors.blue("o")}\n`;
template += ` ${colors.red("O")}=${colors.blue("o")}\n`;
template += ` ${colors.red("O")}\n`;
}
return template;
}
static output(result) {
const { version, chromosomes, race, gender, traits, } = result;
let output = `\n\nHere are your genes for this ${gender} ${race.name} (made with Genetica v${version}): \n\n`;
// add start to result
output += ` ${colors.red("O")}\n`;
// output each chromosome
Object.keys(chromosomes).forEach((c) => {
const g = chromosomes[c];
output += this.chromosome(c, g);
});
output += "\n\n";
process.stdout.write(colors.white(output));
output = "Traits:\n";
Object.keys(traits).forEach((trait) => {
output += `\t${trait}:\t`;
if (trait === "sex") {
output += "\t";
}
output += `${colors.bold(traits[trait].trait)} (${traits[trait].gene})\n`;
});
output += "\n";
process.stdout.write(colors.white(output));
}
}
exports.default = Renderer;
//# sourceMappingURL=renderer.js.map