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

80 lines
2.3 KiB
TypeScript

/// <reference path="Serializable.ts"/>
module TS.SpaceTac.Game {
// One player (human or IA)
export class Player extends Serializable {
// Universe in which we are playing
universe: Universe;
// Current fleet
fleet: Fleet;
// AI playing (null for human player)
ai: AI.AbstractAI;
// List of visited star systems
visited: Star[];
// Create a player, with an empty fleet
constructor(universe: Universe = new Universe()) {
super();
this.universe = universe;
this.fleet = new Fleet(this);
this.ai = null;
this.visited = [];
}
// 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);
return player;
}
// Check if the player has visited a given star system
hasVisited(star: Star): boolean {
return this.visited.indexOf(star) >= 0;
}
// Set a star system as visited
setVisited(star: Star): void {
if (!this.hasVisited(star)) {
this.visited.push(star);
}
}
// Get currently played battle, null when none is in progress
getBattle(): Battle {
return this.fleet.battle;
}
setBattle(battle: Battle): 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);
}
}
}