« get me outta code hell

Show target menu once queue is filled - csb-game - Pixelly spin-off of the Command Synergy Battle system used in Final Fantasy XIII
summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorrie <towerofnix@gmail.com>2018-08-12 13:38:32 -0300
committerFlorrie <towerofnix@gmail.com>2018-08-12 13:38:32 -0300
commit478adbfb07d3ab0fa28b8e437edf47e9174881c9 (patch)
tree69785a3145cd8774d15651d1bb7481d8664b36df
parent8709603a67edfdecb6713651beda37f7be8afcfd (diff)
Show target menu once queue is filled
-rw-r--r--index.js26
1 files changed, 18 insertions, 8 deletions
diff --git a/index.js b/index.js
index 42aed58..d02dcf6 100644
--- a/index.js
+++ b/index.js
@@ -290,7 +290,7 @@ class BaseBattleMenu {
 }
 
 class ActionMenu extends BaseBattleMenu {
-  constructor() {
+  constructor(battle) {
     super({options: [
       ['Fire', 'Fira', 'Firaga'],
       ['Blizz', 'Blizza', 'Blizzaga'],
@@ -300,6 +300,7 @@ class ActionMenu extends BaseBattleMenu {
       ['Stun', 'Stunra', 'Stunga']
     ].map(arr => ({levelTexts: arr}))})
 
+    this.battle = battle
     this.uiLevel = 1 // 1-3 -- which of "fire", "fira", "firaga" is selected.
   }
 
@@ -358,6 +359,10 @@ class ActionMenu extends BaseBattleMenu {
         label: option.levelTexts[effectiveLevel - 1],
         size: effectiveLevel
       })
+
+      if (effectiveLevel === remainingSpace) {
+        this.battle.showTargetMenu()
+      }
     } else {
       // TODO: Feedback
     }
@@ -365,12 +370,13 @@ class ActionMenu extends BaseBattleMenu {
 }
 
 class TargetMenu extends BaseBattleMenu {
-  constructor() {
+  constructor(battle) {
     super({options: []})
+    this.battle = battle
   }
 
-  buildOptions(battle) {
-    this.options = battle.playerCharacter.getValidOffenseTargets()
+  buildOptions() {
+    this.options = this.battle.playerCharacter.getValidOffenseTargets()
       .map(char => ({label: char.name, battleCharacter: char}))
   }
 }
@@ -495,7 +501,7 @@ class Battle {
 
     this.playerCharacter = this.teams[0].characters[0]
 
-    this.actionMenu = new ActionMenu()
+    this.actionMenu = new ActionMenu(this)
     this.targetMenu = new TargetMenu(this)
 
     this.backdrop = new Backdrop()
@@ -596,6 +602,12 @@ class Battle {
     }
   }
 
+  showTargetMenu() {
+    this.changeMenuAnim = {old: this.currentMenu, direction: 1, time: 1}
+    this.currentMenu = this.targetMenu
+    this.targetMenu.buildOptions()
+  }
+
   getAllBattleCharacters() {
     return this.teams.reduce((acc, team) => acc.concat(team.characters), [])
   }
@@ -706,9 +718,7 @@ canvas.addEventListener('keypress', evt => {
         atbBar.dequeue()
       } else if (evt.keyCode === 13 || evt.key.toLowerCase() === 'e') {
         if (battle.playerCharacter.atbBar.queuedActions.length) {
-          battle.currentMenu = targetMenu
-          battle.changeMenuAnim = {old: actionMenu, direction: 1, time: 1}
-          targetMenu.buildOptions(battle)
+          battle.showTargetMenu()
         }
       }
     } else if (currentMenu === targetMenu) {