UNPKG

generator-x2mod

Version:

A Yeoman generator that creates a XCOM 2 mods. Community maintained to free the masses from ModBuddy!

53 lines (46 loc) 1.98 kB
const Generator = require('yeoman-generator'); const ModConfigService = require('../../services/service.modConfig'); const ModFilesService = require('../../services/service.modFiles'); const SafeNameService = require('../../services/service.safeName'); require('../../lib/extensions.generator'); module.exports = class extends Generator { constructor(args, opts) { super(args, opts); } initializing() { this.modConfigService = new ModConfigService(this.createModConfigContext()); } prompting() { return this.prompt([{ type: 'input', name: 'classFriendlyName', message: 'What\'s the friendly name of your class? This\'ll appear in-game, so make it awesome!', default: 'Shooter Boom Guy' }, { type: 'input', name: 'classSafeName', message: 'What\'s the SAFE name of your class? (Standard safe name rules apply - no nutty characters, no leading numbers. You know the deal.', default: (answers) => { let safeNameService = new SafeNameService('MySweetClass'); return safeNameService.createSafeNameFrom(answers.classFriendlyName); } }]).then(answers => { this.classConfig = answers; }); } writing() { let modFilesService = new ModFilesService(this, this.modConfigService); let loadoutName = `Loadout_Squaddie_${this.classConfig.classSafeName}`; modFilesService.copyConfigTemplate('XComClassData.ini', { classSafeName: this.classConfig.classSafeName, defaultLoadoutName: loadoutName }); modFilesService.copyConfigTemplate('XComGameData.ini', { defaultLoadoutName: loadoutName }); modFilesService.copyLocalizationFile({ classFriendlyName: this.classConfig.classFriendlyName, classSafeName: this.classConfig.classSafeName }); } }