1
0
Fork 0
spacetac/src/core/FleetGenerator.ts
2019-11-21 23:14:27 +01:00

35 lines
1,004 B
TypeScript

import { RandomGenerator } from "../common/RandomGenerator";
import { range } from "../common/Tools";
import { Fleet } from "./Fleet";
import { ShipModel } from "./models/ShipModel";
import { Player } from "./Player";
import { ShipGenerator } from "./ShipGenerator";
// Generator of balanced ships to form a fleet
export class FleetGenerator {
// Random generator to use
random: RandomGenerator;
constructor(random = RandomGenerator.global) {
this.random = random;
}
/**
* Generate a fleet of a given level
*/
generate(level: number, player?: Player, ship_count = 3, upgrade = false): Fleet {
var fleet = new Fleet(player);
var ship_generator = new ShipGenerator(this.random);
let models = this.random.sample(ShipModel.getDefaultCollection(), ship_count);
range(ship_count).forEach(i => {
var ship = ship_generator.generate(level, models[i] || null, upgrade);
ship.name = ship.model.name;
fleet.addShip(ship);
});
return fleet;
}
}