API Docs for: 1.1.0
Show:

File: src\hud\HUDDisplay.ts

/**
* 
* @module Kiwi
* @submodule HUD
*
*/

module Kiwi.HUD {

    /**
    * A HUDDisplay is a container for which you can add/removes widget on, and is more used to manage the widgets that are being displayed on it.
    * A HUDDisplay is created through a games HUDManager and is NOT directly instantiated.
    * Each game can contain multiple HUDDisplay's and each HUDDisplay can contain multiple HUDWidgets.
    *
    * @class HUDDisplay
    * @namespace Kiwi.HUD
    * @constructor
    * @param game {Kiwi.Game} The game that this HUD Display belongs to. 
    * @param name {string} The name of this display.
    * @return HUDDisplay
    */
    export class HUDDisplay {
        
        constructor(game: Kiwi.Game,name:string) {
            this._game = game;
            this.name = name;
            this._manager = this._game.huds;
            this._device = this._game.deviceTargetOption;

            if (this._manager.supported) {

                switch (this._device) {
                    case Kiwi.TARGET_BROWSER:
                        this.container = <HTMLDivElement>document.createElement("div");
                        this.container.id = "HUD-layer-" + game.rnd.uuid();
                        this.container.style.width = "100%";
                        this.container.style.height = "100%";
                        this.container.style.position = "absolute";
                        this._widgets = new Array();

                        break;
                }

                this.class = 'kiwi-display';
            }
        }

        /**
        * Returns the type of object that this is.
        * @method objType
        * @return {String} "HUDDisplay"
        * @public
        */
        public objType():string {
            return 'HUDDisplay';
        }

        /**
        * The type of device that is being targeted for the game. This is the same as games deviceTargetOption 
        * Needed as the type of device will detiremine how the items will be added to game or whether it will even work.
        * 
        * @property _device
        * @type number
        * @private
        */
        private _device: number;

        /**
        * The HUD Manager that this Display belongs to. 
        * @property _manager
        * @type Kiwi.HUD.HUDManager
        * @private
        */
        private _manager: Kiwi.HUD.HUDManager;

        /**
        * Holds the container HTMLDivElement.
        * @property container
        * @type HTMLDivElement
        * @public
        */
        public container: HTMLDivElement;

        /**
        * The name of this HUD Display. 
        * @property name
        * @type String
        * @public
        */
        public name: string;
        
        /**
        * The game that this HUD Display is on.
        * @property _game
        * @type Kiwi.Game
        * @private
        */
        private _game: Kiwi.Game;

        /**
        * Contains a list of the widgets that are contained in this HUDDisplay. Each member is of the type Kiwi.HUD.HUDWidget.
        * @property _widgets
        * @type Array
        * @private
        */
        private _widgets: Kiwi.HUD.HUDWidget[];

        /**
        * Adds a widget to the HUDDisplay. Returns a boolean as an indication of whether or not it was successful.
        *
        * @method addWidget
        * @param widget {Kiwi.HUD.HUDWidget}  The widget to be added to the Display
        * @return {Boolean} If it was successful or not.
        * @public
        */
        public addWidget(widget: Kiwi.HUD.HUDWidget):boolean {
            if (this._manager.supported) {
                this._widgets.push(widget);
                
                if (this._device == Kiwi.TARGET_BROWSER) {
                    this.container.appendChild(widget.container);
                    return true;
                }
            }
            return false;
        }

        /**
        * Removes a singular widget from the display. Returns a boolean as an indication of if anything happened or not.
        * 
        * @method removeWidget
        * @param widget {Kiwi.HUD.HUDWidget} The widget to be removed.
        * @return {boolean} If it was successful or not.
        * @public
        */
        public removeWidget(widget: Kiwi.HUD.HUDWidget):boolean {
            if (this._manager.supported) {
                
                if (this.removeFromContainer(widget)) {

                    var i = this._widgets.indexOf(widget);

                    if (i !== -1) {
                        this._widgets.splice(i, 1);
                        return true;
                    }
                }

            }
            return false;
        }

        /**
        * Removes all of the widgets on this display.
        * @method removeAllWidgets
        * @public
        */
        public removeAllWidgets() {
            for (var i = 0; i < this._widgets.length; i++) {
                this.removeFromContainer(this._widgets[i]);
            }

            this._widgets = [];
        }

        /**
        * Removes a widget from on the HUDDisplay. 
        * @method removeFromContainer
        * @param widget {Kiwi.HUD.HUDWidget} The Widget to be removed.
        * @returns {boolean}
        */
        private removeFromContainer(widget:Kiwi.HUD.HUDWidget):boolean {
            if (this._manager.supported) {
                if(this._device == Kiwi.TARGET_BROWSER) {

                    if (this.container.contains(widget.container)) {
                        this.container.removeChild(widget.container);
                        return true;
                    }

                }
            }
            return false;
        }

        /**
        * Update loop.
        * @method update
        * @public
        */
        public update() {
            for (var i = 0; i < this._widgets.length; i++) {
                this._widgets[i].update();
            }
        }

        /**
        * Shows displays the HUD Display on screen.
        * @method show
        * @public
        */
        public show() {
            this.container.style.display = 'block';
        }

        /**
        * Hides the current HUD Display from the screen.
        * @method hide
        * @public
        */
        public hide() {
            this.container.style.display = 'none';
        }

        /**
        * The class name that the container element that this HUDWidget current has.
        * @property class
        * @type {String} 
        * @public
        */
        public set class(cssClass: string) {
            if (this._device == Kiwi.TARGET_BROWSER) {
                this.container.className = cssClass;
            }
        }
        public get class(): string {
            if (this._device == Kiwi.TARGET_BROWSER) {
                return this.container.className;
            }
        }

    }
}