fix: kevin comments and victory ring animation

This commit is contained in:
Diego F. Goberna
2018-11-14 18:33:04 +01:00
parent 67a370d31f
commit c61ab2241c
5 changed files with 56 additions and 53 deletions

View File

@@ -1,16 +1,21 @@
AFRAME.registerComponent('text-counter', {
dependencies: ['text'],
schema: {
value: {default: 0.0, type: 'float'},
decimals: {default: 0},
dur: {default: 2000, type: 'int'},
emit: {default: false},
prefix: {default: ''},
suffix: {default: ''},
decimals: {default: 0}
value: {default: 0.0, type: 'float'}
},
init: function () {
this.startTime = null;
this.currentValue = -1;
this.currentValue = 0;
this.textValue = {value : ''};
this.victoryInfoRank = document.getElementById('victoryInfoRank');
this.victoryButtons = document.getElementById('victoryButtons');
},
decimals: function (n) {
@@ -20,27 +25,26 @@ AFRAME.registerComponent('text-counter', {
update: function (oldData) {
this.startTime = null;
this.currentValue = -1;
this.el.setAttribute('text', {
value: `${this.data.prefix} ${this.decimals(0)} ${this.data.suffix}`
});
this.currentValue = 0;
this.textValue.value = `${this.data.prefix} ${this.decimals(0)} ${this.data.suffix}`;
this.el.setAttribute('text', this.textValue);
},
tick: function (time) {
if (this.currentValue < this.data.value) {
if (this.startTime === null) { this.startTime = time};
const prevValue = Math.floor(this.currentValue);
this.currentValue = this.data.value * (time - this.startTime) / this.data.dur;
if (Math.floor(this.currentValue) !== prevValue) {
if (this.currentValue >= this.data.value) {
this.currentValue = this.data.value;
document.getElementById('victoryInfoRank').emit('appear');
document.getElementById('victoryButtons').emit('appear');
}
this.el.setAttribute('text', {
value: `${this.data.prefix} ${this.decimals(this.currentValue)} ${this.data.suffix}`
});
if (this.currentValue >= this.data.value) { return; }
if (this.startTime === null) { this.startTime = time; return; };
const prevValue = Math.floor(this.currentValue);
this.currentValue = this.data.value * (time - this.startTime) / this.data.dur;
if (Math.floor(this.currentValue) === prevValue) { return; }
if (this.currentValue >= this.data.value) {
this.currentValue = this.data.value;
if (this.data.emit) {
console.log(this.currentValue, this.data.value);
this.victoryInfoRank.emit('textcounterdone', null, false);
this.victoryButtons.emit('textcounterdone', null, false);
}
}
this.textValue.value = `${this.data.prefix} ${this.decimals(this.currentValue)} ${this.data.suffix}`;
this.el.setAttribute('text', this.textValue);
}
})

View File

@@ -10,7 +10,7 @@ AFRAME.registerComponent('victory-accuracy-ring', {
update: function () {
this.el.getObject3D('mesh').material.uniforms.progress.value = 0;
this.el.setAttribute('animation', 'to', this.data.accuracy);
this.el.setAttribute('animation', 'to', this.data.accuracy / 100);
this.el.components['animation'].beginAnimation();
}
});

View File

@@ -7,7 +7,7 @@ const SONG_NAME_TRUNCATE = 24;
const SONG_SUB_NAME_TRUNCATE = 32;
const DAMAGE_DECAY = 0.25;
const DAMAGE_MAX = 1000000;
const DAMAGE_MAX = 10;
const DEBUG_CHALLENGE = {
author: 'Superman',

View File

@@ -55,33 +55,6 @@
<a-entity mixin="gameMenuButtonText" text="value: EXIT TO MENU"></a-entity>
</a-entity>
<a-entity
id="victoryButtons"
visible="false"
animation="property: visible; from: false; to: true; delay: 1000; startEvents: appear">
<a-entity
id="victoryRestartButton"
mixin="gameMenuButton"
bind__visible="isVictory"
position="-0.56 -0.79 0.05"
bind-toggle__raycastable="isVictory"
proxy-event="event: click; to: a-scene; as: gamemenurestart">
<a-entity mixin="gameMenuButtonText" text="value: RESTART SONG"></a-entity>
</a-entity>
<a-entity
id="victoryExitButton"
mixin="gameMenuButton"
bind__visible="isVictory"
bind-toggle__raycastable="isVictory"
position="0.56 -0.79 0.05"
proxy-event="event: click; to: a-scene; as: gamemenuexit">
<a-entity mixin="gameMenuButtonText" text="value: EXIT TO MENU"></a-entity>
</a-entity>
</a-entity>
<!-- Song info. -->
<a-entity id="gameMenuSongInfoContainer" position="-1.64 -0.12 0.798" rotation="0 55 0">
<a-entity mixin="slice" slice9="width: 0.77; height: 0.72; padding: 0.04" position="0 0.25 -0.03"></a-entity>

View File

@@ -27,15 +27,15 @@
bind__victory-rank="rank: score.rank"
scale="0 0 0"
position="0 0.2 0.05"
animation__rotation="property: object3D.rotation.y; from: 0; to: -360; loop: true; easing: linear; dur: 5000; startEvents: appear"
animation__scale="property: scale; to: 1 1 1; loop: false; easing: easeOutQuad; dur: 300; startEvents: appear"
animation__rotation="property: object3D.rotation.y; from: 0; to: -360; loop: true; easing: linear; dur: 5000; startEvents: textcounterdone"
animation__scale="property: scale; from: 0 0 0; to: 1 1 1; loop: false; easing: easeOutQuad; dur: 300; startEvents: textcounterdone"
text="wrapCount: 2; align: center; baseline: top; width: 0.82; side: double"></a-entity>
<a-entity
id="victoryInfoAccuracy"
mixin="font"
text="align: center; color: #FAFAFA; wrapCount: 22; baseline: top; width: 0.81"
text-counter="suffix: %; decimals: 2"
text-counter="suffix: %; decimals: 2; emit: true"
bind__text-counter="value: score.accuracy"
position="0.45 0.75 0"></a-entity>
@@ -50,9 +50,35 @@
id="victoryInfoMaxCombo"
mixin="font"
text="align: center; color: #FAFAFA; wrapCount: 22; baseline: top; width: 1"
text-counter="prefix: MAX COMBO: ;"
text-counter="prefix: MAX COMBO: "
bind__text-counter="value: score.maxCombo"
position="0 -0.3 0"></a-entity>
<a-entity
id="victoryButtons"
animation="property: visible; from: false; to: true; delay: 1000; startEvents: textcounterdone"
position="0 0.2 0"
play-sound="event: mouseenter; sound: #hoverSound; volume: 0.03"
play-sound__click="event: click; sound: #confirmSound; volume: 0.25"
visible="false">
<a-entity
id="victoryRestartButton"
mixin="gameMenuButton"
position="-0.56 -0.79 0.05"
bind-toggle__raycastable="isVictory"
proxy-event="event: click; to: a-scene; as: gamemenurestart">
<a-entity mixin="gameMenuButtonText" text="value: RESTART SONG"></a-entity>
</a-entity>
<a-entity
id="victoryExitButton"
mixin="gameMenuButton"
bind-toggle__raycastable="isVictory"
position="0.56 -0.79 0.05"
proxy-event="event: click; to: a-scene; as: gamemenuexit">
<a-entity mixin="gameMenuButtonText" text="value: EXIT TO MENU"></a-entity>
</a-entity>
</a-entity>
</a-entity>
<a-timeline id="victoryTimeline">