UNPKG

cbt-game-generator

Version:

Configuration generator for CBT animation apps

82 lines (72 loc) 3.04 kB
import * as fs from 'fs'; import * as path from 'path'; export class VariantConfigGenerator { private subLoDir: string; constructor( private gamePath: string, private gameName: string, private numberOfVariants: number, private subLoIndex: number ) { this.subLoDir = path.join(this.gamePath, 'configuration', 'variants-config', `sub-lo-${this.subLoIndex + 1}`); } generate(): void { fs.mkdirSync(this.subLoDir, { recursive: true }); this.generateVariantsBaseConfig(); this.generateVariantFiles(); } private generateVariantsBaseConfig(): void { const baseConfigContent = `import { ESourcesType } from "../../../../../../shared/constants/resources"; import { E${this.gameName} } from "../../../constants/variantsConfig"; import { generateRandomSelections } from "../../game-config/function"; import { assetLottieWebpMappingSubLo${this.subLoIndex + 1} } from "../../../constants/variantsConfig"; export const variantsBaseConfigSubLo${this.subLoIndex + 1} = generateRandomSelections( assetLottieWebpMappingSubLo${this.subLoIndex + 1}, "sub-lo-${this.subLoIndex + 1}" );`; fs.writeFileSync(path.join(this.subLoDir, `variantsBaseConfigSubLo${this.subLoIndex + 1}.ts`), baseConfigContent); } private generateVariantFiles(): void { const startVariant = this.subLoIndex * this.numberOfVariants + 1; for (let variantIndex = 0; variantIndex < this.numberOfVariants; variantIndex++) { const variantNumber = startVariant + variantIndex; const variantFile = `${this.gameName}V${variantNumber}.ts`; const variantTsContent = `import { shuffleArray } from "../../../../../../../utils/functions"; import { commonAssets, commonProps, } from "../../../../../../shared/constants/commonConfiguration"; import { E${this.gameName}Variants, ${this.gameName.toLowerCase()}ConfigV${this.subLoIndex + 1}, } from "../../../constants/variantsConfig"; import { I${this.gameName} } from "../../../types/configuration"; import { generateActions } from "../../game-config/function"; import { ${this.gameName}BaseProps, assetsBaseConfig, } from "../../game-config/gameBaseConfig"; import { variantsBaseConfigSubLo${this.subLoIndex + 1} } from "./variantsBaseConfigSubLo${this.subLoIndex + 1}"; const actions = shuffleArray(generateActions("v${variantIndex + 1}", ${this.gameName.toLowerCase()}ConfigV${this.subLoIndex + 1}, true)); export const ${this.gameName}V${variantNumber}: I${this.gameName}<E${this.gameName}Variants.V${variantNumber}> = { ...commonProps, ...${this.gameName}BaseProps, variantId: E${this.gameName}Variants.V${variantNumber}, assets: { ...commonAssets, ...assetsBaseConfig, ...variantsBaseConfigSubLo${this.subLoIndex + 1}, }, segments: { speechInteractionDuration: 3, speechSecondInteractionDuration: 2, actions: JSON.parse(JSON.stringify(actions)), }, assetDuration: 0, criteria: 1, listOfAssets: [], };`; fs.writeFileSync(path.join(this.subLoDir, variantFile), variantTsContent); } } }