// // 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;