Add notification sound + muting system.

This commit is contained in:
Kasen IO 2020-06-29 21:52:58 -04:00
parent 580d4826e9
commit baa24c311e
4 changed files with 87 additions and 3 deletions

View file

@ -29,11 +29,19 @@
</span>
<div class="switch muteSwitch col s2">
<label>
<span style="font-size: 20px" id="muteText">Mute</span>
<span id="muteText">Hide Popups</span>
<input type="checkbox" id="muteInput" onclick="muteSwitchToggle()">
<span class="lever waves-light"></span>
</label>
</div>
<div class="switch muteSwitch col s2">
<label>
<span id="muteAudioText">Mute Sound</span>
<input type="checkbox" id="muteAudioInput" onclick="muteAudioSwitchToggle()">
<span class="lever waves-light"></span>
</label>
</div>
<span class="col s1">
</span>
@ -47,6 +55,7 @@
<script>
var muted = {"Local": false, "Domain": false, "Grid": false};
var mutedAudio = {"Local": false, "Domain": false, "Grid": false};
var instance;
var appUUID;
var messageData = {}; // The data that is sent along with the message.
@ -380,18 +389,23 @@
function time() {
var d = new Date();
var month = (d.getMonth()).toString();
var day = (d.getDate()).toString();
var h = (d.getHours()).toString();
var m = (d.getMinutes()).toString();
var s = (d.getSeconds()).toString();
var h2 = ("0" + h).slice(-2);
var m2 = ("0" + m).slice(-2);
var s2 = ("0" + s).slice(-2);
s2 += (d.getMilliseconds() / 1000).toFixed(2).slice(1);
return h2 + ":" + m2 + ":" + s2;
// s2 += (d.getMilliseconds() / 1000).toFixed(2).slice(1);
return month + "/" + day + " - " + h2 + ":" + m2 + ":" + s2;
}
var muteInput;
var muteText;
var muteAudioInput;
var muteAudioText;
function muteSwitchToggle() {
muted[getCurrTab()] = muteInput.checked;
@ -399,18 +413,33 @@
muteText.classList.remove(!muteInput.checked ? "red-text" : "white-text");
emitWebEvent({type: "CMD", cmd: "MUTED", muted: muted});
}
function muteAudioSwitchToggle() {
mutedAudio[getCurrTab()] = muteAudioInput.checked;
muteAudioText.classList.add(muteAudioInput.checked ? "red-text" : "white-text");
muteAudioText.classList.remove(!muteAudioInput.checked ? "red-text" : "white-text");
emitWebEvent({type: "CMD", cmd: "MUTEDAUDIO", muted: mutedAudio});
}
function main() {
muteInput = document.getElementById("muteInput");
muteText = document.getElementById("muteText");
muteAudioInput = document.getElementById("muteAudioInput");
muteAudioText = document.getElementById("muteAudioText");
instance = M.Tabs.init(document.getElementById("tabs"), {
"onShow": function (e) {
scrollChatLog(getCurrTab());
muteInput.checked = muted[getCurrTab()];
muteText.classList.add(muteInput.checked ? "red-text" : "white-text");
muteText.classList.remove(!muteInput.checked ? "red-text" : "white-text");
muteAudioInput.checked = mutedAudio[getCurrTab()];
muteAudioText.classList.add(muteAudioInput.checked ? "red-text" : "white-text");
muteAudioText.classList.remove(!muteAudioInput.checked ? "red-text" : "white-text");
}
});
instance.select("Local");
@ -475,6 +504,12 @@
muteText.classList.add(muteInput.checked ? "red-text" : "white-text");
muteText.classList.remove(!muteInput.checked ? "red-text" : "white-text");
}
if (cmd.cmd === "MUTEDAUDIO") {
mutedAudio = cmd.muted;
muteAudioInput.checked = mutedAudio[getCurrTab()];
muteAudioText.classList.add(muteAudioInput.checked ? "red-text" : "white-text");
muteAudioText.classList.remove(!muteAudioInput.checked ? "red-text" : "white-text");
}
}
});
}, 100); // Delay to allow everything to settle

View file

@ -57,6 +57,8 @@ var vircadiaGotoUrl = "https://metaverse.vircadia.com/interim/d-goto/app/goto.js
var gotoJSONUrl = Settings.getValue(settingsRoot + "/gotoJSONUrl", vircadiaGotoUrl);
var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain": false, "Grid": true});
var mutedAudio = Settings.getValue(settingsRoot + "/mutedAudio", {"Local": false, "Domain": false, "Grid": true});
var notificationSound = SoundCache.getSound(Script.resolvePath("resources/bubblepop.wav"));
var ws;
var wsReady = false;
@ -285,12 +287,17 @@ function onWebEventReceived(event) {
if (event.type === "ready") {
chatHistory.emitScriptEvent(JSON.stringify({type: "MSG", data: historyLog}));
chatHistory.emitScriptEvent(JSON.stringify({type: "CMD", cmd: "MUTED", muted: muted}));
chatHistory.emitScriptEvent(JSON.stringify({type: "CMD", cmd: "MUTEDAUDIO", muted: mutedAudio}));
}
if (event.type === "CMD") {
if (event.cmd === "MUTED") {
muted = event.muted;
Settings.setValue(settingsRoot + "/muted", muted);
}
if (event.cmd === "MUTEDAUDIO") {
mutedAudio = event.muted;
Settings.setValue(settingsRoot + "/mutedAudio", mutedAudio);
}
if (event.cmd === "COLOUR") {
Settings.setValue(settingsRoot + "/" + event.colourType + "Colour", event.colour);
colours[event.colourType] = event.colour;
@ -346,6 +353,16 @@ function onWebEventReceived(event) {
}
}
function playNotificationSound() {
if (notificationSound.downloaded) {
var injectorOptions = {
position: MyAvatar.position,
volume: 0.25
};
var injector = Audio.playSound(notificationSound, injectorOptions);
}
}
function replaceFormatting(text) {
var found = false;
if (text.indexOf("**") !== -1) {
@ -429,6 +446,11 @@ function messageReceived(channel, message) {
if (cmd.channel === "Local") {
if (Vec3.withinEpsilon(MyAvatar.position, cmd.position, 20)) {
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
if (!mutedAudio["Local"]) {
playNotificationSound();
}
if (!muted["Local"]) {
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
sender: "(L) " + cmd.displayName,
@ -439,6 +461,11 @@ function messageReceived(channel, message) {
}
} else if (cmd.channel === "Domain") {
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
if (!mutedAudio["Domain"]) {
playNotificationSound();
}
if (!muted["Domain"]) {
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
sender: "(D) " + cmd.displayName,
@ -448,6 +475,11 @@ function messageReceived(channel, message) {
}
} else if (cmd.channel === "Grid") {
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
if (!mutedAudio["Grid"]) {
playNotificationSound();
}
if (!muted["Grid"]) {
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
sender: "(G) " + cmd.displayName,
@ -457,6 +489,9 @@ function messageReceived(channel, message) {
}
} else {
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
playNotificationSound();
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
sender: cmd.displayName,
text: replaceFormatting(cmd.message),

View file

@ -50,6 +50,12 @@ div.dockButton button.active {
border-top: none;
}
#tabs {
width: 250px !important;
}
body {
width: 100%;
height: 100%;
@ -152,6 +158,14 @@ body {
background-color: #a62113 !important;
}
#muteText {
font-size: 16px;
}
#muteAudioText {
font-size: 16px;
}
img, a{
-moz-user-select: none;
-webkit-user-select: none;

Binary file not shown.