trigger + audioplayer improvements
This commit is contained in:
parent
d55e6e9c84
commit
e03cf9dc26
6
front/dist/index.tmpl.html
vendored
6
front/dist/index.tmpl.html
vendored
@ -86,10 +86,16 @@
|
|||||||
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-volume-up" fill="white" xmlns="http://www.w3.org/2000/svg">
|
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-volume-up" fill="white" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill-rule="evenodd" d="M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06zM6 5.04L4.312 6.39A.5.5 0 0 1 4 6.5H2v3h2a.5.5 0 0 1 .312.11L6 10.96V5.04z" />
|
<path fill-rule="evenodd" d="M6.717 3.55A.5.5 0 0 1 7 4v8a.5.5 0 0 1-.812.39L3.825 10.5H1.5A.5.5 0 0 1 1 10V6a.5.5 0 0 1 .5-.5h2.325l2.363-1.89a.5.5 0 0 1 .529-.06zM6 5.04L4.312 6.39A.5.5 0 0 1 4 6.5H2v3h2a.5.5 0 0 1 .312.11L6 10.96V5.04z" />
|
||||||
<g id="audioplayer_volume_icon_playing">
|
<g id="audioplayer_volume_icon_playing">
|
||||||
|
<g id="audioplayer_volume_icon_playing_high">
|
||||||
<path d="M11.536 14.01A8.473 8.473 0 0 0 14.026 8a8.473 8.473 0 0 0-2.49-6.01l-.708.707A7.476 7.476 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303l.708.707z" />
|
<path d="M11.536 14.01A8.473 8.473 0 0 0 14.026 8a8.473 8.473 0 0 0-2.49-6.01l-.708.707A7.476 7.476 0 0 1 13.025 8c0 2.071-.84 3.946-2.197 5.303l.708.707z" />
|
||||||
|
</g>
|
||||||
|
<g id="audioplayer_volume_icon_playing_mid">
|
||||||
<path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.483 5.483 0 0 1 11.025 8a5.483 5.483 0 0 1-1.61 3.89l.706.706z" />
|
<path d="M10.121 12.596A6.48 6.48 0 0 0 12.025 8a6.48 6.48 0 0 0-1.904-4.596l-.707.707A5.483 5.483 0 0 1 11.025 8a5.483 5.483 0 0 1-1.61 3.89l.706.706z" />
|
||||||
|
</g>
|
||||||
|
<g id="audioplayer_volume_icon_playing_low">
|
||||||
<path d="M8.707 11.182A4.486 4.486 0 0 0 10.025 8a4.486 4.486 0 0 0-1.318-3.182L8 5.525A3.489 3.489 0 0 1 9.025 8 3.49 3.49 0 0 1 8 10.475l.707.707z" />
|
<path d="M8.707 11.182A4.486 4.486 0 0 0 10.025 8a4.486 4.486 0 0 0-1.318-3.182L8 5.525A3.489 3.489 0 0 1 9.025 8 3.49 3.49 0 0 1 8 10.475l.707.707z" />
|
||||||
</g>
|
</g>
|
||||||
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<div class="audioplayer">
|
<div class="audioplayer">
|
||||||
|
12
front/dist/resources/style/style.css
vendored
12
front/dist/resources/style/style.css
vendored
@ -403,6 +403,18 @@ body {
|
|||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
#audioplayer_volume_icon_playing.low #audioplayer_volume_icon_playing_high {
|
||||||
|
visibility: hidden;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#audioplayer_volume_icon_playing.low #audioplayer_volume_icon_playing_mid {
|
||||||
|
visibility: hidden;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#audioplayer_volume_icon_playing.mid #audioplayer_volume_icon_playing_high {
|
||||||
|
visibility: hidden;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
#audioplayerctrl > #audioplayer_volume {
|
#audioplayerctrl > #audioplayer_volume {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: rgba(0,0,0,0.5);
|
background-color: rgba(0,0,0,0.5);
|
||||||
|
@ -52,6 +52,9 @@ class IframeListener {
|
|||||||
private readonly _removeBubbleStream: Subject<void> = new Subject();
|
private readonly _removeBubbleStream: Subject<void> = new Subject();
|
||||||
public readonly removeBubbleStream = this._removeBubbleStream.asObservable();
|
public readonly removeBubbleStream = this._removeBubbleStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _unregisterIFrameStream: Subject<void> = new Subject();
|
||||||
|
public readonly unregisterIFrameStream = this._unregisterIFrameStream.asObservable();
|
||||||
|
|
||||||
private readonly iframes = new Set<HTMLIFrameElement>();
|
private readonly iframes = new Set<HTMLIFrameElement>();
|
||||||
private readonly scripts = new Map<string, HTMLIFrameElement>();
|
private readonly scripts = new Map<string, HTMLIFrameElement>();
|
||||||
|
|
||||||
@ -119,6 +122,7 @@ class IframeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unregisterIframe(iframe: HTMLIFrameElement): void {
|
unregisterIframe(iframe: HTMLIFrameElement): void {
|
||||||
|
this._unregisterIFrameStream.next();
|
||||||
this.iframes.delete(iframe);
|
this.iframes.delete(iframe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -852,6 +852,25 @@ ${escapedMessage}
|
|||||||
scriptedBubbleSprite.destroy();
|
scriptedBubbleSprite.destroy();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
this.iframeSubscriptionList.push(iframeListener.unregisterIFrameStream.subscribe(() => {
|
||||||
|
const allProps = this.gameMap.getCurrentProperties();
|
||||||
|
if(allProps.get("openWebsite") == null) {
|
||||||
|
layoutManager.removeActionButton('openWebsite', this.userInputManager);
|
||||||
|
} else {
|
||||||
|
const openWebsiteFunction = () => {
|
||||||
|
coWebsiteManager.loadCoWebsite(allProps.get("openWebsite") as string, this.MapUrlFile, allProps.get('openWebsiteAllowApi') as boolean | undefined, allProps.get('openWebsitePolicy') as string | undefined);
|
||||||
|
layoutManager.removeActionButton('openWebsite', this.userInputManager);
|
||||||
|
};
|
||||||
|
|
||||||
|
let message = allProps.get(WEBSITE_MESSAGE_PROPERTIES);
|
||||||
|
if(message === undefined) {
|
||||||
|
message = 'Press SPACE or touch here to open web site';
|
||||||
|
}
|
||||||
|
layoutManager.addActionButton('openWebsite', message.toString(), () => {
|
||||||
|
openWebsiteFunction();
|
||||||
|
}, this.userInputManager);
|
||||||
|
}
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private getMapDirUrl(): string {
|
private getMapDirUrl(): string {
|
||||||
@ -1456,6 +1475,33 @@ ${escapedMessage}
|
|||||||
mediaManager.showGameOverlay();
|
mediaManager.showGameOverlay();
|
||||||
|
|
||||||
mediaManager.removeTriggerCloseJitsiFrameButton('close-jisi');
|
mediaManager.removeTriggerCloseJitsiFrameButton('close-jisi');
|
||||||
|
|
||||||
|
const allProps = this.gameMap.getCurrentProperties();
|
||||||
|
|
||||||
|
if(allProps.get("jitsiRoom") === undefined) {
|
||||||
|
layoutManager.removeActionButton('jitsiRoom', this.userInputManager);
|
||||||
|
} else {
|
||||||
|
const openJitsiRoomFunction = () => {
|
||||||
|
const roomName = jitsiFactory.getRoomName(allProps.get("jitsiRoom") as string, this.instance);
|
||||||
|
const jitsiUrl = allProps.get("jitsiUrl") as string | undefined;
|
||||||
|
if(JITSI_PRIVATE_MODE && !jitsiUrl) {
|
||||||
|
const adminTag = allProps.get("jitsiRoomAdminTag") as string | undefined;
|
||||||
|
|
||||||
|
this.connection.emitQueryJitsiJwtMessage(roomName, adminTag);
|
||||||
|
} else {
|
||||||
|
this.startJitsi(roomName, undefined);
|
||||||
|
}
|
||||||
|
layoutManager.removeActionButton('jitsiRoom', this.userInputManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
let message = allProps.get(JITSI_MESSAGE_PROPERTIES);
|
||||||
|
if(message === undefined) {
|
||||||
|
message = 'Press SPACE or touch here to enter Jitsi Meet room';
|
||||||
|
}
|
||||||
|
layoutManager.addActionButton('jitsiRoom', message.toString(), () => {
|
||||||
|
openJitsiRoomFunction();
|
||||||
|
}, this.userInputManager);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo: put this into an 'orchestrator' scene (EntryScene?)
|
//todo: put this into an 'orchestrator' scene (EntryScene?)
|
||||||
|
@ -11,7 +11,7 @@ enum audioStates {
|
|||||||
const audioPlayerDivId = "audioplayer";
|
const audioPlayerDivId = "audioplayer";
|
||||||
const audioPlayerCtrlId = "audioplayerctrl";
|
const audioPlayerCtrlId = "audioplayerctrl";
|
||||||
const audioPlayerVolId = "audioplayer_volume";
|
const audioPlayerVolId = "audioplayer_volume";
|
||||||
const audioPlayerMuteId = "audioplayer_volume_icon_playing";
|
const audioPlayerVolumeIconId = "audioplayer_volume_icon_playing";
|
||||||
const animationTime = 500;
|
const animationTime = 500;
|
||||||
|
|
||||||
class AudioManager {
|
class AudioManager {
|
||||||
@ -21,7 +21,7 @@ class AudioManager {
|
|||||||
private audioPlayerCtrl: HTMLDivElement;
|
private audioPlayerCtrl: HTMLDivElement;
|
||||||
private audioPlayerElem: HTMLAudioElement | undefined;
|
private audioPlayerElem: HTMLAudioElement | undefined;
|
||||||
private audioPlayerVol: HTMLInputElement;
|
private audioPlayerVol: HTMLInputElement;
|
||||||
private audioPlayerMute: HTMLInputElement;
|
private audioPlayerVolumeIcon: HTMLInputElement;
|
||||||
|
|
||||||
private volume = 1;
|
private volume = 1;
|
||||||
private muted = false;
|
private muted = false;
|
||||||
@ -32,15 +32,12 @@ class AudioManager {
|
|||||||
this.audioPlayerDiv = HtmlUtils.getElementByIdOrFail<HTMLDivElement>(audioPlayerDivId);
|
this.audioPlayerDiv = HtmlUtils.getElementByIdOrFail<HTMLDivElement>(audioPlayerDivId);
|
||||||
this.audioPlayerCtrl = HtmlUtils.getElementByIdOrFail<HTMLDivElement>(audioPlayerCtrlId);
|
this.audioPlayerCtrl = HtmlUtils.getElementByIdOrFail<HTMLDivElement>(audioPlayerCtrlId);
|
||||||
this.audioPlayerVol = HtmlUtils.getElementByIdOrFail<HTMLInputElement>(audioPlayerVolId);
|
this.audioPlayerVol = HtmlUtils.getElementByIdOrFail<HTMLInputElement>(audioPlayerVolId);
|
||||||
this.audioPlayerMute = HtmlUtils.getElementByIdOrFail<HTMLInputElement>(audioPlayerMuteId);
|
this.audioPlayerVolumeIcon = HtmlUtils.getElementByIdOrFail<HTMLInputElement>(audioPlayerVolumeIconId);
|
||||||
|
|
||||||
this.volume = localUserStore.getAudioPlayerVolume();
|
this.volume = localUserStore.getAudioPlayerVolume();
|
||||||
this.audioPlayerVol.value = '' + this.volume;
|
this.audioPlayerVol.value = '' + this.volume;
|
||||||
|
|
||||||
this.muted = localUserStore.getAudioPlayerMuted();
|
this.muted = localUserStore.getAudioPlayerMuted();
|
||||||
if (this.muted) {
|
|
||||||
this.audioPlayerMute.classList.add('muted');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public playAudio(url: string|number|boolean, mapDirUrl: string, volume: number|undefined, loop=false): void {
|
public playAudio(url: string|number|boolean, mapDirUrl: string, volume: number|undefined, loop=false): void {
|
||||||
@ -93,7 +90,22 @@ class AudioManager {
|
|||||||
this.volumeReduced = reduceVolume;
|
this.volumeReduced = reduceVolume;
|
||||||
|
|
||||||
this.audioPlayerElem.volume = this.volume;
|
this.audioPlayerElem.volume = this.volume;
|
||||||
|
if (this.muted) {
|
||||||
|
this.audioPlayerVol.value = '0';
|
||||||
|
this.audioPlayerVolumeIcon.classList.add('muted');
|
||||||
|
} else {
|
||||||
this.audioPlayerVol.value = '' + this.volume;
|
this.audioPlayerVol.value = '' + this.volume;
|
||||||
|
this.audioPlayerVolumeIcon.classList.remove('muted');
|
||||||
|
if (this.volume < 0.3) {
|
||||||
|
this.audioPlayerVolumeIcon.classList.add('low');
|
||||||
|
} else if (this.volume < 0.7) {
|
||||||
|
this.audioPlayerVolumeIcon.classList.remove('low');
|
||||||
|
this.audioPlayerVolumeIcon.classList.add('mid');
|
||||||
|
} else {
|
||||||
|
this.audioPlayerVolumeIcon.classList.remove('low');
|
||||||
|
this.audioPlayerVolumeIcon.classList.remove('mid');
|
||||||
|
}
|
||||||
|
}
|
||||||
this.audioPlayerElem.muted = this.muted;
|
this.audioPlayerElem.muted = this.muted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,17 +141,13 @@ class AudioManager {
|
|||||||
this.muted = !this.muted;
|
this.muted = !this.muted;
|
||||||
this.changeVolume();
|
this.changeVolume();
|
||||||
localUserStore.setAudioPlayerMuted(this.muted);
|
localUserStore.setAudioPlayerMuted(this.muted);
|
||||||
|
|
||||||
if (this.muted) {
|
|
||||||
this.audioPlayerMute.classList.add('muted');
|
|
||||||
} else {
|
|
||||||
this.audioPlayerMute.classList.remove('muted');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.audioPlayerVol.oninput = (ev: Event)=> {
|
this.audioPlayerVol.oninput = (ev: Event)=> {
|
||||||
this.setVolume(parseFloat((<HTMLInputElement>ev.currentTarget).value));
|
this.setVolume(parseFloat((<HTMLInputElement>ev.currentTarget).value));
|
||||||
|
this.muted = false;
|
||||||
this.changeVolume();
|
this.changeVolume();
|
||||||
|
localUserStore.setAudioPlayerMuted(this.muted);
|
||||||
|
|
||||||
(<HTMLInputElement>ev.currentTarget).blur();
|
(<HTMLInputElement>ev.currentTarget).blur();
|
||||||
}
|
}
|
||||||
|
@ -180,6 +180,7 @@ class CoWebsiteManager {
|
|||||||
}
|
}
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.cowebsiteMainDom.innerHTML = ``;
|
this.cowebsiteMainDom.innerHTML = ``;
|
||||||
|
HtmlUtils.getElementByIdOrFail(cowebsiteCloseButtonId).blur();
|
||||||
resolve();
|
resolve();
|
||||||
}, animationTime)
|
}, animationTime)
|
||||||
}));
|
}));
|
||||||
|
Loading…
Reference in New Issue
Block a user