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

47 lines
1.5 KiB
TypeScript
Raw Normal View History

2017-02-09 00:00:35 +00:00
module TS.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 given level
// The ship will not be named, nor will be a member of any fleet
2017-03-09 17:11:00 +00:00
generate(level: number, model: ShipModel | null = null): Ship {
var result = new Ship();
var loot = new LootGenerator(this.random);
2015-05-05 19:49:33 +00:00
if (!model) {
// Get a random model
model = ShipModel.getRandomModel(level, this.random);
}
// Apply model
result.model = model.code;
result.setCargoSpace(model.cargo);
2015-05-05 19:49:33 +00:00
model.slots.forEach((slot: SlotType) => {
result.addSlot(slot);
});
// Set all skills to 1 (to be able to use at least basic equipment)
keys(result.skills).forEach(skill => result.upgradeSkill(skill));
// Fill equipment slots
result.slots.forEach((slot: Slot) => {
var equipment = loot.generate(level, EquipmentQuality.COMMON, slot.type);
2017-03-09 17:11:00 +00:00
if (equipment) {
slot.attach(equipment)
if (slot.attached !== equipment) {
console.error("Cannot attach generated equipment to slot", equipment, slot);
}
2017-03-09 17:11:00 +00:00
}
});
return result;
}
}
}