52 lines
No EOL
2.1 KiB
JavaScript
52 lines
No EOL
2.1 KiB
JavaScript
(function(){
|
|
Script.include('utils.js');
|
|
Enemy = function() {
|
|
};
|
|
|
|
Enemy.prototype = {
|
|
preload: function(entityID) {
|
|
this.entityID = entityID;
|
|
var userData = Entities.getEntityProperties(this.entityID, 'userData').userData;
|
|
var data = utils.parseJSON(userData);
|
|
if (data !== undefined && data.gameChannel !== undefined) {
|
|
this.gameChannel = data.gameChannel;
|
|
} else {
|
|
print("enemyServerEntity.js | ERROR: userData does not contain a game channel and/or team number");
|
|
}
|
|
var self = this;
|
|
this.heartbeatTimerID = Script.setInterval(function() {
|
|
print("Sending heartbeat", self.gameChannel);
|
|
Messages.sendMessage(self.gameChannel, JSON.stringify({
|
|
type: "enemy-heartbeat",
|
|
entityID: self.entityID,
|
|
position: Entities.getEntityProperties(self.entityID, 'position').position
|
|
}));
|
|
}, 1000);
|
|
},
|
|
onCollide: function(entityA, entityB, collision) {
|
|
if (this.entityIDsThatHaveCollidedWithMe.indexOf(entityB) > -1) {
|
|
return;
|
|
}
|
|
this.entityIDsThatHaveCollidedWithMe.push(entityB);
|
|
|
|
var colliderName = Entities.getEntityProperties(entityB, 'name').name;
|
|
|
|
if (colliderName.indexOf("projectile") > -1) {
|
|
Messages.sendMessage(this.gameChannel, JSON.stringify({
|
|
type: "enemy-killed",
|
|
entityID: this.entityID,
|
|
position: Entities.getEntityProperties(this.entityID, 'position').position
|
|
}));
|
|
Entities.deleteEntity(this.entityID);
|
|
} else if (colliderName.indexOf("GateCollider") > -1) {
|
|
Messages.sendMessage(this.gameChannel, JSON.stringify({
|
|
type: "enemy-escaped",
|
|
entityID: this.entityID,
|
|
position: Entities.getEntityProperties(this.entityID, 'position').position
|
|
}));
|
|
Entities.deleteEntity(this.entityID);
|
|
}
|
|
}
|
|
};
|
|
return new Enemy();
|
|
}); |