Add WA.player.language in the API
This commit is contained in:
parent
77f8426788
commit
8286cdd41d
@ -5,6 +5,7 @@ export const isGameStateEvent = new tg.IsInterface()
|
||||
roomId: tg.isString,
|
||||
mapUrl: tg.isString,
|
||||
nickname: tg.isString,
|
||||
language: tg.isUnion(tg.isString, tg.isUndefined),
|
||||
uuid: tg.isUnion(tg.isString, tg.isUndefined),
|
||||
startLayerName: tg.isUnion(tg.isString, tg.isNull),
|
||||
tags: tg.isArray(tg.isString),
|
||||
|
@ -13,6 +13,12 @@ export const setPlayerName = (name: string) => {
|
||||
playerName = name;
|
||||
};
|
||||
|
||||
let playerLanguage: string | undefined;
|
||||
|
||||
export const setPlayerLanguage = (language: string | undefined) => {
|
||||
playerLanguage = language;
|
||||
};
|
||||
|
||||
let tags: string[] | undefined;
|
||||
|
||||
export const setTags = (_tags: string[]) => {
|
||||
@ -61,6 +67,15 @@ export class WorkadventurePlayerCommands extends IframeApiContribution<Workadven
|
||||
return playerName;
|
||||
}
|
||||
|
||||
get language(): string {
|
||||
if (playerLanguage === undefined) {
|
||||
throw new Error(
|
||||
"Player language not initialized yet. You should call WA.player.language within a WA.onInit callback."
|
||||
);
|
||||
}
|
||||
return playerLanguage;
|
||||
}
|
||||
|
||||
get tags(): string[] {
|
||||
if (tags === undefined) {
|
||||
throw new Error("Tags not initialized yet. You should call WA.player.tags within a WA.onInit callback.");
|
||||
|
@ -76,6 +76,7 @@ import { userIsAdminStore } from "../../Stores/GameStore";
|
||||
import { contactPageStore } from "../../Stores/MenuStore";
|
||||
import type { WasCameraUpdatedEvent } from "../../Api/Events/WasCameraUpdatedEvent";
|
||||
import { audioManagerFileStore, audioManagerVisibilityStore } from "../../Stores/AudioManagerStore";
|
||||
import { Translator } from "../../Translator/Translator";
|
||||
|
||||
import EVENT_TYPE = Phaser.Scenes.Events;
|
||||
import Texture = Phaser.Textures.Texture;
|
||||
@ -211,6 +212,7 @@ export class GameScene extends DirtyScene {
|
||||
private loader: Loader;
|
||||
private lastCameraEvent: WasCameraUpdatedEvent | undefined;
|
||||
private firstCameraUpdateSent: boolean = false;
|
||||
private translator: Translator;
|
||||
|
||||
constructor(private room: Room, MapUrlFile: string, customKey?: string | undefined) {
|
||||
super({
|
||||
@ -230,6 +232,7 @@ export class GameScene extends DirtyScene {
|
||||
this.connectionAnswerPromiseResolve = resolve;
|
||||
});
|
||||
this.loader = new Loader(this);
|
||||
this.translator = Translator.getInstance();
|
||||
}
|
||||
|
||||
//hook preload scene
|
||||
@ -1321,6 +1324,7 @@ ${escapedMessage}
|
||||
startLayerName: this.startPositionCalculator.startLayerName,
|
||||
uuid: localUserStore.getLocalUser()?.uuid,
|
||||
nickname: this.playerName,
|
||||
language: Translator.getStringByLanguage(this.translator.getCurrentLanguage()),
|
||||
roomId: this.roomUrl,
|
||||
tags: this.connection ? this.connection.getAllTags() : [],
|
||||
variables: this.sharedVariablesManager.variables,
|
||||
|
@ -11,7 +11,7 @@ type LanguageObject = {
|
||||
};
|
||||
|
||||
type TranslationParams = {
|
||||
[key: string]: string | number
|
||||
[key: string]: string | number;
|
||||
};
|
||||
|
||||
class Translator {
|
||||
@ -122,6 +122,14 @@ class Translator {
|
||||
return languageFound;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current language
|
||||
* @returns {Language} Current language
|
||||
*/
|
||||
public getCurrentLanguage(): Language {
|
||||
return this.currentLanguage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the current language by the navigator or a cookie
|
||||
*/
|
||||
|
@ -15,7 +15,7 @@ import ui from "./Api/iframe/ui";
|
||||
import sound from "./Api/iframe/sound";
|
||||
import room, { setMapURL, setRoomId } from "./Api/iframe/room";
|
||||
import { createState } from "./Api/iframe/state";
|
||||
import player, { setPlayerName, setTags, setUserRoomToken, setUuid } from "./Api/iframe/player";
|
||||
import player, { setPlayerName, setPlayerLanguage, setTags, setUserRoomToken, setUuid } from "./Api/iframe/player";
|
||||
import type { ButtonDescriptor } from "./Api/iframe/Ui/ButtonDescriptor";
|
||||
import type { Popup } from "./Api/iframe/Ui/Popup";
|
||||
import type { Sound } from "./Api/iframe/Sound/Sound";
|
||||
@ -30,6 +30,7 @@ const initPromise = queryWorkadventure({
|
||||
data: undefined,
|
||||
}).then((gameState) => {
|
||||
setPlayerName(gameState.nickname);
|
||||
setPlayerLanguage(gameState.language);
|
||||
setRoomId(gameState.roomId);
|
||||
setMapURL(gameState.mapUrl);
|
||||
setTags(gameState.tags);
|
||||
|
Loading…
Reference in New Issue
Block a user