559e15ebb6
In "alone" mode (or single-player mode), WorkAdventure does not connect to the server at all. In order to enter the "alone" mode, you need to add "?alone=true" to the URL. "alone" mode can be useful for tutorials (First Time User Experience) where you want to explain how WorkAdventure works without being disturbed by other users.
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import {Room} from "../Connexion/Room";
|
|
|
|
export enum GameConnexionTypes {
|
|
anonymous=1,
|
|
organization,
|
|
register,
|
|
empty,
|
|
unknown,
|
|
}
|
|
|
|
//this class is responsible with analysing and editing the game's url
|
|
class UrlManager {
|
|
|
|
//todo: use that to detect if we can find a token in localstorage
|
|
public getGameConnexionType(): GameConnexionTypes {
|
|
const url = window.location.pathname.toString();
|
|
if (url.includes('_/')) {
|
|
return GameConnexionTypes.anonymous;
|
|
} else if (url.includes('@/')) {
|
|
return GameConnexionTypes.organization;
|
|
} else if(url.includes('register/')) {
|
|
return GameConnexionTypes.register;
|
|
} else if(url === '/') {
|
|
return GameConnexionTypes.empty;
|
|
} else {
|
|
return GameConnexionTypes.unknown;
|
|
}
|
|
}
|
|
|
|
public getOrganizationToken(): string|null {
|
|
const match = /\/register\/(.+)/.exec(window.location.pathname.toString());
|
|
return match ? match [1] : null;
|
|
}
|
|
|
|
public pushRoomIdToUrl(room:Room): void {
|
|
if (window.location.pathname === room.id) return;
|
|
const hash = window.location.hash;
|
|
const search = room.search.toString();
|
|
history.pushState({}, 'WorkAdventure', room.id+(search?'?'+search:'')+hash);
|
|
}
|
|
|
|
public getStartLayerNameFromUrl(): string|null {
|
|
const hash = window.location.hash;
|
|
return hash.length > 1 ? hash.substring(1) : null;
|
|
}
|
|
|
|
pushStartLayerNameToUrl(startLayerName: string): void {
|
|
window.location.hash = startLayerName;
|
|
}
|
|
}
|
|
|
|
export const urlManager = new UrlManager();
|