UNPKG

@randomgeekdom/rollbard

Version:

Libraries and generators for fantasy/scifi worldbuilding

68 lines 2.89 kB
"use strict"; 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