Splitting classes in separated files
This commit is contained in:
parent
c17f006992
commit
620bd1ab2c
39
front/src/Api/iframe/Sound/Sound.ts
Normal file
39
front/src/Api/iframe/Sound/Sound.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import {sendToWorkadventure} from "../IframeApiContribution";
|
||||||
|
import type {LoadSoundEvent} from "../../Events/LoadSoundEvent";
|
||||||
|
import type {PlaySoundEvent} from "../../Events/PlaySoundEvent";
|
||||||
|
import type {StopSoundEvent} from "../../Events/StopSoundEvent";
|
||||||
|
import SoundConfig = Phaser.Types.Sound.SoundConfig;
|
||||||
|
|
||||||
|
export class Sound {
|
||||||
|
constructor(private url: string) {
|
||||||
|
sendToWorkadventure({
|
||||||
|
"type": 'loadSound',
|
||||||
|
"data": {
|
||||||
|
url: this.url,
|
||||||
|
} as LoadSoundEvent
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public play(config: SoundConfig) {
|
||||||
|
sendToWorkadventure({
|
||||||
|
"type": 'playSound',
|
||||||
|
"data": {
|
||||||
|
url: this.url,
|
||||||
|
config
|
||||||
|
} as PlaySoundEvent
|
||||||
|
|
||||||
|
});
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
public stop() {
|
||||||
|
sendToWorkadventure({
|
||||||
|
"type": 'stopSound',
|
||||||
|
"data": {
|
||||||
|
url: this.url,
|
||||||
|
} as StopSoundEvent
|
||||||
|
|
||||||
|
});
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
}
|
18
front/src/Api/iframe/Ui/ButtonDescriptor.ts
Normal file
18
front/src/Api/iframe/Ui/ButtonDescriptor.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import type {Popup} from "./Popup";
|
||||||
|
|
||||||
|
export type ButtonClickedCallback = (popup: Popup) => void;
|
||||||
|
|
||||||
|
export interface ButtonDescriptor {
|
||||||
|
/**
|
||||||
|
* The label of the button
|
||||||
|
*/
|
||||||
|
label: string,
|
||||||
|
/**
|
||||||
|
* The type of the button. Can be one of "normal", "primary", "success", "warning", "error", "disabled"
|
||||||
|
*/
|
||||||
|
className?: "normal" | "primary" | "success" | "warning" | "error" | "disabled",
|
||||||
|
/**
|
||||||
|
* Callback called if the button is pressed
|
||||||
|
*/
|
||||||
|
callback: ButtonClickedCallback,
|
||||||
|
}
|
19
front/src/Api/iframe/Ui/Popup.ts
Normal file
19
front/src/Api/iframe/Ui/Popup.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import {sendToWorkadventure} from "../IframeApiContribution";
|
||||||
|
import type {ClosePopupEvent} from "../../Events/ClosePopupEvent";
|
||||||
|
|
||||||
|
export class Popup {
|
||||||
|
constructor(private id: number) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes the popup
|
||||||
|
*/
|
||||||
|
public close(): void {
|
||||||
|
sendToWorkadventure({
|
||||||
|
'type': 'closePopup',
|
||||||
|
'data': {
|
||||||
|
'popupId': this.id,
|
||||||
|
} as ClosePopupEvent
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -2,53 +2,11 @@ import type { LoadSoundEvent } from '../Events/LoadSoundEvent';
|
|||||||
import type { PlaySoundEvent } from '../Events/PlaySoundEvent';
|
import type { PlaySoundEvent } from '../Events/PlaySoundEvent';
|
||||||
import type { StopSoundEvent } from '../Events/StopSoundEvent';
|
import type { StopSoundEvent } from '../Events/StopSoundEvent';
|
||||||
import { IframeApiContribution, sendToWorkadventure } from './IframeApiContribution';
|
import { IframeApiContribution, sendToWorkadventure } from './IframeApiContribution';
|
||||||
import SoundConfig = Phaser.Types.Sound.SoundConfig;
|
import {Sound} from "./Sound/Sound";
|
||||||
|
|
||||||
export class Sound {
|
|
||||||
constructor(private url: string) {
|
|
||||||
sendToWorkadventure({
|
|
||||||
"type": 'loadSound',
|
|
||||||
"data": {
|
|
||||||
url: this.url,
|
|
||||||
} as LoadSoundEvent
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public play(config: SoundConfig) {
|
|
||||||
sendToWorkadventure({
|
|
||||||
"type": 'playSound',
|
|
||||||
"data": {
|
|
||||||
url: this.url,
|
|
||||||
config
|
|
||||||
} as PlaySoundEvent
|
|
||||||
|
|
||||||
});
|
|
||||||
return this.url;
|
|
||||||
}
|
|
||||||
public stop() {
|
|
||||||
sendToWorkadventure({
|
|
||||||
"type": 'stopSound',
|
|
||||||
"data": {
|
|
||||||
url: this.url,
|
|
||||||
} as StopSoundEvent
|
|
||||||
|
|
||||||
});
|
|
||||||
return this.url;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WorkadventureSoundCommands extends IframeApiContribution<WorkadventureSoundCommands> {
|
class WorkadventureSoundCommands extends IframeApiContribution<WorkadventureSoundCommands> {
|
||||||
|
|
||||||
readonly subObjectIdentifier = "sound"
|
|
||||||
|
|
||||||
readonly addMethodsAtRoot = true
|
|
||||||
callbacks = []
|
callbacks = []
|
||||||
|
|
||||||
|
|
||||||
loadSound(url: string): Sound {
|
loadSound(url: string): Sound {
|
||||||
return new Sound(url);
|
return new Sound(url);
|
||||||
}
|
}
|
||||||
|
@ -2,39 +2,9 @@ import { isButtonClickedEvent } from '../Events/ButtonClickedEvent';
|
|||||||
import type { ClosePopupEvent } from '../Events/ClosePopupEvent';
|
import type { ClosePopupEvent } from '../Events/ClosePopupEvent';
|
||||||
import { IframeApiContribution, sendToWorkadventure } from './IframeApiContribution';
|
import { IframeApiContribution, sendToWorkadventure } from './IframeApiContribution';
|
||||||
import { apiCallback } from "./registeredCallbacks";
|
import { apiCallback } from "./registeredCallbacks";
|
||||||
|
import {Popup} from "./Ui/Popup";
|
||||||
|
import type {ButtonClickedCallback, ButtonDescriptor} from "./Ui/ButtonDescriptor";
|
||||||
|
|
||||||
export class Popup {
|
|
||||||
constructor(private id: number) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Closes the popup
|
|
||||||
*/
|
|
||||||
public close(): void {
|
|
||||||
sendToWorkadventure({
|
|
||||||
'type': 'closePopup',
|
|
||||||
'data': {
|
|
||||||
'popupId': this.id,
|
|
||||||
} as ClosePopupEvent
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type ButtonClickedCallback = (popup: Popup) => void;
|
|
||||||
export interface ButtonDescriptor {
|
|
||||||
/**
|
|
||||||
* The label of the button
|
|
||||||
*/
|
|
||||||
label: string,
|
|
||||||
/**
|
|
||||||
* The type of the button. Can be one of "normal", "primary", "success", "warning", "error", "disabled"
|
|
||||||
*/
|
|
||||||
className?: "normal" | "primary" | "success" | "warning" | "error" | "disabled",
|
|
||||||
/**
|
|
||||||
* Callback called if the button is pressed
|
|
||||||
*/
|
|
||||||
callback: ButtonClickedCallback,
|
|
||||||
}
|
|
||||||
let popupId = 0;
|
let popupId = 0;
|
||||||
const popups: Map<number, Popup> = new Map<number, Popup>();
|
const popups: Map<number, Popup> = new Map<number, Popup>();
|
||||||
const popupCallbacks: Map<number, Map<number, ButtonClickedCallback>> = new Map<number, Map<number, ButtonClickedCallback>>();
|
const popupCallbacks: Map<number, Map<number, ButtonClickedCallback>> = new Map<number, Map<number, ButtonClickedCallback>>();
|
||||||
@ -50,9 +20,6 @@ interface ZonedPopupOptions {
|
|||||||
|
|
||||||
class WorkAdventureUiCommands extends IframeApiContribution<WorkAdventureUiCommands> {
|
class WorkAdventureUiCommands extends IframeApiContribution<WorkAdventureUiCommands> {
|
||||||
|
|
||||||
readonly subObjectIdentifier = "ui"
|
|
||||||
|
|
||||||
readonly addMethodsAtRoot = true
|
|
||||||
callbacks = [apiCallback({
|
callbacks = [apiCallback({
|
||||||
type: "buttonClickedEvent",
|
type: "buttonClickedEvent",
|
||||||
typeChecker: isButtonClickedEvent,
|
typeChecker: isButtonClickedEvent,
|
||||||
|
@ -9,10 +9,12 @@ import chat from "./Api/iframe/chat";
|
|||||||
import type {IframeCallback} from './Api/iframe/IframeApiContribution';
|
import type {IframeCallback} from './Api/iframe/IframeApiContribution';
|
||||||
import nav from "./Api/iframe/nav";
|
import nav from "./Api/iframe/nav";
|
||||||
import controls from "./Api/iframe/controls";
|
import controls from "./Api/iframe/controls";
|
||||||
import ui, {ButtonDescriptor, Popup} from "./Api/iframe/ui";
|
import ui from "./Api/iframe/ui";
|
||||||
import sound, {Sound} from "./Api/iframe/sound";
|
import sound from "./Api/iframe/sound";
|
||||||
import room from "./Api/iframe/room";
|
import room from "./Api/iframe/room";
|
||||||
|
import type {ButtonDescriptor} from "./Api/iframe/Ui/ButtonDescriptor";
|
||||||
|
import type {Popup} from "./Api/iframe/Ui/Popup";
|
||||||
|
import type {Sound} from "./Api/iframe/Sound/Sound";
|
||||||
|
|
||||||
const wa = {
|
const wa = {
|
||||||
ui,
|
ui,
|
||||||
|
Loading…
Reference in New Issue
Block a user