1
0
Fork 0
spacetac/src/app/view/battle/ShipListItem.ts

116 lines
3.9 KiB
TypeScript
Raw Normal View History

module SpaceTac.View {
2015-01-07 00:00:00 +00:00
"use strict";
// One item in a ship list (used in BattleView)
export class ShipListItem extends Phaser.Button {
2014-12-31 00:00:00 +00:00
// Reference to the ship game object
ship: Game.Ship;
// Hull display
hull: ValueBar;
// Shield display
shield: ValueBar;
2014-12-31 00:00:00 +00:00
// Action points display
ap: ValueBar;
2015-02-04 00:00:00 +00:00
// Portrait
layer_portrait: Phaser.Image;
2015-02-04 00:00:00 +00:00
// Hover indicator
layer_hover: Phaser.Image;
2015-02-03 00:00:00 +00:00
// Playing indicator
layer_playing: Phaser.Image;
// Non-playing indicator
layer_normal: Phaser.Image;
// Enemy indicator
layer_enemy: Phaser.Image;
// Active effects group
active_effects: Phaser.Group;
// Create a ship button for the battle ship list
constructor(list: ShipList, x: number, y: number, ship: Game.Ship, owned: boolean) {
2014-12-31 00:00:00 +00:00
this.ship = ship;
2015-02-03 00:00:00 +00:00
super(list.battleview.game, x, y, "battle-shiplist-base");
2014-12-31 00:00:00 +00:00
this.input.useHandCursor = true;
2014-12-31 00:00:00 +00:00
this.onInputOver.add(() => {
list.battleview.cursorOnShip(ship);
2014-12-31 00:00:00 +00:00
});
this.onInputOut.add(() => {
list.battleview.cursorOffShip(ship);
2014-12-31 00:00:00 +00:00
});
2015-02-03 00:00:00 +00:00
this.layer_playing = new Phaser.Image(this.game, 0, 0, "battle-shiplist-playing", 0);
this.layer_playing.alpha = 0;
this.addChild(this.layer_playing);
2015-02-04 00:00:00 +00:00
this.layer_portrait = new Phaser.Image(this.game, 14, 15, "ship-scout-portrait", 0);
this.addChild(this.layer_portrait);
2015-02-03 00:00:00 +00:00
this.layer_normal = new Phaser.Image(this.game, 0, 0, "battle-shiplist-normal", 0);
this.addChild(this.layer_normal);
this.layer_enemy = new Phaser.Image(this.game, 0, 0, owned ? "battle-shiplist-own" : "battle-shiplist-enemy", 0);
this.addChild(this.layer_enemy);
this.layer_hover = new Phaser.Image(this.game, 14, 14, "battle-arena-shipspritehover", 0);
2015-02-04 00:00:00 +00:00
this.layer_hover.visible = false;
this.addChild(this.layer_hover);
this.hull = ValueBar.newStyled(list.battleview.game, "battle-shiplist-hull", 76, 26);
this.addChild(this.hull);
this.shield = ValueBar.newStyled(list.battleview.game, "battle-shiplist-shield", 76, 44);
this.addChild(this.shield);
this.active_effects = new Phaser.Group(this.game);
this.addChild(this.active_effects);
this.updateAttributes();
this.updateEffects();
}
// Update attributes from associated ship
updateAttributes() {
this.attributeChanged(this.ship.hull);
this.attributeChanged(this.ship.shield);
}
// Update effects applied on the ship
updateEffects() {
this.active_effects.removeAll(true);
this.ship.temporary_effects.forEach((effect: Game.TemporaryEffect) => {
var icon = new EffectDisplay(this.game, effect);
this.active_effects.addChild(icon);
});
}
// Called when an attribute for this ship changed through the battle log
attributeChanged(attribute: Game.Attribute): void {
if (attribute.code === Game.AttributeCode.Hull) {
this.hull.setValue(attribute.current, attribute.maximal);
} else if (attribute.code === Game.AttributeCode.Shield) {
this.shield.setValue(attribute.current, attribute.maximal);
}
}
2015-02-03 00:00:00 +00:00
// Set the playing status
setPlaying(playing: boolean) {
Animation.setVisibility(this.game, this.layer_playing, playing, 500);
Animation.setVisibility(this.game, this.layer_normal, !playing, 500);
2015-02-03 00:00:00 +00:00
}
2015-02-04 00:00:00 +00:00
// Set the hovered status
setHovered(hovered: boolean) {
Animation.setVisibility(this.game, this.layer_hover, hovered, 200);
2015-02-04 00:00:00 +00:00
}
}
2015-01-07 00:00:00 +00:00
}