2019-11-21 22:14:27 +00:00
|
|
|
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";
|
2015-04-07 00:00:00 +00:00
|
|
|
|
2019-11-21 22:14:27 +00:00
|
|
|
// Generator of balanced ships to form a fleet
|
|
|
|
export class FleetGenerator {
|
|
|
|
// Random generator to use
|
|
|
|
random: RandomGenerator;
|
2015-04-07 00:00:00 +00:00
|
|
|
|
2019-11-21 22:14:27 +00:00
|
|
|
constructor(random = RandomGenerator.global) {
|
|
|
|
this.random = random;
|
|
|
|
}
|
2015-04-07 00:00:00 +00:00
|
|
|
|
2019-11-21 22:14:27 +00:00
|
|
|
/**
|
|
|
|
* 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);
|
2017-05-23 16:51:55 +00:00
|
|
|
|
2019-11-21 22:14:27 +00:00
|
|
|
let models = this.random.sample(ShipModel.getDefaultCollection(), ship_count);
|
2015-04-07 00:00:00 +00:00
|
|
|
|
2019-11-21 22:14:27 +00:00
|
|
|
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;
|
|
|
|
}
|
2015-04-07 00:00:00 +00:00
|
|
|
}
|