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

80 lines
2.4 KiB
TypeScript
Raw Normal View History

2017-02-09 00:00:35 +00:00
module TS.SpaceTac {
2014-12-29 00:00:00 +00:00
// One player (human or IA)
export class Player {
// Universe in which we are playing
universe: Universe;
2014-12-29 00:00:00 +00:00
// Current fleet
fleet: Fleet;
// List of visited star systems
2017-01-29 18:34:38 +00:00
visited: StarLocation[] = [];
2014-12-29 00:00:00 +00:00
// Create a player, with an empty fleet
constructor(universe: Universe = new Universe()) {
this.universe = universe;
2014-12-29 00:00:00 +00:00
this.fleet = new Fleet(this);
}
// Create a quick random player, with a fleet, for testing purposes
static newQuickRandom(name: String): Player {
var player = new Player(new Universe());
var ship: Ship;
var ship_generator = new ShipGenerator();
ship = ship_generator.generate(1);
ship.name = name + "'s First";
player.fleet.addShip(ship);
ship = ship_generator.generate(1);
ship.name = name + "'s Second";
player.fleet.addShip(ship);
ship = ship_generator.generate(1);
ship.name = name + "'s Third";
player.fleet.addShip(ship);
ship = ship_generator.generate(1);
ship.name = name + "'s Fourth";
player.fleet.addShip(ship);
2014-12-29 00:00:00 +00:00
return player;
}
2017-01-29 18:34:38 +00:00
/**
* Return true if the player has visited at least one location in a given system.
*/
hasVisitedSystem(system: Star): boolean {
return any(this.visited, location => location.star == system);
}
2017-01-29 18:34:38 +00:00
/**
* Return true if the player has visited a given star location.
*/
hasVisitedLocation(location: StarLocation): boolean {
return contains(this.visited, location);
}
/**
* Set a star location as visited.
*/
setVisited(location: StarLocation): void {
add(this.visited, location);
}
// Get currently played battle, null when none is in progress
2017-03-09 17:11:00 +00:00
getBattle(): Battle | null {
return this.fleet.battle;
}
2017-03-09 17:11:00 +00:00
setBattle(battle: Battle | null): void {
this.fleet.setBattle(battle);
}
// Exit the current battle unconditionally, if any
// This does not apply retreat penalties, or battle outcome, only unbind the battle from current session
exitBattle(): void {
this.setBattle(null);
}
2014-12-29 00:00:00 +00:00
}
2015-01-07 00:00:00 +00:00
}