@randomgeekdom/rollbard
Version:
Libraries and generators for fantasy/scifi worldbuilding
68 lines • 2.89 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var unique_names_generator_1 = require("unique-names-generator");
var fantasy_name_generator_1 = require("fantasy-name-generator");
var Randomizer_1 = require("../Services/Randomizer");
var Gender_1 = require("../Enumerations/Gender");
var wikidata_person_names_1 = require("wikidata-person-names");
var NameGenerator = /** @class */ (function () {
function NameGenerator(randomizer) {
if (randomizer === void 0) { randomizer = Randomizer_1.default.Get(); }
this.randomizer = randomizer;
this.FantasyRaces = [
"angel",
"cavePerson",
"darkelf",
"demon",
"dragon",
"drow",
"dwarf",
"elf",
"fairy",
"gnome",
"goblin",
"halfdemon",
"halfling",
"highelf",
"highfairy",
"human",
"ogre",
"orc"
];
this.dictionaries = [unique_names_generator_1.colors, unique_names_generator_1.animals, unique_names_generator_1.names];
}
NameGenerator.prototype.GenerateName = function (gender) {
var numberOfDictionaries = this.dictionaries.length;
var choice = this.randomizer.GetRandomInt(numberOfDictionaries + 2);
if (choice == numberOfDictionaries) {
var randomRace = this.FantasyRaces[this.randomizer.GetRandomInt(this.FantasyRaces.length)];
var genderText = gender == Gender_1.Gender.Female ? "female" : "male";
return String(fantasy_name_generator_1.nameByRace(randomRace, { gender: genderText }));
}
else if (choice == numberOfDictionaries + 1) {
return gender == Gender_1.Gender.Female ? this.randomizer.GetRandomElement(wikidata_person_names_1.FEMALE.concat()) : this.randomizer.GetRandomElement(wikidata_person_names_1.MALE.concat());
}
else {
return this.GetUniqueName(this.dictionaries[choice]);
}
};
NameGenerator.prototype.GetUniqueName = function (choice) {
return unique_names_generator_1.uniqueNamesGenerator({
dictionaries: [choice],
length: 1,
style: 'capital'
}).split(" ")[0];
};
NameGenerator.prototype.GenerateFirstName = function (gender) {
return this.GenerateName(gender);
};
NameGenerator.prototype.GenerateLastName = function () {
return this.GenerateName(this.randomizer.GetRandomBool() ? Gender_1.Gender.Female : Gender_1.Gender.Male);
};
NameGenerator.Get = function () {
return new NameGenerator(Randomizer_1.default.Get());
};
return NameGenerator;
}());
exports.default = NameGenerator;
//# sourceMappingURL=NameGenerator.js.map
;