2017-08-28 21:29:27 +02:00
|
|
|
(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) {
|
2017-09-12 00:33:44 +02:00
|
|
|
var e = {
|
2017-08-28 21:29:27 +02:00
|
|
|
name: name,
|
|
|
|
sprite: sprite,
|
2017-09-12 00:33:44 +02:00
|
|
|
callbacks: [],
|
2017-08-28 21:29:27 +02:00
|
|
|
addCallback: function(callback) {
|
2017-09-12 00:33:44 +02:00
|
|
|
this.callbacks.push(callback);
|
2017-08-28 21:29:27 +02:00
|
|
|
return this;
|
2017-09-12 23:52:00 +02:00
|
|
|
},
|
|
|
|
invisible: false
|
2017-08-28 21:29:27 +02:00
|
|
|
};
|
2017-09-12 00:33:44 +02:00
|
|
|
allEntities.push(e);
|
|
|
|
return e;
|
2017-08-28 21:29:27 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
entity.update = function() {
|
|
|
|
var clickedOnASprite = false;
|
|
|
|
allEntities.forEach(function(e) {
|
2017-09-12 00:33:44 +02:00
|
|
|
if (e.name.split('.')[0] !== muri.currentRoom) return;
|
2017-08-28 21:29:27 +02:00
|
|
|
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) {
|
2017-09-12 23:52:00 +02:00
|
|
|
if (e.name.split('.')[0] === muri.currentRoom && !e.invisible)
|
2017-09-12 00:33:44 +02:00
|
|
|
e.sprite.render();
|
2017-08-28 21:29:27 +02:00
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
entity.name = 'entity';
|
|
|
|
muri.modules.push(entity);
|
|
|
|
}());
|