57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import { RandomGenerator } from "../common/RandomGenerator";
|
|
import { contains, remove } from "../common/Tools";
|
|
import { Mission } from "./missions/Mission";
|
|
import { MissionGenerator } from "./missions/MissionGenerator";
|
|
import { Player } from "./Player";
|
|
import { StarLocation } from "./StarLocation";
|
|
|
|
/**
|
|
* A shop is a place to buy/sell equipments
|
|
*/
|
|
export class Shop {
|
|
// Average level of equipment
|
|
private level: number
|
|
|
|
// Random generator
|
|
private random: RandomGenerator
|
|
|
|
// Available missions
|
|
private missions: Mission[] = []
|
|
|
|
constructor(level = 1) {
|
|
this.level = level;
|
|
this.random = new RandomGenerator();
|
|
}
|
|
|
|
/**
|
|
* Get a list of available secondary missions
|
|
*/
|
|
getMissions(around: StarLocation, max_count = 3): Mission[] {
|
|
while (this.missions.length < max_count) {
|
|
let generator = new MissionGenerator(around.star.universe, around, this.random);
|
|
let mission = generator.generate();
|
|
this.missions.push(mission);
|
|
}
|
|
|
|
return this.missions;
|
|
}
|
|
|
|
/**
|
|
* Assign a mission to a fleet
|
|
*
|
|
* Returns true on success
|
|
*/
|
|
acceptMission(mission: Mission, player: Player): boolean {
|
|
if (contains(this.missions, mission)) {
|
|
if (player.missions.addSecondary(mission, player.fleet)) {
|
|
remove(this.missions, mission);
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|