From dcbfbca8915a5f209483402f30e1cf02c8a0c897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Tue, 28 Apr 2015 18:35:48 +0200 Subject: [PATCH] Added action points usage indication in action bar, while targetting --- TODO | 2 +- src/app/view/MainMenu.ts | 9 ++++++++- src/app/view/Preload.ts | 1 + src/app/view/battle/ActionBar.ts | 10 +++++++++- src/app/view/battle/ActionTooltip.ts | 2 +- src/app/view/common/ValueBar.ts | 2 +- src/assets/images/battle/actionpointspart.png | Bin 0 -> 15819 bytes 7 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 src/assets/images/battle/actionpointspart.png diff --git a/TODO b/TODO index e3fe40d..a5a0105 100644 --- a/TODO +++ b/TODO @@ -3,4 +3,4 @@ * Add retreat from battle * Refactor the tooltip system to use it more * Flash ship icons that receive damage -* Add an indicator for AP consumption in action bar \ No newline at end of file +* Add a ship model system \ No newline at end of file diff --git a/src/app/view/MainMenu.ts b/src/app/view/MainMenu.ts index 8eb64d5..78cb896 100644 --- a/src/app/view/MainMenu.ts +++ b/src/app/view/MainMenu.ts @@ -8,7 +8,14 @@ module SpaceTac.View { button_quick_battle: Phaser.Button; button_load_game: Phaser.Button; - preload() { + create() { + // Title + var text = new Phaser.Text(this.game, this.getMidWidth(), this.getHeight() * 0.4, "SpaceTac", + {align: "center", font: "bold 42px Arial", fill: "#4050f2"}); + text.anchor.set(0.5, 0.5); + this.add.existing(text); + + // Menu buttons var basex = this.getMidWidth(); var y = Math.floor(this.getHeight() * 0.6); var space = this.getWidth() * 0.2; diff --git a/src/app/view/Preload.ts b/src/app/view/Preload.ts index 4757bb2..a285a24 100644 --- a/src/app/view/Preload.ts +++ b/src/app/view/Preload.ts @@ -35,6 +35,7 @@ module SpaceTac.View { this.loadImage("battle/action-tooltip.png"); this.loadImage("battle/actionpointsempty.png"); this.loadImage("battle/actionpointsfull.png"); + this.loadImage("battle/actionpointspart.png"); this.loadImage("battle/arena/shipspritehover.png"); this.loadImage("battle/arena/shipspriteplaying.png"); this.loadImage("battle/actions/move.png"); diff --git a/src/app/view/battle/ActionBar.ts b/src/app/view/battle/ActionBar.ts index 6258552..d09e4c5 100644 --- a/src/app/view/battle/ActionBar.ts +++ b/src/app/view/battle/ActionBar.ts @@ -11,6 +11,7 @@ module SpaceTac.View { // Progress bar displaying action points actionpoints: ValueBar; + actionpointstemp: ValueBar; // Tooltip to display hovered action info tooltip: ActionTooltip; @@ -37,8 +38,11 @@ module SpaceTac.View { // Action points progress bar this.actionpoints = new ValueBar(this.game, 119, 76, "battle-actionpointsempty"); - this.actionpoints.setBarImage("battle-actionpointsfull"); + this.actionpoints.setBarImage("battle-actionpointspart"); this.addChild(this.actionpoints); + this.actionpointstemp = new ValueBar(this.game, 119, 76, "battle-actionpointsempty"); + this.actionpointstemp.setBarImage("battle-actionpointsfull"); + this.addChild(this.actionpointstemp); // Cancel button this.cancel = new Phaser.Button(this.game, 849, 8, "battle-actionbar-cancel", () => { @@ -77,9 +81,12 @@ module SpaceTac.View { updateActionPoints(): void { if (this.ship) { this.actionpoints.setValue(this.ship.ap_current.current, this.ship.ap_current.maximal); + this.actionpointstemp.setValue(this.ship.ap_current.current, this.ship.ap_current.maximal); this.actionpoints.visible = true; + this.actionpointstemp.visible = true; } else { this.actionpoints.visible = false; + this.actionpointstemp.visible = false; } } @@ -94,6 +101,7 @@ module SpaceTac.View { this.actions.forEach((icon: ActionIcon) => { icon.updateFadingStatus(remaining_ap); }); + this.actionpointstemp.setValue(remaining_ap, this.ship.ap_current.maximal); } // Set action icons from selected ship diff --git a/src/app/view/battle/ActionTooltip.ts b/src/app/view/battle/ActionTooltip.ts index a0a2b70..859ed67 100644 --- a/src/app/view/battle/ActionTooltip.ts +++ b/src/app/view/battle/ActionTooltip.ts @@ -17,7 +17,7 @@ module SpaceTac.View { // Set current action to display, null to hide setAction(action: ActionIcon): void { if (action) { - this.position.set(action.x, action.y + action.height); + this.position.set(action.x, action.y + action.height + action.bar.actionpoints.height); this.title.setText(action.action.code); Animation.fadeIn(this.game, this, 200); } else { diff --git a/src/app/view/common/ValueBar.ts b/src/app/view/common/ValueBar.ts index 6fd919c..0bb01e3 100644 --- a/src/app/view/common/ValueBar.ts +++ b/src/app/view/common/ValueBar.ts @@ -73,7 +73,7 @@ module SpaceTac.View { // Set current value setValue(current: number, maximal: number = -1) { - this.current = current; + this.current = current > 0 ? current : 0; if (maximal >= 0) { this.maximal = maximal; } diff --git a/src/assets/images/battle/actionpointspart.png b/src/assets/images/battle/actionpointspart.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5675fa6eb6936cac505959e20eb76d75e8dd0f GIT binary patch literal 15819 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 Vqs>Ju9xMO=002ovPDHLkV1mUTl*s@9 literal 0 HcmV?d00001