@@ -64,9 +64,11 @@ AFRAME.registerComponent('song-controls', {
6464 } ,
6565
6666 play : function ( ) {
67- this . controls = document . getElementById ( 'controls' ) ;
67+ const controls = this . controls = document . getElementById ( 'controls' ) ;
6868 this . difficulty = document . getElementById ( 'controlsDifficulty' ) ;
6969 this . difficultyOptions = document . getElementById ( 'controlsDifficultyOptions' ) ;
70+ this . modeDropdownEl = document . getElementById ( 'controlsMode' ) ;
71+ this . modeOptionEls = document . getElementById ( 'controlsModes' ) ;
7072 this . playhead = document . getElementById ( 'playhead' ) ;
7173 const timeline = this . timeline = document . getElementById ( 'timeline' ) ;
7274 const timelineHover = this . timelineHover = document . getElementById ( 'timelineHover' ) ;
@@ -77,7 +79,7 @@ AFRAME.registerComponent('song-controls', {
7779 this . customDifficultyLabels = { } ;
7880
7981 // Show controls on load.
80- this . controls . classList . add ( 'challengeLoaded' ) ;
82+ controls . classList . add ( 'challengeLoaded' ) ;
8183
8284 // Update difficulty list.
8385 for ( let i = 0 ; i < this . difficultyOptions . children . length ; i ++ ) {
@@ -145,10 +147,10 @@ AFRAME.registerComponent('song-controls', {
145147
146148 // Difficulty dropdown.
147149 this . difficulty . addEventListener ( 'click' , ( ) => {
148- this . controls . classList . toggle ( 'difficultyOptionsActive' ) ;
150+ controls . classList . toggle ( 'difficultyOptionsActive' ) ;
149151 } ) ;
150152 this . el . sceneEl . addEventListener ( 'click' , evt => {
151- this . controls . classList . remove ( 'difficultyOptionsActive' ) ;
153+ controls . classList . remove ( 'difficultyOptionsActive' ) ;
152154 } ) ;
153155
154156 // Difficulty select.
@@ -157,7 +159,24 @@ AFRAME.registerComponent('song-controls', {
157159 this . playhead . style . width = '0%' ;
158160 this . el . sceneEl . emit ( 'difficultyselect' , evt . target . dataset . difficulty , false ) ;
159161 this . difficulty . innerHTML = evt . target . innerHTML ;
160- this . controls . classList . remove ( 'difficultyOptionsActive' ) ;
162+ controls . classList . remove ( 'difficultyOptionsActive' ) ;
163+ } ) ;
164+
165+ // Mode dropdown.
166+ this . modeDropdownEl . addEventListener ( 'click' , ( ) => {
167+ controls . classList . toggle ( 'modeOptionsActive' ) ;
168+ } ) ;
169+ this . el . sceneEl . addEventListener ( 'click' , evt => {
170+ controls . classList . remove ( 'modeOptionsActive' ) ;
171+ } ) ;
172+
173+ // Mode select.
174+ this . modeOptionEls . addEventListener ( 'click' , evt => {
175+ this . songProgress . innerHTML = formatSeconds ( 0 ) ;
176+ this . playhead . style . width = '0%' ;
177+ this . el . sceneEl . emit ( 'modeselect' , evt . target . dataset . mode , false ) ;
178+ this . modeDropdownEl . innerHTML = evt . target . innerHTML ;
179+ controls . classList . remove ( 'modeOptionsActive' ) ;
161180 } ) ;
162181
163182 // Hide volume if click anywhere.
0 commit comments