Renamed battle plan to turn plan
This commit is contained in:
parent
cd1eaf0934
commit
c3c88449fb
|
@ -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, [
|
|
@ -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[]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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(), []);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -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) {
|
Loading…
Reference in a new issue