From 8c8c2ab56c33846591004e72fc1c881504a47086 Mon Sep 17 00:00:00 2001 From: Diego Marcos Date: Thu, 8 Nov 2018 16:52:57 -0800 Subject: [PATCH] Configure complete beat wave on gameplay debug UI --- src/components/debug-beat-loader.js | 87 ++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 26 deletions(-) diff --git a/src/components/debug-beat-loader.js b/src/components/debug-beat-loader.js index c28a94d..4e69947 100644 --- a/src/components/debug-beat-loader.js +++ b/src/components/debug-beat-loader.js @@ -15,6 +15,8 @@ AFRAME.registerComponent('debug-beat-loader', { orientation: 'up' }; + this.beats = {}; + this.onKeyDown = this.onKeyDown.bind(this); if (this.data.stageEnabled || AFRAME.utils.getUrlParameter('debugstage')) { @@ -28,6 +30,31 @@ AFRAME.registerComponent('debug-beat-loader', { } }, + spawn: function () { + var self = this; + Object.keys(this.beats).forEach(function (key) { + self.generateBeat(self.beats[key]); + }); + }, + + generateBeat: function (beatInfo) { + var type; + if (beatInfo.type === 'mine') { + type = 3; + } else { + type = beatInfo.color === 'red' ? 0 : 1; + } + debugger; + this.beatLoader.generateBeat({ + _lineIndex: this.beatLoader.positionHumanized[beatInfo.position].index, + _lineLayer: this.beatLoader.positionHumanized[beatInfo.position].layer, + _cutDirection: beatInfo.type === 'dot' + ? 8 + : this.beatLoader.orientationsHumanized.indexOf(beatInfo.orientation), + _type: type + }); + }, + /** * Debug generate beats. */ @@ -35,13 +62,7 @@ AFRAME.registerComponent('debug-beat-loader', { const keyCode = event.keyCode; switch (keyCode) { case 32: { // Space bar. - this.beatLoader.generateBeat({ - _lineIndex: this.beatLoader.positionHumanized[this.selectedBeat.position].index, - _lineLayer: this.beatLoader.positionHumanized[this.selectedBeat.position].layer, - _cutDirection: this.selectedBeat.type === 'dot' - ? 8 - : this.beatLoader.orientationsHumanized.indexOf(this.selectedBeat.orientation), - _type: type }); + this.spawn(); break; } } @@ -62,7 +83,10 @@ AFRAME.registerComponent('debug-beat-loader', { addTypeBeatMenu(); addColorBeatMenu(); addOrientationMenu(); + + setBeatButton(); addBeatPositionMenu(); + addGenerateButton(); function addOrientationMenu () { @@ -123,10 +147,11 @@ AFRAME.registerComponent('debug-beat-loader', { const buttons = div.parentElement.querySelectorAll('.button'); for (let i = 0; i < buttons.length; i++) { buttons[i].style.background = '#000'; } div.style.background = '#66f'; - self.selectedBeat[div.parentElement.id] = div.innerHTML; + self.selectedBeat[div.parentElement.id] = this.id; + self['selected' + div.parentElement.id.charAt(0).toUpperCase() + div.parentElement.id.slice(1) + 'El'] = this; }; div.classList.add('button'); - div.id = 'button' + text; + div.id = text; div.style.width = '100px'; div.style.height = '30px'; div.style.background = '#000'; @@ -146,24 +171,34 @@ AFRAME.registerComponent('debug-beat-loader', { }; function addGenerateButton (text, containerEl) { - const buttonEl = addButton('Spawn Beat (Space Bar)', parentDiv, () => { - var type; - if (self.selectedBeat.type === 'mine') { - type = 3; - } else { - type = self.selectedBeat.color === 'red' ? 0 : 1; - } - self.beatLoader.generateBeat({ - _lineIndex: self.beatLoader.positionHumanized[self.selectedBeat.position].index, - _lineLayer: self.beatLoader.positionHumanized[self.selectedBeat.position].layer, - _cutDirection: self.selectedBeat.type === 'dot' - ? 8 - : self.beatLoader.orientationsHumanized.indexOf(self.selectedBeat.orientation), - _type: type - }); - }); - buttonEl.style.width = '440px'; + const buttonEl = addButton('Spawn (Space Bar)', parentDiv, () => { self.spawn(); }); + buttonEl.style.width = '460px'; + buttonEl.style.bottomMargin = '10px' } + + function setBeatButton(text, containerEl) { + var buttonEl = addButton('Set Beat', parentDiv, function () { + var color = self.selectedBeat.type !== 'mine' ? ' ' + self.selectedBeat.color : ''; + var orientation = self.selectedBeat.type !== 'arrow' ? '' : ' ' + self.selectedBeat.orientation; + self.selectedBeat = { + position: self.selectedBeat.position, + type: self.selectedBeat.type, + orientation: self.selectedBeat.orientation, + color: self.selectedBeat.color + }; + if (!self.selectedPositionEl) { return; } + debugger; + self.selectedPositionEl.innerHTML = self.selectedBeat.type + color + orientation; + self.beats[self.selectedPositionEl.id] = { + position: self.selectedBeat.position, + type: self.selectedBeat.type, + orientation: self.selectedBeat.orientation, + color: self.selectedBeat.color + }; + }); + buttonEl.style.width = '460px'; + buttonEl.style.bottomMargin = '10px' + }; }, addDebugStageControls: function () {