finish keyboard pass

This commit is contained in:
Kevin Ngo
2018-07-20 15:42:47 +02:00
parent 86f0ad5641
commit 29523e290e
12 changed files with 211 additions and 152 deletions

View File

@@ -4,117 +4,66 @@ AFRAME.registerState({
initialState: {
challenge: {
id: AFRAME.utils.getUrlParameter('challenge'),
isLoading: false,
loadingText: ''
isLoading: false
},
discoLightsOn: true,
discotube: {speedX: -0.05, speedY: -0.1},
featuredPanelShowing: !hasInitialChallenge,
inVR: false,
isChallengeScreen: hasInitialChallenge,
isFeaturedScreen: !hasInitialChallenge,
isSearchScreen: false,
maxStreak: 0,
menuActive: true,
playButtonShowing: hasInitialChallenge,
playButtonText: 'Play',
score: 0,
scoreText: '',
screen: hasInitialChallenge ? 'challenge' : 'featured',
// screen: keep track of layers or depth. Like breadcrumbs.
screen: hasInitialChallenge ? 'challenge' : 'home',
screenHistory: [],
searchResults: [],
streak: 0
},
handlers: {
/**
* Update search results. Will automatically render using `bind-for` (menu.html).
*/
searchresults: function (state, payload) {
var i;
state.searchResults.length = 0;
for (i = 0; i < 6; i++) {
state.searchResults.push(payload.results[i]);
}
},
setscreen: function (state, payload) {
console.log('setscreen: ' + payload.screen);
if (state.screen === payload.screen) {
return;
}
switch (payload.screen) {
case 'challenge':
case 'featured':
case 'search':
state.screenHistory.push(state.screen);
state.screen = payload.screen;
break;
default:
console.log('Unknown screen set: ' + payload.screen);
}
},
popscreen: function (state, payload) {
var prevScreen = state.screenHistory.pop();
if (!prevScreen) {
return;
}
state.screen = prevScreen;
console.log('popscreen: ' + state.screen);
},
challengeloaded: function (state, payload) {
beatloaderfinish: function (state, payload) {
state.challenge.isLoading = false;
state.isLoadingFrames = false;
state.isLoadingPunches = false;
state.score = 0;
},
challengeloadstart: function (state, payload) {
beatloaderstart: function (state, payload) {
state.challenge.isLoading = true;
},
challengeloadingframes: function (state, payload) {
state.challenge.isLoadingPunches = false;
state.challenge.isLoadingFrames = true;
},
challengeloadingpunches: function (state, payload) {
state.challenge.isLoadingPunches = true;
state.challenge.isLoadingFrames = false;
},
challengeset: function (state, payload) {
state.challenge.id = payload.challengeId;
state.score = 0;
state.streak = 0;
state.maxStreak = 0;
state.menuActive = false;
this.setscreen(state, {screen: 'challenge'});
setScreen(state, 'challenge');
},
playbuttonclick: function (state) {
state.menuActive = false;
},
searchblur: function (state) {
this.popscreen(state);
},
searchfocus: function (state) {
this.setscreen(state, {screen: 'search'});
},
togglemenu: function (state) {
state.menuActive = !state.menuActive;
/**
* Update search results. Will automatically render using `bind-for` (menu.html).
*/
searchresults: function (state, payload) {
var i;
state.searchResults.length = 0;
for (i = 0; i < 6; i++) {
if (!payload.results[i]) { continue; }
state.searchResults.push(payload.results[i]);
}
state.searchResults.__dirty = true;
},
togglediscolights: function (state, payload) {
state.discoLightsOn = !state.discoLightsOn;
},
togglemenu: function (state) {
state.menuActive = !state.menuActive;
},
'enter-vr': function (state, payload) {
state.inVR = true;
},
@@ -126,16 +75,28 @@ AFRAME.registerState({
computeState: function (state) {
state.scoreText = `Streak: ${state.streak} / Max Streak: ${state.maxStreak} / Score: ${state.score}`;
state.isFeaturedScreen = state.screen === 'featured';
state.isSearchScreen = state.screen === 'search';
state.isChallengeScreen = state.screen === 'challenge';
state.featuredPanelShowing = state.isFeaturedScreen || (state.isChallengeScreen && state.menuActive);
if (state.challenge.isLoading) {
state.loadingText = 'Loading challenge...';
} else {
state.loadingText = '';
}
}
});
/**
* Push screen onto history and set to current.
*/
function setScreen (state, screen) {
if (state.screen === screen) { return; }
state.screenHistory.push(screen);
state.screen = screen;
}
/**
* Pop screen off history.
* Set new current screen if any.
*/
function popScreen (state) {
var prevScreen;
prevScreen = state.screenHistory.pop();
if (state.screenHistory.length === 0) {
state.screen = '';
return;
}
state.screen = state.screenHistory[state.screenHistory.length - 1];
}