mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 18:41:10 +02:00
Add notification sound + muting system.
This commit is contained in:
parent
580d4826e9
commit
baa24c311e
4 changed files with 87 additions and 3 deletions
|
@ -29,11 +29,19 @@
|
||||||
</span>
|
</span>
|
||||||
<div class="switch muteSwitch col s2">
|
<div class="switch muteSwitch col s2">
|
||||||
<label>
|
<label>
|
||||||
<span style="font-size: 20px" id="muteText">Mute</span>
|
<span id="muteText">Hide Popups</span>
|
||||||
<input type="checkbox" id="muteInput" onclick="muteSwitchToggle()">
|
<input type="checkbox" id="muteInput" onclick="muteSwitchToggle()">
|
||||||
<span class="lever waves-light"></span>
|
<span class="lever waves-light"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</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 class="col s1">
|
||||||
</span>
|
</span>
|
||||||
|
@ -47,6 +55,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var muted = {"Local": false, "Domain": false, "Grid": false};
|
var muted = {"Local": false, "Domain": false, "Grid": false};
|
||||||
|
var mutedAudio = {"Local": false, "Domain": false, "Grid": false};
|
||||||
var instance;
|
var instance;
|
||||||
var appUUID;
|
var appUUID;
|
||||||
var messageData = {}; // The data that is sent along with the message.
|
var messageData = {}; // The data that is sent along with the message.
|
||||||
|
@ -380,18 +389,23 @@
|
||||||
|
|
||||||
function time() {
|
function time() {
|
||||||
var d = new Date();
|
var d = new Date();
|
||||||
|
var month = (d.getMonth()).toString();
|
||||||
|
var day = (d.getDate()).toString();
|
||||||
var h = (d.getHours()).toString();
|
var h = (d.getHours()).toString();
|
||||||
var m = (d.getMinutes()).toString();
|
var m = (d.getMinutes()).toString();
|
||||||
var s = (d.getSeconds()).toString();
|
var s = (d.getSeconds()).toString();
|
||||||
var h2 = ("0" + h).slice(-2);
|
var h2 = ("0" + h).slice(-2);
|
||||||
var m2 = ("0" + m).slice(-2);
|
var m2 = ("0" + m).slice(-2);
|
||||||
var s2 = ("0" + s).slice(-2);
|
var s2 = ("0" + s).slice(-2);
|
||||||
s2 += (d.getMilliseconds() / 1000).toFixed(2).slice(1);
|
// s2 += (d.getMilliseconds() / 1000).toFixed(2).slice(1);
|
||||||
return h2 + ":" + m2 + ":" + s2;
|
return month + "/" + day + " - " + h2 + ":" + m2 + ":" + s2;
|
||||||
}
|
}
|
||||||
|
|
||||||
var muteInput;
|
var muteInput;
|
||||||
var muteText;
|
var muteText;
|
||||||
|
|
||||||
|
var muteAudioInput;
|
||||||
|
var muteAudioText;
|
||||||
|
|
||||||
function muteSwitchToggle() {
|
function muteSwitchToggle() {
|
||||||
muted[getCurrTab()] = muteInput.checked;
|
muted[getCurrTab()] = muteInput.checked;
|
||||||
|
@ -399,18 +413,33 @@
|
||||||
muteText.classList.remove(!muteInput.checked ? "red-text" : "white-text");
|
muteText.classList.remove(!muteInput.checked ? "red-text" : "white-text");
|
||||||
emitWebEvent({type: "CMD", cmd: "MUTED", muted: muted});
|
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() {
|
function main() {
|
||||||
|
|
||||||
muteInput = document.getElementById("muteInput");
|
muteInput = document.getElementById("muteInput");
|
||||||
muteText = document.getElementById("muteText");
|
muteText = document.getElementById("muteText");
|
||||||
|
|
||||||
|
muteAudioInput = document.getElementById("muteAudioInput");
|
||||||
|
muteAudioText = document.getElementById("muteAudioText");
|
||||||
|
|
||||||
instance = M.Tabs.init(document.getElementById("tabs"), {
|
instance = M.Tabs.init(document.getElementById("tabs"), {
|
||||||
"onShow": function (e) {
|
"onShow": function (e) {
|
||||||
scrollChatLog(getCurrTab());
|
scrollChatLog(getCurrTab());
|
||||||
|
|
||||||
muteInput.checked = muted[getCurrTab()];
|
muteInput.checked = muted[getCurrTab()];
|
||||||
muteText.classList.add(muteInput.checked ? "red-text" : "white-text");
|
muteText.classList.add(muteInput.checked ? "red-text" : "white-text");
|
||||||
muteText.classList.remove(!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");
|
instance.select("Local");
|
||||||
|
@ -475,6 +504,12 @@
|
||||||
muteText.classList.add(muteInput.checked ? "red-text" : "white-text");
|
muteText.classList.add(muteInput.checked ? "red-text" : "white-text");
|
||||||
muteText.classList.remove(!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
|
}, 100); // Delay to allow everything to settle
|
||||||
|
|
|
@ -57,6 +57,8 @@ var vircadiaGotoUrl = "https://metaverse.vircadia.com/interim/d-goto/app/goto.js
|
||||||
var gotoJSONUrl = Settings.getValue(settingsRoot + "/gotoJSONUrl", vircadiaGotoUrl);
|
var gotoJSONUrl = Settings.getValue(settingsRoot + "/gotoJSONUrl", vircadiaGotoUrl);
|
||||||
|
|
||||||
var muted = Settings.getValue(settingsRoot + "/muted", {"Local": false, "Domain": false, "Grid": true});
|
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 ws;
|
||||||
var wsReady = false;
|
var wsReady = false;
|
||||||
|
@ -285,12 +287,17 @@ function onWebEventReceived(event) {
|
||||||
if (event.type === "ready") {
|
if (event.type === "ready") {
|
||||||
chatHistory.emitScriptEvent(JSON.stringify({type: "MSG", data: historyLog}));
|
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: "MUTED", muted: muted}));
|
||||||
|
chatHistory.emitScriptEvent(JSON.stringify({type: "CMD", cmd: "MUTEDAUDIO", muted: mutedAudio}));
|
||||||
}
|
}
|
||||||
if (event.type === "CMD") {
|
if (event.type === "CMD") {
|
||||||
if (event.cmd === "MUTED") {
|
if (event.cmd === "MUTED") {
|
||||||
muted = event.muted;
|
muted = event.muted;
|
||||||
Settings.setValue(settingsRoot + "/muted", muted);
|
Settings.setValue(settingsRoot + "/muted", muted);
|
||||||
}
|
}
|
||||||
|
if (event.cmd === "MUTEDAUDIO") {
|
||||||
|
mutedAudio = event.muted;
|
||||||
|
Settings.setValue(settingsRoot + "/mutedAudio", mutedAudio);
|
||||||
|
}
|
||||||
if (event.cmd === "COLOUR") {
|
if (event.cmd === "COLOUR") {
|
||||||
Settings.setValue(settingsRoot + "/" + event.colourType + "Colour", event.colour);
|
Settings.setValue(settingsRoot + "/" + event.colourType + "Colour", event.colour);
|
||||||
colours[event.colourType] = 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) {
|
function replaceFormatting(text) {
|
||||||
var found = false;
|
var found = false;
|
||||||
if (text.indexOf("**") !== -1) {
|
if (text.indexOf("**") !== -1) {
|
||||||
|
@ -429,6 +446,11 @@ function messageReceived(channel, message) {
|
||||||
if (cmd.channel === "Local") {
|
if (cmd.channel === "Local") {
|
||||||
if (Vec3.withinEpsilon(MyAvatar.position, cmd.position, 20)) {
|
if (Vec3.withinEpsilon(MyAvatar.position, cmd.position, 20)) {
|
||||||
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
||||||
|
|
||||||
|
if (!mutedAudio["Local"]) {
|
||||||
|
playNotificationSound();
|
||||||
|
}
|
||||||
|
|
||||||
if (!muted["Local"]) {
|
if (!muted["Local"]) {
|
||||||
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
||||||
sender: "(L) " + cmd.displayName,
|
sender: "(L) " + cmd.displayName,
|
||||||
|
@ -439,6 +461,11 @@ function messageReceived(channel, message) {
|
||||||
}
|
}
|
||||||
} else if (cmd.channel === "Domain") {
|
} else if (cmd.channel === "Domain") {
|
||||||
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
||||||
|
|
||||||
|
if (!mutedAudio["Domain"]) {
|
||||||
|
playNotificationSound();
|
||||||
|
}
|
||||||
|
|
||||||
if (!muted["Domain"]) {
|
if (!muted["Domain"]) {
|
||||||
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
||||||
sender: "(D) " + cmd.displayName,
|
sender: "(D) " + cmd.displayName,
|
||||||
|
@ -448,6 +475,11 @@ function messageReceived(channel, message) {
|
||||||
}
|
}
|
||||||
} else if (cmd.channel === "Grid") {
|
} else if (cmd.channel === "Grid") {
|
||||||
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
||||||
|
|
||||||
|
if (!mutedAudio["Grid"]) {
|
||||||
|
playNotificationSound();
|
||||||
|
}
|
||||||
|
|
||||||
if (!muted["Grid"]) {
|
if (!muted["Grid"]) {
|
||||||
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
||||||
sender: "(G) " + cmd.displayName,
|
sender: "(G) " + cmd.displayName,
|
||||||
|
@ -457,6 +489,9 @@ function messageReceived(channel, message) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
addToLog(cmd.message, cmd.displayName, cmd.colour, cmd.channel);
|
||||||
|
|
||||||
|
playNotificationSound();
|
||||||
|
|
||||||
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
Messages.sendLocalMessage(FLOOF_NOTIFICATION_CHANNEL, JSON.stringify({
|
||||||
sender: cmd.displayName,
|
sender: cmd.displayName,
|
||||||
text: replaceFormatting(cmd.message),
|
text: replaceFormatting(cmd.message),
|
||||||
|
|
|
@ -50,6 +50,12 @@ div.dockButton button.active {
|
||||||
border-top: none;
|
border-top: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#tabs {
|
||||||
|
width: 250px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
@ -152,6 +158,14 @@ body {
|
||||||
background-color: #a62113 !important;
|
background-color: #a62113 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#muteText {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#muteAudioText {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
img, a{
|
img, a{
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
|
|
BIN
scripts/communityScripts/chat/resources/bubblepop.wav
Normal file
BIN
scripts/communityScripts/chat/resources/bubblepop.wav
Normal file
Binary file not shown.
Loading…
Reference in a new issue