68 lines
2 KiB
JavaScript
68 lines
2 KiB
JavaScript
//
|
|
// whackAMole/scoreBoard.js
|
|
//
|
|
// Created by Thijs Wenker on 5/13/17.
|
|
// Copyright 2017 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
/* global module */
|
|
// @module mole
|
|
var constants = Script.require('./constants.js');
|
|
var helpers = Script.require('./helpers.js');
|
|
|
|
// Frame numbers for animation
|
|
var LOOP_START = 0;
|
|
var LOOP_END = 10;
|
|
|
|
var EMPTY_FRAME = 0;
|
|
var ZERO_OFFSET_FRAME = 1;
|
|
var NUMBER_BASE = 10;
|
|
|
|
var ScoreBoard = function(entityIDs) {
|
|
this.entityIDs = entityIDs;
|
|
};
|
|
|
|
ScoreBoard.prototype = {
|
|
entityIDs: null,
|
|
_animate: function(entityID, firstFrame, lastFrame, loop) {
|
|
var animation = Entities.getEntityProperties(entityID, 'animation').animation;
|
|
var entityProperties = {
|
|
animation: {
|
|
currentFrame: firstFrame,
|
|
firstFrame: firstFrame,
|
|
lastFrame: lastFrame,
|
|
running: true,
|
|
url: animation.url,
|
|
loop: loop
|
|
}
|
|
};
|
|
Entities.editEntity(entityID, entityProperties);
|
|
},
|
|
reset: function() {
|
|
this.loopDigits();
|
|
},
|
|
loopDigits: function() {
|
|
for (var i = 0; i < this.entityIDs.length; i++) {
|
|
this._animate(this.entityIDs[i], LOOP_START, LOOP_END, true);
|
|
}
|
|
},
|
|
setScore: function(score) {
|
|
var remainder = score;
|
|
var lastIndex = this.entityIDs.length - 1;
|
|
for (var i = lastIndex; i >= 0; i--) {
|
|
var digitFrame;
|
|
if (remainder > 0 || i === lastIndex) {
|
|
digitFrame = ZERO_OFFSET_FRAME + Math.floor(remainder % NUMBER_BASE);
|
|
} else {
|
|
digitFrame = EMPTY_FRAME;
|
|
}
|
|
this._animate(this.entityIDs[i], digitFrame, digitFrame, true);
|
|
remainder = Math.floor(remainder / NUMBER_BASE);
|
|
}
|
|
}
|
|
};
|
|
|
|
module.exports = ScoreBoard;
|