content/hifi-content/thoys/dev/2017/whackAMole/scoreBoard.js
2022-02-14 02:04:11 +01:00

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;