js13kgames2017-muri/src/entity.js
2017-09-13 22:59:35 +02:00

54 lines
1.4 KiB
JavaScript

(function() {
var entity = {};
var allEntities = [];
entity.get = function(name) {
for (var i in allEntities)
if (allEntities[i].name === name)
return allEntities[i];
return false;
};
entity.create = function(name, sprite) {
var e = {
name: name,
sprite: sprite,
callbacks: [],
addCallback: function(callback) {
this.callbacks.push(callback);
return this;
},
invisible: false
};
allEntities.push(e);
return e;
};
entity.update = function() {
var clickedOnASprite = false;
allEntities.forEach(function(e) {
if (e.name.split('.')[0] !== muri.currentRoom) return;
e.sprite.update();
if (muri.get('mouse').clickedOn(e.sprite)) {
clickedOnASprite = true;
e.callbacks.forEach(function(c) {
c();
});
}
});
if (clickedOnASprite)
muri.get('mouse').releaseClick();
};
entity.render = function() {
allEntities.forEach(function(e) {
if (e.name.split('.')[0] === muri.currentRoom && !e.invisible)
e.sprite.render();
});
};
entity.name = 'entity';
muri.modules.push(entity);
}());