2017-01-11 17:31:21 +00:00
|
|
|
/// <reference path="../TestGame.ts"/>
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-24 22:23:22 +00:00
|
|
|
module TK.SpaceTac.UI.Specs {
|
2017-02-21 22:38:31 +00:00
|
|
|
describe("BattleView", function () {
|
|
|
|
let testgame = setupBattleview();
|
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
it("handles ship hovering to display tooltip", function () {
|
2017-02-21 22:38:31 +00:00
|
|
|
let battleview = testgame.battleview;
|
2017-09-19 15:09:06 +00:00
|
|
|
expect(battleview.ship_hovered).toBeNull("initial state");
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
let ship = nn(battleview.battle.playing_ship);
|
|
|
|
battleview.cursorHovered(ship.location, ship);
|
|
|
|
expect(battleview.ship_hovered).toBe(ship, "ship1 hovered");
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
ship = nn(battleview.battle.play_order[1]);
|
|
|
|
battleview.cursorHovered(ship.location, ship);
|
|
|
|
expect(battleview.ship_hovered).toBe(ship, "ship2 hovered");
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battleview.cursorHovered(new ArenaLocation(0, 0), null);
|
|
|
|
expect(battleview.ship_hovered).toBeNull("out");
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battleview.cursorOnShip(ship);
|
|
|
|
expect(battleview.ship_hovered).toBe(ship, "force on");
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battleview.cursorOffShip(battleview.battle.play_order[2]);
|
|
|
|
expect(battleview.ship_hovered).toBe(ship, "force off on wrong ship");
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battleview.cursorOffShip(ship);
|
|
|
|
expect(battleview.ship_hovered).toBeNull("force off");
|
|
|
|
});
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
it("forwards cursor hovering and click to targetting", function () {
|
|
|
|
let battleview = testgame.battleview;
|
|
|
|
expect(battleview.targetting.active).toBe(false);
|
|
|
|
battleview.setInteractionEnabled(true);
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
let weapon = TestTools.addWeapon(nn(battleview.battle.playing_ship), 10);
|
|
|
|
battleview.enterTargettingMode(nn(weapon.action), ActionTargettingMode.SPACE);
|
|
|
|
expect(battleview.targetting.active).toBe(true);
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battleview.cursorHovered(new ArenaLocation(5, 8), null);
|
|
|
|
expect(battleview.targetting.target).toEqual(Target.newFromLocation(5, 8));
|
|
|
|
expect(battleview.ship_hovered).toBeNull();
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
let ship = battleview.battle.play_order[3];
|
|
|
|
battleview.cursorHovered(ship.location, ship);
|
|
|
|
expect(battleview.targetting.target).toEqual(Target.newFromLocation(ship.arena_x, ship.arena_y));
|
2017-10-01 21:08:43 +00:00
|
|
|
expect(battleview.ship_hovered).toBeNull();
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
spyOn(battleview.targetting, "validate").and.stub();
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
expect(battleview.targetting.validate).toHaveBeenCalledTimes(0);
|
2015-01-08 00:00:00 +00:00
|
|
|
battleview.cursorClicked();
|
2017-09-19 15:09:06 +00:00
|
|
|
expect(battleview.targetting.validate).toHaveBeenCalledTimes(1);
|
2015-01-08 00:00:00 +00:00
|
|
|
|
|
|
|
battleview.exitTargettingMode();
|
2017-06-21 23:32:18 +00:00
|
|
|
expect(battleview.targetting.active).toBe(false);
|
2015-01-08 00:00:00 +00:00
|
|
|
|
2017-09-19 15:09:06 +00:00
|
|
|
battleview.cursorHovered(new ArenaLocation(5, 8), null);
|
|
|
|
expect(battleview.targetting.target).toBeNull();
|
2017-10-01 21:08:43 +00:00
|
|
|
expect(battleview.ship_hovered).toBeNull();
|
|
|
|
|
|
|
|
battleview.cursorHovered(ship.location, ship);
|
|
|
|
expect(battleview.targetting.target).toBeNull();
|
|
|
|
expect(battleview.ship_hovered).toBe(ship);
|
2015-01-08 00:00:00 +00:00
|
|
|
});
|
2017-09-13 22:26:14 +00:00
|
|
|
|
|
|
|
it("allows to choose an action and a target with shortcut keys", function () {
|
|
|
|
let battleview = testgame.battleview;
|
|
|
|
battleview.setInteractionEnabled(true);
|
2017-09-19 15:09:06 +00:00
|
|
|
let action_icon = battleview.action_bar.action_icons[0];
|
2017-09-13 22:26:14 +00:00
|
|
|
|
|
|
|
expect(battleview.targetting.active).toBe(false);
|
|
|
|
expect(battleview.action_bar.hasActionSelected()).toBe(false);
|
|
|
|
battleview.numberPressed(battleview.action_bar.action_icons.indexOf(action_icon) + 1);
|
|
|
|
expect(battleview.action_bar.hasActionSelected()).toBe(true);
|
|
|
|
expect(battleview.targetting.active).toBe(true);
|
|
|
|
expect(battleview.targetting.action).toBe(action_icon.action);
|
2017-09-19 15:09:06 +00:00
|
|
|
expect(battleview.targetting.target).toEqual(action_icon.action.getDefaultTarget(action_icon.ship));
|
2017-09-13 22:26:14 +00:00
|
|
|
battleview.numberPressed(3);
|
|
|
|
expect(battleview.targetting.active).toBe(true);
|
|
|
|
expect(battleview.targetting.action).toBe(action_icon.action);
|
|
|
|
expect(battleview.targetting.target).toEqual(Target.newFromShip(battleview.battle.play_order[3]));
|
|
|
|
battleview.numberPressed(4);
|
|
|
|
expect(battleview.targetting.active).toBe(true);
|
|
|
|
expect(battleview.targetting.action).toBe(action_icon.action);
|
|
|
|
expect(battleview.targetting.target).toEqual(Target.newFromShip(battleview.battle.play_order[4]));
|
|
|
|
});
|
2015-01-08 00:00:00 +00:00
|
|
|
});
|
|
|
|
}
|