js13kgames2017-muri/src/entity.js

54 lines
1.4 KiB
JavaScript
Raw Normal View History

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);
}());