2015-03-03 00:00:00 +00:00
|
|
|
/// <reference path="Serializable.ts"/>
|
|
|
|
|
2014-12-29 00:00:00 +00:00
|
|
|
module SpaceTac.Game {
|
|
|
|
// One player (human or IA)
|
2015-03-03 00:00:00 +00:00
|
|
|
export class Player extends Serializable {
|
2015-04-07 00:00:00 +00:00
|
|
|
// Universe in which we are playing
|
|
|
|
universe: Universe;
|
|
|
|
|
2014-12-29 00:00:00 +00:00
|
|
|
// Current fleet
|
|
|
|
fleet: Fleet;
|
|
|
|
|
2015-02-16 00:00:00 +00:00
|
|
|
// AI playing (null for human player)
|
|
|
|
ai: AI.AbstractAI;
|
|
|
|
|
2015-03-19 00:00:00 +00:00
|
|
|
// List of visited star systems
|
|
|
|
visited: Star[];
|
|
|
|
|
2014-12-29 00:00:00 +00:00
|
|
|
// Create a player, with an empty fleet
|
2015-04-07 00:00:00 +00:00
|
|
|
constructor(universe: Universe = new Universe()) {
|
2015-03-03 00:00:00 +00:00
|
|
|
super();
|
|
|
|
|
2015-04-07 00:00:00 +00:00
|
|
|
this.universe = universe;
|
2014-12-29 00:00:00 +00:00
|
|
|
this.fleet = new Fleet(this);
|
2015-02-16 00:00:00 +00:00
|
|
|
this.ai = null;
|
2015-03-19 00:00:00 +00:00
|
|
|
this.visited = [];
|
2014-12-29 00:00:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Create a quick random player, with a fleet, for testing purposes
|
2014-12-30 00:00:00 +00:00
|
|
|
static newQuickRandom(name: String): Player {
|
2015-04-07 00:00:00 +00:00
|
|
|
var player = new Player(new Universe());
|
2015-01-14 00:00:00 +00:00
|
|
|
var ship: Ship;
|
|
|
|
var ship_generator = new ShipGenerator();
|
2014-12-30 00:00:00 +00:00
|
|
|
|
2015-01-14 00:00:00 +00:00
|
|
|
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-30 00:00:00 +00:00
|
|
|
|
2014-12-29 00:00:00 +00:00
|
|
|
return player;
|
|
|
|
}
|
2015-03-19 00:00:00 +00:00
|
|
|
|
|
|
|
// 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);
|
|
|
|
}
|
|
|
|
}
|
2015-04-07 00:00:00 +00:00
|
|
|
|
|
|
|
// Get currently played battle, null when none is in progress
|
|
|
|
getBattle(): Battle {
|
|
|
|
return this.fleet.battle;
|
|
|
|
}
|
|
|
|
setBattle(battle: Battle): void {
|
|
|
|
this.fleet.setBattle(battle);
|
|
|
|
}
|
2015-04-21 22:17:00 +00:00
|
|
|
|
|
|
|
// 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
|
|
|
}
|