define([ 'js/system/events' ], function ( events ) { var resources = { spriteNames: [ 'charas', 'tiles', 'walls', 'mobs', 'bosses', 'animBigObjects', 'bigObjects', 'objects', 'characters', 'attacks', 'ui', 'abilityIcons', 'uiIcons', 'items', 'materials', 'questItems', 'auras', 'sprites', 'animChar', 'animMob', 'animBoss', 'white', 'ray', 'images/skins/0001.png' ], sprites: {}, ready: false, init: function (list) { list.forEach(function (l) { this.spriteNames.push(l); }, this); this.spriteNames.forEach(function (s) { var sprite = { image: (new Image()), ready: false }; sprite.image.src = s.indexOf('png') > -1 ? s : 'images/' + s + '.png'; sprite.image.onload = this.onSprite.bind(this, sprite); this.sprites[s] = sprite; }, this); }, onSprite: function (sprite) { sprite.ready = true; var readyCount = 0; for (var s in this.sprites) { if (this.sprites[s].ready) readyCount++; } if (readyCount == this.spriteNames.length) this.onReady(); }, onReady: function () { this.ready = true; events.emit('onResourcesLoaded'); } }; return resources; });