Merge branch 'develop' into customCharacterLadyLoading
This commit is contained in:
commit
803be36def
6 changed files with 60 additions and 13 deletions
|
@ -79,6 +79,7 @@
|
||||||
"TURN_USER": "workadventure",
|
"TURN_USER": "workadventure",
|
||||||
"TURN_PASSWORD": "WorkAdventure123",
|
"TURN_PASSWORD": "WorkAdventure123",
|
||||||
"JITSI_PRIVATE_MODE": if env.SECRET_JITSI_KEY != '' then "true" else "false",
|
"JITSI_PRIVATE_MODE": if env.SECRET_JITSI_KEY != '' then "true" else "false",
|
||||||
|
"START_ROOM_URL": "/_/global/maps."+url+"/Floor0/floor0.json"
|
||||||
//"GA_TRACKING_ID": "UA-10196481-11"
|
//"GA_TRACKING_ID": "UA-10196481-11"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -610,8 +610,18 @@ export class GameScene extends ResizableScene implements CenterListener {
|
||||||
if (url === undefined) {
|
if (url === undefined) {
|
||||||
audioManager.unloadAudio();
|
audioManager.unloadAudio();
|
||||||
} else {
|
} else {
|
||||||
const mapDirUrl = this.MapUrlFile.substr(0, this.MapUrlFile.lastIndexOf('/'));
|
const audioPath = url as string;
|
||||||
const realAudioPath = mapDirUrl + '/' + url;
|
let realAudioPath = '';
|
||||||
|
|
||||||
|
if (audioPath.indexOf('://') > 0) {
|
||||||
|
// remote file or stream
|
||||||
|
realAudioPath = audioPath;
|
||||||
|
} else {
|
||||||
|
// local file, include it relative to map directory
|
||||||
|
const mapDirUrl = this.MapUrlFile.substr(0, this.MapUrlFile.lastIndexOf('/'));
|
||||||
|
realAudioPath = mapDirUrl + '/' + url;
|
||||||
|
}
|
||||||
|
|
||||||
audioManager.loadAudio(realAudioPath);
|
audioManager.loadAudio(realAudioPath);
|
||||||
|
|
||||||
if (loop) {
|
if (loop) {
|
||||||
|
@ -708,6 +718,10 @@ export class GameScene extends ResizableScene implements CenterListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
public cleanupClosingScene(): void {
|
public cleanupClosingScene(): void {
|
||||||
|
// stop playing audio, close any open website, stop any open Jitsi
|
||||||
|
coWebsiteManager.closeCoWebsite();
|
||||||
|
this.stopJitsi();
|
||||||
|
this.playAudio(undefined);
|
||||||
// We are completely destroying the current scene to avoid using a half-backed instance when coming back to the same map.
|
// We are completely destroying the current scene to avoid using a half-backed instance when coming back to the same map.
|
||||||
if(this.connection) {
|
if(this.connection) {
|
||||||
this.connection.closeConnection();
|
this.connection.closeConnection();
|
||||||
|
|
|
@ -151,15 +151,6 @@ export class DiscussionManager {
|
||||||
this.nbpParticipants.innerText = `PARTICIPANTS (${nb})`;
|
this.nbpParticipants.innerText = `PARTICIPANTS (${nb})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private urlify(text: string) {
|
|
||||||
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
|
||||||
return text.replace(urlRegex, (url: string) => {
|
|
||||||
return '<a href="' + url + '" target="_blank">' + url + '</a>';
|
|
||||||
})
|
|
||||||
// or alternatively
|
|
||||||
// return text.replace(urlRegex, '<a href="$1">$1</a>')
|
|
||||||
}
|
|
||||||
|
|
||||||
public addMessage(name: string, message: string, isMe: boolean = false) {
|
public addMessage(name: string, message: string, isMe: boolean = false) {
|
||||||
const divMessage: HTMLDivElement = document.createElement('div');
|
const divMessage: HTMLDivElement = document.createElement('div');
|
||||||
divMessage.classList.add('message');
|
divMessage.classList.add('message');
|
||||||
|
@ -179,7 +170,7 @@ export class DiscussionManager {
|
||||||
divMessage.appendChild(pMessage);
|
divMessage.appendChild(pMessage);
|
||||||
|
|
||||||
const userMessage: HTMLParagraphElement = document.createElement('p');
|
const userMessage: HTMLParagraphElement = document.createElement('p');
|
||||||
userMessage.innerHTML = this.urlify(message);
|
userMessage.innerHTML = HtmlUtils.urlify(message);
|
||||||
userMessage.classList.add('body');
|
userMessage.classList.add('body');
|
||||||
divMessage.appendChild(userMessage);
|
divMessage.appendChild(userMessage);
|
||||||
this.divMessages?.appendChild(divMessage);
|
this.divMessages?.appendChild(divMessage);
|
||||||
|
|
|
@ -17,4 +17,11 @@ export class HtmlUtils {
|
||||||
elem.remove();
|
elem.remove();
|
||||||
return elem as T;
|
return elem as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static urlify(text: string): string {
|
||||||
|
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
||||||
|
return text.replace(urlRegex, (url: string) => {
|
||||||
|
return '<a href="' + url + '" target="_blank" style=":visited {color: white}">' + url + '</a>';
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,8 +53,28 @@ const fps : Phaser.Types.Core.FPSConfig = {
|
||||||
smoothStep: false
|
smoothStep: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the ?phaserMode=canvas parameter can be used to force Canvas usage
|
||||||
|
const params = new URLSearchParams(document.location.search.substring(1));
|
||||||
|
const phaserMode = params.get("phaserMode");
|
||||||
|
let mode: number;
|
||||||
|
switch (phaserMode) {
|
||||||
|
case 'auto':
|
||||||
|
case null:
|
||||||
|
mode = Phaser.AUTO;
|
||||||
|
break;
|
||||||
|
case 'canvas':
|
||||||
|
mode = Phaser.CANVAS;
|
||||||
|
break;
|
||||||
|
case 'webgl':
|
||||||
|
mode = Phaser.WEBGL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error('phaserMode parameter must be one of "auto", "canvas" or "webgl"');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const config: GameConfig = {
|
const config: GameConfig = {
|
||||||
type: Phaser.AUTO,
|
type: mode,
|
||||||
title: "WorkAdventure",
|
title: "WorkAdventure",
|
||||||
width: width / RESOLUTION,
|
width: width / RESOLUTION,
|
||||||
height: height / RESOLUTION,
|
height: height / RESOLUTION,
|
||||||
|
|
14
front/tests/Phaser/Game/HtmlUtilsTest.ts
Normal file
14
front/tests/Phaser/Game/HtmlUtilsTest.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import "jasmine";
|
||||||
|
import {HtmlUtils} from "../../../src/WebRtc/HtmlUtils";
|
||||||
|
|
||||||
|
describe("urlify()", () => {
|
||||||
|
it("should transform an url into a link", () => {
|
||||||
|
const text = HtmlUtils.urlify('https://google.com');
|
||||||
|
expect(text).toEqual('<a href="https://google.com" target="_blank" style=":visited {color: white}">https://google.com</a>');
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not transform a normal text into a link", () => {
|
||||||
|
const text = HtmlUtils.urlify('hello');
|
||||||
|
expect(text).toEqual('hello');
|
||||||
|
});
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue