1
0
Fork 0

Renamed battle plan to turn plan

This commit is contained in:
Michaël Lemaire 2019-05-16 18:39:56 +02:00
parent cd1eaf0934
commit c3c88449fb
7 changed files with 45 additions and 45 deletions

View file

@ -1,9 +1,9 @@
module TK.SpaceTac.Specs { module TK.SpaceTac.Specs {
testing("BattlePlanning", test => { testing("TurnPlanning", test => {
test.case("initializes from a battle state", check => { test.case("initializes from a battle state", check => {
let battle = new Battle(); let battle = new Battle();
let planning = new BattlePlanning(battle); let planning = new TurnPlanning(battle);
check.equals(planning.getBattlePlan(), { check.equals(planning.getTurnPlan(), {
fleets: [ fleets: [
{ fleet: battle.fleets[0].id, ships: [] }, { fleet: battle.fleets[0].id, ships: [] },
{ fleet: battle.fleets[1].id, ships: [] }, { fleet: battle.fleets[1].id, ships: [] },
@ -11,8 +11,8 @@ module TK.SpaceTac.Specs {
}); });
battle.fleets[0].addShip(); battle.fleets[0].addShip();
planning = new BattlePlanning(battle); planning = new TurnPlanning(battle);
check.equals(planning.getBattlePlan(), { check.equals(planning.getTurnPlan(), {
fleets: [ fleets: [
{ {
fleet: battle.fleets[0].id, ships: [ fleet: battle.fleets[0].id, ships: [
@ -29,7 +29,7 @@ module TK.SpaceTac.Specs {
battle.fleets[0].addShip(); battle.fleets[0].addShip();
battle.fleets[1].addShip(); battle.fleets[1].addShip();
battle.fleets[1].addShip(); battle.fleets[1].addShip();
const planning = new BattlePlanning(battle); const planning = new TurnPlanning(battle);
check.equals(planning.getFleetPlan(battle.fleets[0]).fleet, battle.fleets[0].id); check.equals(planning.getFleetPlan(battle.fleets[0]).fleet, battle.fleets[0].id);
check.equals(planning.getFleetPlan(battle.fleets[1]).fleet, battle.fleets[1].id); check.equals(planning.getFleetPlan(battle.fleets[1]).fleet, battle.fleets[1].id);
@ -45,7 +45,7 @@ module TK.SpaceTac.Specs {
const battle = new Battle(); const battle = new Battle();
const ship = battle.fleets[0].addShip(); const ship = battle.fleets[0].addShip();
const action1 = ship.actions.addCustom(new BaseAction()); const action1 = ship.actions.addCustom(new BaseAction());
const planning = new BattlePlanning(battle); const planning = new TurnPlanning(battle);
check.equals(planning.getShipPlan(ship).actions, []); check.equals(planning.getShipPlan(ship).actions, []);
check.equals(planning.collectAllActions(), []); check.equals(planning.collectAllActions(), []);
@ -64,7 +64,7 @@ module TK.SpaceTac.Specs {
const ship = battle.fleets[0].addShip(); const ship = battle.fleets[0].addShip();
const action1 = ship.actions.addCustom(new BaseAction()); const action1 = ship.actions.addCustom(new BaseAction());
const action2 = ship.actions.addCustom(new BaseAction()); const action2 = ship.actions.addCustom(new BaseAction());
const planning = new BattlePlanning(battle); const planning = new TurnPlanning(battle);
check.equals(planning.getShipPlan(ship).actions, []); check.equals(planning.getShipPlan(ship).actions, []);
@ -93,7 +93,7 @@ module TK.SpaceTac.Specs {
const active2 = ship.actions.addCustom(new TriggerAction()); const active2 = ship.actions.addCustom(new TriggerAction());
const move1 = ship.actions.addCustom(new MoveAction()); const move1 = ship.actions.addCustom(new MoveAction());
const move2 = ship.actions.addCustom(new MoveAction()); const move2 = ship.actions.addCustom(new MoveAction());
const planning = new BattlePlanning(battle); const planning = new TurnPlanning(battle);
planning.addAction(ship, active1); planning.addAction(ship, active1);
check.equals(planning.getShipPlan(ship).actions, [ check.equals(planning.getShipPlan(ship).actions, [

View file

@ -1,9 +1,9 @@
namespace TK.SpaceTac { namespace TK.SpaceTac {
/** /**
* A tool to manipulate battle plans (action plans for all involved ships, for one turn) * A tool to manipulate the plans for a turn (action plans for all involved ships, for one turn)
*/ */
export class BattlePlanning { export class TurnPlanning {
private plan: BattlePlan private plan: TurnPlan
constructor(private battle: Battle, readonly player?: Player) { constructor(private battle: Battle, readonly player?: Player) {
this.plan = { this.plan = {
@ -17,7 +17,7 @@ namespace TK.SpaceTac {
}; };
} }
getBattlePlan(): BattlePlan { getTurnPlan(): TurnPlan {
return this.plan; return this.plan;
} }
@ -53,7 +53,7 @@ namespace TK.SpaceTac {
} }
} }
export type BattlePlan = { export type TurnPlan = {
fleets: FleetPlan[] fleets: FleetPlan[]
} }

View file

@ -9,7 +9,7 @@ module TK.SpaceTac.UI {
view: BattleView view: BattleView
// Display of battle plan // Display of battle plan
plandisplay: PlanDisplay plandisplay: TurnPlanDisplay
// Hint for weapon or move range // Hint for weapon or move range
range_hint: RangeHint range_hint: RangeHint
@ -61,7 +61,7 @@ module TK.SpaceTac.UI {
this.layer_weapon_effects = builder.container("effects"); this.layer_weapon_effects = builder.container("effects");
this.layer_targetting = builder.container("targetting"); this.layer_targetting = builder.container("targetting");
this.plandisplay = new PlanDisplay(this.layer_targetting.getBuilder()); this.plandisplay = new TurnPlanDisplay(this.layer_targetting.getBuilder());
this.range_hint.setLayer(this.layer_hints); this.range_hint.setLayer(this.layer_hints);
this.addShipSprites(); this.addShipSprites();
@ -280,9 +280,9 @@ module TK.SpaceTac.UI {
} }
/** /**
* Update the battle plan displayed * Update the turn plan displayed
*/ */
refreshPlanDisplay(plan?: BattlePlan): void { refreshPlanDisplay(plan?: TurnPlan): void {
this.plandisplay.update(plan || { fleets: [] }, this.getBattle()); this.plandisplay.update(plan || { fleets: [] }, this.getBattle());
} }

View file

@ -89,17 +89,17 @@ module TK.SpaceTac.UI.Specs {
test.case("adds player actions to plan", check => { test.case("adds player actions to plan", check => {
let battleview = testgame.view; let battleview = testgame.view;
let playing_ship = nn(battleview.battle.playing_ship); let playing_ship = nn(battleview.battle.playing_ship);
check.equals(battleview.plannings.length, 2); check.equals(battleview.turn_plannings.length, 2);
check.equals(battleview.plannings[0].collectAllActions(), []); check.equals(battleview.turn_plannings[0].collectAllActions(), []);
check.equals(battleview.plannings[1].collectAllActions(), []); check.equals(battleview.turn_plannings[1].collectAllActions(), []);
let action = nn(first(playing_ship.actions.listAll(), action => action instanceof MoveAction)); let action = nn(first(playing_ship.actions.listAll(), action => action instanceof MoveAction));
battleview.applyPlayerAction(action, Target.newFromLocation(0, 0)); battleview.applyPlayerAction(action, Target.newFromLocation(0, 0));
check.equals(battleview.plannings.length, 2); check.equals(battleview.turn_plannings.length, 2);
check.equals(battleview.plannings[0].collectAllActions(), [ check.equals(battleview.turn_plannings[0].collectAllActions(), [
{ action: action.id, category: action.getCategory(), target: Target.newFromLocation(0, 0) } { action: action.id, category: action.getCategory(), target: Target.newFromLocation(0, 0) }
]); ]);
check.equals(battleview.plannings[1].collectAllActions(), []); check.equals(battleview.turn_plannings[1].collectAllActions(), []);
}); });
}); });
} }

View file

@ -26,8 +26,8 @@ module TK.SpaceTac.UI {
// Multiplayer sharing // Multiplayer sharing
multi!: MultiBattle multi!: MultiBattle
// Battle planning for each fleets // Turn planning for each fleets
plannings: BattlePlanning[] = [] turn_plannings: TurnPlanning[] = []
// Layers // Layers
layer_background!: UIContainer layer_background!: UIContainer
@ -79,7 +79,7 @@ module TK.SpaceTac.UI {
this.player = data.player; this.player = data.player;
this.actual_battle = data.battle; this.actual_battle = data.battle;
this.battle = duplicate(data.battle, <any>TK.SpaceTac); this.battle = duplicate(data.battle, <any>TK.SpaceTac);
this.plannings = this.battle.fleets.map(fleet => new BattlePlanning(this.battle, fleet.player)); this.turn_plannings = this.battle.fleets.map(fleet => new TurnPlanning(this.battle, fleet.player));
this.ship_hovered = null; this.ship_hovered = null;
this.background = null; this.background = null;
this.multi = new MultiBattle(); this.multi = new MultiBattle();
@ -198,7 +198,7 @@ module TK.SpaceTac.UI {
return false; return false;
} }
this.plannings.forEach(planning => { this.turn_plannings.forEach(planning => {
if (this.action_bar.ship && this.player.is(planning.player)) { if (this.action_bar.ship && this.player.is(planning.player)) {
planning.addAction(this.action_bar.ship, action, target); planning.addAction(this.action_bar.ship, action, target);
} }
@ -213,9 +213,9 @@ module TK.SpaceTac.UI {
*/ */
planningsChanged(): void { planningsChanged(): void {
// By default, show the first plan matching the player // By default, show the first plan matching the player
const planning = first(this.plannings, planning => this.player.is(planning.player)); const planning = first(this.turn_plannings, planning => this.player.is(planning.player));
if (planning) { if (planning) {
this.arena.refreshPlanDisplay(planning.getBattlePlan()); this.arena.refreshPlanDisplay(planning.getTurnPlan());
} else { } else {
this.arena.refreshPlanDisplay(); this.arena.refreshPlanDisplay();
} }

View file

@ -1,8 +1,8 @@
module TK.SpaceTac.UI.Specs { module TK.SpaceTac.UI.Specs {
testing("PlanDisplay", test => { testing("TurnPlanDisplay", test => {
let testgame = setupEmptyView(test); let testgame = setupEmptyView(test);
function compareDisplay(check: TestContext, plan: BattlePlan, display: PlanDisplay): void { function compareDisplay(check: TestContext, plan: TurnPlan, display: TurnPlanDisplay): void {
const container = display.container; const container = display.container;
const children = cfilter(container.list, UIContainer); const children = cfilter(container.list, UIContainer);
check.equals(children.length, plan.fleets.length, "fleet containers count"); check.equals(children.length, plan.fleets.length, "fleet containers count");
@ -18,36 +18,36 @@ module TK.SpaceTac.UI.Specs {
}); });
} }
test.case("updates from a battle plan", check => { test.case("updates from a turn plan", check => {
let battle = new Battle(); let battle = new Battle();
battle.fleets[0].addShip(); battle.fleets[0].addShip();
battle.fleets[1].addShip(); battle.fleets[1].addShip();
battle.fleets[1].addShip(); battle.fleets[1].addShip();
const display = new PlanDisplay(testgame.view.getLayer("test").getBuilder()); const display = new TurnPlanDisplay(testgame.view.getLayer("test").getBuilder());
check.in("initial state", check => { check.in("initial state", check => {
compareDisplay(check, { fleets: [] }, display); compareDisplay(check, { fleets: [] }, display);
}); });
let planning = new BattlePlanning(battle); let planning = new TurnPlanning(battle);
display.update(planning.getBattlePlan()); display.update(planning.getTurnPlan());
check.in("initial update", check => { check.in("initial update", check => {
compareDisplay(check, planning.getBattlePlan(), display); compareDisplay(check, planning.getTurnPlan(), display);
}); });
display.update(planning.getBattlePlan()); display.update(planning.getTurnPlan());
check.in("no change", check => { check.in("no change", check => {
// TODO Check that no object was added/removed // TODO Check that no object was added/removed
compareDisplay(check, planning.getBattlePlan(), display); compareDisplay(check, planning.getTurnPlan(), display);
}); });
battle = new Battle(); battle = new Battle();
battle.fleets[0].addShip(); battle.fleets[0].addShip();
battle.fleets[1].addShip(); battle.fleets[1].addShip();
battle.fleets[1].addShip(); battle.fleets[1].addShip();
display.update(planning.getBattlePlan()); display.update(planning.getTurnPlan());
check.in("update whole", check => { check.in("update whole", check => {
compareDisplay(check, planning.getBattlePlan(), display); compareDisplay(check, planning.getTurnPlan(), display);
}); });
}); });
}); });

View file

@ -3,9 +3,9 @@ module TK.SpaceTac.UI {
const PLAN_COLOR_HL = 0xdde6f9 const PLAN_COLOR_HL = 0xdde6f9
/** /**
* Displays and maintain a battle plan * Displays and maintain a turn plan
*/ */
export class PlanDisplay { export class TurnPlanDisplay {
readonly container: UIContainer readonly container: UIContainer
private battle?: Battle private battle?: Battle
@ -13,12 +13,12 @@ module TK.SpaceTac.UI {
this.container = builder.container("battleplan"); this.container = builder.container("battleplan");
} }
update(plan: BattlePlan, battle?: Battle): void { update(plan: TurnPlan, battle?: Battle): void {
this.battle = battle; this.battle = battle;
this.updateBattle(plan, this.container); this.updateBattle(plan, this.container);
} }
private updateBattle(plan: BattlePlan, parent: UIContainer) { private updateBattle(plan: TurnPlan, parent: UIContainer) {
const builder = parent.getBuilder(); const builder = parent.getBuilder();
if (parent.list.length > plan.fleets.length) { if (parent.list.length > plan.fleets.length) {