1
0
Fork 0
spacetac/src/core/ShipGenerator.ts

50 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

2017-09-24 22:23:22 +00:00
module TK.SpaceTac {
/**
* Generator of random ship
*/
export class ShipGenerator {
// Random number generator used
random: RandomGenerator
2017-03-09 17:11:00 +00:00
constructor(random = RandomGenerator.global) {
this.random = random;
}
/**
* Generate a ship of a givel level.
*
* If *upgrade* is true, random levelling options will be chosen
*/
2018-03-06 14:39:48 +00:00
generate(level: number, model: ShipModel | null = null, upgrade = true): Ship {
2015-05-05 19:49:33 +00:00
if (!model) {
// Get a random model
2018-03-06 14:39:48 +00:00
model = ShipModel.getRandomModel(level, this.random);
2015-05-05 19:49:33 +00:00
}
let result = new Ship(null, null, model);
result.level.forceLevel(level);
if (upgrade) {
let iteration = 0;
while (iteration < 100) {
iteration += 1;
let points = result.getAvailableUpgradePoints();
let upgrades = model.getAvailableUpgrades(result.level.get()).filter(upgrade => {
return (upgrade.cost || 0) <= points && !result.level.hasUpgrade(upgrade);
});
if (upgrades.length > 0) {
let upgrade = this.random.choice(upgrades);
result.activateUpgrade(upgrade, true);
} else {
break;
}
2017-03-09 17:11:00 +00:00
}
}
return result;
}
}
}