Вход Регистрация
Файл: Space race/libs/Editor_files/gamecore.js
Строк: 98
<?php
/**
 * gamecore.js - Copyright 2012 Playcraft Labs, Inc. (see licence.txt)
 * gamecore.js
 * Namespace wrappers and the base class
 */

window.gamecore = {};
gamecore.Class = $.Class;

/**
 * @class gamecore.Base
 * A base class providing logging, object counting and unique object id's
 * Examples:
 *
 * Unique ID and total objects:
 * <code>
 * var Fighter = gamecore.Base.extend('Fighter', {}, {});
 * var fighter1 = new Fighter();
 * var fighter2 = new Fighter();
 * fighter1.uniqueId;    // -> 'Fighter:0'
 * fighter2.uniqueId;    // -> 'Fighter:1'
 * Fighter.totalObjects; // -> 2
 * </code>
 *
 * Logging: (log, info, warn, error, debug)
 * <code>
 * fighter1.warn('oops'); // == console.log('Fighter:0 [WARN] oops');
 */

gamecore.Base = gamecore.Class('gamecore.Base',
    
///
    /// STATIC
    ///
    
{
        
totalObjects: 0,
        
WARN: 'WARN',
        
DEBUG: 'DEBUG',
        
ERROR: 'ERROR',
        
INFO: 'INFO',

        
log: function(id, type, message)
        {
            var 
idString = '';
            if (
id) idString = ':'+id;
            
console.log(this.fullName + idString + ' [' + type + '] ' + message);
        },

        
warn: function (message)
        {
            
this.log(null, this.WARN, message);
        },

        
debug: function (message)
        {
            
this.log(null, this.DEBUG, message);
        },

        
error: function (message)
        {
            
this.log(null, this.ERROR, message);
        },

        
info: function (message)
        {
            
this.log(null, this.INFO, message);
        },

        
assert: function(msg, condition)
        {
            if (!
condition)
                throw 
msg;
        }

    },
    
///
    /// INSTANCE
    ///
    
{
        
objectId: 0,
        
uniqueId: null,

        
init: function()
        {
        },

        
setup: function()
        {
            
this.objectId = this.Class.totalObjects++;
            
this.uniqueId = this.Class.fullName + ':' + this.objectId;
        },

        
/**
         * @returns {String} A system-wide unique Id for this object instance
         */
        
getUniqueId: function()
        {
            
// if you see a null error here, then likely you have forgotten to call
            // this._super in a subclassed init method.
            
return this.uniqueId;
        },

        
/**
         * @returns {String} A hash matching this object. Override this to implement different
         * kinds of object hashing in derived classes.
         */
        
hashCode: function()
        {
            return 
this.getUniqueId();
        },

        
warn: function (message)
        {
            
this.Class.log(this.objectId, this.Class.WARN, message);
        },
        
debug: function (message)
        {
            
this.Class.log(this.objectId, this.Class.DEBUG, message);
        },
        
error: function (message)
        {
            
this.Class.log(this.objectId, this.Class.ERROR, message);
        },
        
info: function (message)
        {
            
this.Class.log(this.objectId, this.Class.INFO, message);
        },

        
toString: function()
        {
            return 
this.Class.fullName + ' [id: ' + this.objectId + ']';
        }
    });
?>
Онлайн: 0
Реклама