1
0
Fork 0

Fixed battle stats always adding to defender fleet

This commit is contained in:
Michaël Lemaire 2018-03-29 00:17:24 +02:00
parent 37bb85e773
commit eec499dbd5
6 changed files with 29 additions and 11 deletions

View file

@ -31,7 +31,6 @@ Character sheet
Battle Battle
------ ------
* Fix stats only filling for one fleet
* Display shield (and its (dis)appearance) * Display shield (and its (dis)appearance)
* Display estimated damage and displacement in targetting mode * Display estimated damage and displacement in targetting mode
* Add a voluntary retreat option * Add a voluntary retreat option

View file

@ -25,17 +25,17 @@ module TK.SpaceTac.Specs {
stats.processLog(battle.log, battle.fleets[0]); stats.processLog(battle.log, battle.fleets[0]);
check.equals(stats.stats, {}); check.equals(stats.stats, {});
battle.log.add(new ShipDamageDiff(attacker, 10, 12)); battle.log.add(new ShipDamageDiff(attacker, 1, 3, 2));
stats.processLog(battle.log, battle.fleets[0], true); stats.processLog(battle.log, battle.fleets[0], true);
check.equals(stats.stats, { "Damage dealt": [0, 22] }); check.equals(stats.stats, { "Damage to hull": [0, 1], "Damage shielded": [0, 3], "Damage evaded": [0, 2] });
battle.log.add(new ShipDamageDiff(defender, 40, 0)); battle.log.add(new ShipDamageDiff(defender, 2, 1, 3));
stats.processLog(battle.log, battle.fleets[0], true); stats.processLog(battle.log, battle.fleets[0], true);
check.equals(stats.stats, { "Damage dealt": [40, 22] }); check.equals(stats.stats, { "Damage to hull": [2, 1], "Damage shielded": [1, 3], "Damage evaded": [3, 2] });
battle.log.add(new ShipDamageDiff(attacker, 5, 4)); battle.log.add(new ShipDamageDiff(attacker, 1, 1, 1));
stats.processLog(battle.log, battle.fleets[0], true); stats.processLog(battle.log, battle.fleets[0], true);
check.equals(stats.stats, { "Damage dealt": [40, 31] }); check.equals(stats.stats, { "Damage to hull": [2, 2], "Damage shielded": [1, 4], "Damage evaded": [3, 3] });
}) })
test.case("collects distance moved", check => { test.case("collects distance moved", check => {

View file

@ -49,7 +49,9 @@ module TK.SpaceTac {
let diff_ship = diff.ship_id; let diff_ship = diff.ship_id;
let attacker_ship = any(attacker.ships, ship => ship.is(diff_ship)); let attacker_ship = any(attacker.ships, ship => ship.is(diff_ship));
if (diff instanceof ShipDamageDiff) { if (diff instanceof ShipDamageDiff) {
this.addStat("Damage dealt", diff.hull + diff.shield, !attacker_ship); this.addStat("Damage evaded", diff.evaded, !attacker_ship);
this.addStat("Damage shielded", diff.shield, !attacker_ship);
this.addStat("Damage to hull", diff.hull, !attacker_ship);
} else if (diff instanceof ShipMoveDiff) { } else if (diff instanceof ShipMoveDiff) {
this.addStat("Move distance (km)", diff.getDistance(), attacker_ship); this.addStat("Move distance (km)", diff.getDistance(), attacker_ship);
} else if (diff instanceof DroneDeployedDiff) { } else if (diff instanceof DroneDeployedDiff) {

View file

@ -36,6 +36,15 @@ module TK.SpaceTac.Specs {
compare(loaded_session, session); compare(loaded_session, session);
}); });
test.case("generates a quick battle", check => {
var session = new GameSession();
session.startQuickBattle();
check.same(session.getBattle(), session.player.fleet.battle, "battle");
check.same(session.player.fleet, session.fleet, "fleet");
check.same(nn(session.getBattle()).fleets[0], session.fleet, "attacker fleet");
});
test.case("applies battle outcome to bound player", check => { test.case("applies battle outcome to bound player", check => {
let session = new GameSession(); let session = new GameSession();
check.equals(session.getBattle(), null); check.equals(session.getBattle(), null);

View file

@ -94,8 +94,7 @@ module TK.SpaceTac {
*/ */
setCampaignFleet(fleet: Fleet | null = null, story = true) { setCampaignFleet(fleet: Fleet | null = null, story = true) {
if (fleet) { if (fleet) {
this.player.fleet = fleet; this.player.setFleet(fleet);
fleet.setPlayer(this.player);
} else { } else {
let fleet_generator = new FleetGenerator(); let fleet_generator = new FleetGenerator();
this.player.fleet = fleet_generator.generate(1, this.player, 2); this.player.fleet = fleet_generator.generate(1, this.player, 2);
@ -112,10 +111,11 @@ module TK.SpaceTac {
* Start a new "quick battle" game * Start a new "quick battle" game
*/ */
startQuickBattle(with_ai: boolean = false): void { startQuickBattle(with_ai: boolean = false): void {
this.player = new Player();
this.universe = new Universe(); this.universe = new Universe();
let battle = Battle.newQuickRandom(true, RandomGenerator.global.randInt(1, 10)); let battle = Battle.newQuickRandom(true, RandomGenerator.global.randInt(1, 10));
battle.fleets[0].setPlayer(this.player); this.player.setFleet(battle.fleets[0]);
this.player.setBattle(battle); this.player.setBattle(battle);
this.reactions = new PersonalityReactions(); this.reactions = new PersonalityReactions();

View file

@ -32,6 +32,14 @@ module TK.SpaceTac {
return player; return player;
} }
/**
* Set the fleet for this player
*/
setFleet(fleet: Fleet): void {
this.fleet = fleet;
fleet.setPlayer(this);
}
/** /**
* Get a cheats object * Get a cheats object
*/ */