|
|
-
-
- // Class to load all game images in cache
- enyo.kind({
- name: "LcdDisplay",
- kind: enyo.Control,
- classes: "lcd-border",
- published: { size: 3, value: "" },
- components: [
- // Value
- {name: "digits", components: [
- ]},
-
- // Preload image
- {kind: "Image", id:"led_nums", src:"images/led_values.png", classes: "image-preload", showing: false }
- ],
-
- // Constructor
- create: function() {
- this.inherited(arguments);
-
- this.sizeChanged();
- this.valueChanged();
- },
-
- // Size changed, reinit
- sizeChanged: function() {
- // Resize
- var wsize = window.innerWidth;
- var digitwidth;
- var digitheight;
- var zoom;
- if (wsize <= 480) {
- digitwidth = 20;
- digitheight = 32;
- } else {
- digitwidth = 30;
- digitheight = 48;
- }
- this.applyStyle("width", (digitwidth*this.size)+"px");
- this.applyStyle("height", digitheight+"px");
-
- // Clean digits
- var items = [];
- enyo.forEach(this.$.digits.getControls(), function(item) { items.push(item); });
- for (var i = 0 ; i < items.length ; i++) { items[i].destroy(); };
-
- // Create digits
- for (var i = 0 ; i < this.size ; i++) {
- this.$.digits.createComponent({ classes: "lcd-num lcd-image-empty" }, {owner: this}).render();
- }
- },
-
- // Value changed
- valueChanged: function() {
- // Get digit value
- var getDigitValue = function(valueto, index) {
- if (index >= valueto.length)
- return '';
- return valueto[index];
- };
-
- // Get matching class for the digit
- var getMatchingClass = function(digit) {
- var prefix = "lcd-image-";
- if (digit >= '0' && digit <= '9')
- prefix += digit;
- else if (digit == '-')
- prefix += "dash";
- else
- prefix += "empty";
- return prefix;
- };
-
- // Align to number of digits to size
- var complete = this.size - this.value.length;
- for (var i = 0 ; i < complete ; i++)
- this.value = ' '+this.value;
-
- // Set each digit value using the right class
- var digits = this.$.digits.getControls();
- for (var i = 0 ; i < this.size ; i++) {
- var newdigit = getDigitValue(this.value, i);
- var classes = digits[i].getClassAttribute();
- digits[i].addRemoveClass(classes.substr(classes.indexOf("lcd-image-")), false);
- digits[i].addRemoveClass(getMatchingClass(newdigit), true);
- }
- }
- });
|