From 6598bb8d854e14cea60c5e641679030e4a96f982 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 2 Dec 2016 13:05:13 -0800 Subject: [PATCH] Add teamAreaEntity.js --- .../tower-defense/teamAreaEntity.js | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 unpublishedScripts/tower-defense/teamAreaEntity.js diff --git a/unpublishedScripts/tower-defense/teamAreaEntity.js b/unpublishedScripts/tower-defense/teamAreaEntity.js new file mode 100644 index 0000000000..82705a359f --- /dev/null +++ b/unpublishedScripts/tower-defense/teamAreaEntity.js @@ -0,0 +1,49 @@ +(function() { + function parseJSON(json) { + try { + return JSON.parse(json); + } catch(e) { + return undefined; + } + } + + var TeamArea = function() { + }; + TeamArea.prototype = { + preload: function(entityID) { + this.entityID = entityID; + this.inEntity = false; + var userData = Entities.getEntityProperties(this.entityID, 'userData').userData; + var data = parseJSON(userData); + if (data !== undefined && data.gameChannel) { + this.gameChannel = data.gameChannel + Messages.subscribe(this.gameChannel); + Messages.messageReceived.connect(this, this.onMessageReceived); + } else { + print("teamAreaEntity.js | ERROR: userData does not contain a game channel"); + } + }, + onMessageReceived: function(channel, message, sender) { + if (channel === this.gameChannel) { + print("teamAreaEntity.js | Got game channel message:", message); + if (message == "FIGHT" && this.inEntity) { + // Set position to top of entity + var props = Entities.getEntityProperties(this.entityID, ['position', 'dimensions', 'registrationPoint']); + var teleportPoint = MyAvatar.position; + teleportPoint.y = props.position.y + (props.dimensions.y * props.registrationPoint.y); + MyAvatar.position = teleportPoint; + } + } + }, + enterEntity: function() { + print("teamAreaEntity.js | Entered"); + this.inEntity = true; + }, + leaveEntity: function() { + print("teamAreaEntity.js | Exited"); + this.inEntity = false; + } + }; + + return new TeamArea(); +});