Refactoring of some View code
This commit is contained in:
parent
4a5f975d25
commit
6a30e1a045
|
@ -27,7 +27,7 @@ module SpaceTac.View {
|
||||||
ship_hovered: Game.Ship;
|
ship_hovered: Game.Ship;
|
||||||
|
|
||||||
// Subscription to the battle log
|
// Subscription to the battle log
|
||||||
log_subscription: any;
|
log_processor: LogProcessor;
|
||||||
|
|
||||||
// Init the view, binding it to a specific battle
|
// Init the view, binding it to a specific battle
|
||||||
init(player, battle) {
|
init(player, battle) {
|
||||||
|
@ -35,7 +35,7 @@ module SpaceTac.View {
|
||||||
this.battle = battle;
|
this.battle = battle;
|
||||||
this.targetting = null;
|
this.targetting = null;
|
||||||
this.ship_hovered = null;
|
this.ship_hovered = null;
|
||||||
this.log_subscription = null;
|
this.log_processor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create view graphics
|
// Create view graphics
|
||||||
|
@ -67,18 +67,15 @@ module SpaceTac.View {
|
||||||
new ShipArenaSprite(battleview, ship);
|
new ShipArenaSprite(battleview, ship);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Subscribe to log events
|
// Start processing the battle log
|
||||||
this.battle.log.subscribe((event) => {
|
this.log_processor = new LogProcessor(this);
|
||||||
battleview.processBattleEvent(event);
|
|
||||||
});
|
|
||||||
this.battle.injectInitialEvents();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Leaving the view, we unbind the battle
|
// Leaving the view, we unbind the battle
|
||||||
shutdown() {
|
shutdown() {
|
||||||
if (this.log_subscription) {
|
if (this.log_processor) {
|
||||||
this.battle.log.unsubscribe(this.log_subscription);
|
this.log_processor.destroy();
|
||||||
this.log_subscription = null;
|
this.log_processor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.ui) {
|
if (this.ui) {
|
||||||
|
@ -104,15 +101,6 @@ module SpaceTac.View {
|
||||||
this.battle = null;
|
this.battle = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process a BaseLogEvent
|
|
||||||
processBattleEvent(event: Game.BaseLogEvent) {
|
|
||||||
console.log("Battle event", event);
|
|
||||||
if (event.code == "ship_change") {
|
|
||||||
// Playing ship changed
|
|
||||||
this.card_playing.setShip(event.target.ship);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Method called when cursor starts hovering over a ship (or its icon)
|
// Method called when cursor starts hovering over a ship (or its icon)
|
||||||
cursorOnShip(ship: Game.Ship): void {
|
cursorOnShip(ship: Game.Ship): void {
|
||||||
this.setShipHovered(ship);
|
this.setShipHovered(ship);
|
46
src/scripts/view/battle/LogProcessor.ts
Normal file
46
src/scripts/view/battle/LogProcessor.ts
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
module SpaceTac.View {
|
||||||
|
// Processor of battle log events
|
||||||
|
// This will process incoming battle events, and update the battleview accordingly
|
||||||
|
export class LogProcessor {
|
||||||
|
// Link to the battle view
|
||||||
|
private view: BattleView;
|
||||||
|
|
||||||
|
// Link to the battle
|
||||||
|
private battle: Game.Battle;
|
||||||
|
|
||||||
|
// Link to the battle log
|
||||||
|
private log: Game.BattleLog;
|
||||||
|
|
||||||
|
// Subscription identifier
|
||||||
|
private subscription: any;
|
||||||
|
|
||||||
|
// Create a log processor, linked to a battleview
|
||||||
|
constructor(view: BattleView) {
|
||||||
|
this.view = view;
|
||||||
|
this.battle = view.battle;
|
||||||
|
this.log = view.battle.log;
|
||||||
|
|
||||||
|
this.subscription = this.log.subscribe((event) => {
|
||||||
|
this.processBattleEvent(event);
|
||||||
|
});
|
||||||
|
this.battle.injectInitialEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Process a BaseLogEvent
|
||||||
|
processBattleEvent(event: Game.BaseLogEvent) {
|
||||||
|
console.log("Battle event", event);
|
||||||
|
if (event.code == "ship_change") {
|
||||||
|
// Playing ship changed
|
||||||
|
this.view.card_playing.setShip(event.target.ship);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destroy the log processor
|
||||||
|
destroy() {
|
||||||
|
if (this.subscription) {
|
||||||
|
this.log.unsubscribe(this.subscription);
|
||||||
|
this.subscription = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue