content/hifi-content/wadewatts/Race Gates/gate.js
2022-02-14 02:04:11 +01:00

80 lines
2.4 KiB
JavaScript

(function() {
var messageChannel = 'MESSAGE_CHANNEL_GATE_GAME';
var SOUND_URL = 'https://hifi-content.s3.amazonaws.com/wadewatts/coin%20noise.wav?v=' + Date.now();
var gateID;
var sound;
function sendMessage(message) {
message.gateID = gateID;
Messages.sendMessage(
messageChannel,
JSON.stringify(message)
);
}
function onReceivedMessage(channel, message, senderID) {
try {
var data = JSON.parse(message);
} catch (e) {
print('[gate] Error parsing message: ' + message);
return;
}
switch (data.type) {
// case 'CHECKPOINT':
// if (gateID === data.gateID) {
// var position = Entities.getEntityProperties(gateID, 'position').position;
// var audioProperties = {
// volume: 0.1,
// position: position
// };
// Audio.playSound(sound, audioProperties);
// }
// break;
}
}
function getUserData() {
var userData = Entities.getEntityProperties(gateID, 'userData').userData;
try {
userData = JSON.parse(userData);
} catch (e) {
print('[gate.js] Error parsing userData');
}
return userData;
}
return {
preload: function(id) {
gateID = id;
var userData = getUserData();
sound = SoundCache.getSound(userData.soundUrl || SOUND_URL);
sendMessage({
type: 'INIT_GATE'
});
},
unload: function(id) {
sendMessage({
type: 'REMOVE_GATE'
});
},
enterEntity: function(id) {
var position = Entities.getEntityProperties(gateID, 'position').position;
var userData = getUserData();
var audioProperties = {
volume: (userData.volume || 1),
position: position
};
Audio.playSound(sound, audioProperties);
sendMessage({
type: 'CHECKPOINT',
racerID: MyAvatar.sessionUUID,
racerName: MyAvatar.displayName
});
}
};
})