Sound in Script Done
Fom script user can load, play and stop sound
This commit is contained in:
parent
517c0e86cb
commit
f03f8076f3
11
front/src/Api/Events/LoadSoundEvent.ts
Normal file
11
front/src/Api/Events/LoadSoundEvent.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import * as tg from "generic-type-guard";
|
||||||
|
|
||||||
|
export const isLoadSoundEvent =
|
||||||
|
new tg.IsInterface().withProperties({
|
||||||
|
url: tg.isString,
|
||||||
|
}).get();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A message sent from the iFrame to the game to add a message in the chat.
|
||||||
|
*/
|
||||||
|
export type LoadSoundEvent = tg.GuardedType<typeof isLoadSoundEvent>;
|
11
front/src/Api/Events/StopSoundEvent.ts
Normal file
11
front/src/Api/Events/StopSoundEvent.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import * as tg from "generic-type-guard";
|
||||||
|
|
||||||
|
export const isStopSoundEvent =
|
||||||
|
new tg.IsInterface().withProperties({
|
||||||
|
url: tg.isString,
|
||||||
|
}).get();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A message sent from the iFrame to the game to add a message in the chat.
|
||||||
|
*/
|
||||||
|
export type StopSoundEvent = tg.GuardedType<typeof isStopSoundEvent>;
|
@ -13,6 +13,8 @@ import {scriptUtils} from "./ScriptUtils";
|
|||||||
import {GoToPageEvent, isGoToPageEvent} from "./Events/GoToPageEvent";
|
import {GoToPageEvent, isGoToPageEvent} from "./Events/GoToPageEvent";
|
||||||
import {isOpenCoWebsite, OpenCoWebSiteEvent} from "./Events/OpenCoWebSiteEvent";
|
import {isOpenCoWebsite, OpenCoWebSiteEvent} from "./Events/OpenCoWebSiteEvent";
|
||||||
import {isPlaySoundEvent, PlaySoundEvent} from "./Events/PlaySoundEvent";
|
import {isPlaySoundEvent, PlaySoundEvent} from "./Events/PlaySoundEvent";
|
||||||
|
import {isStopSoundEvent, StopSoundEvent} from "./Events/StopSoundEvent";
|
||||||
|
import {isLoadSoundEvent, LoadSoundEvent} from "./Events/LoadSoundEvent";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,6 +58,12 @@ class IframeListener {
|
|||||||
private readonly _playSoundStream: Subject<PlaySoundEvent> = new Subject();
|
private readonly _playSoundStream: Subject<PlaySoundEvent> = new Subject();
|
||||||
public readonly playSoundStream = this._playSoundStream.asObservable();
|
public readonly playSoundStream = this._playSoundStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _stopSoundStream: Subject<StopSoundEvent> = new Subject();
|
||||||
|
public readonly stopSoundStream = this._stopSoundStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _loadSoundStream: Subject<LoadSoundEvent> = new Subject();
|
||||||
|
public readonly loadSoundStream = this._loadSoundStream.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>();
|
||||||
|
|
||||||
@ -96,6 +104,12 @@ class IframeListener {
|
|||||||
else if(payload.type === 'playSound' && isPlaySoundEvent(payload.data)) {
|
else if(payload.type === 'playSound' && isPlaySoundEvent(payload.data)) {
|
||||||
this._playSoundStream.next(payload.data);
|
this._playSoundStream.next(payload.data);
|
||||||
}
|
}
|
||||||
|
else if(payload.type === 'stopSound' && isStopSoundEvent(payload.data)) {
|
||||||
|
this._stopSoundStream.next(payload.data);
|
||||||
|
}
|
||||||
|
else if(payload.type === 'loadSound' && isLoadSoundEvent(payload.data)) {
|
||||||
|
this._loadSoundStream.next(payload.data);
|
||||||
|
}
|
||||||
else if(payload.type === 'closeCoWebSite') {
|
else if(payload.type === 'closeCoWebSite') {
|
||||||
scriptUtils.closeCoWebSite();
|
scriptUtils.closeCoWebSite();
|
||||||
}
|
}
|
||||||
|
@ -796,12 +796,26 @@ ${escapedMessage}
|
|||||||
|
|
||||||
this.iframeSubscriptionList.push(iframeListener.playSoundStream.subscribe((playSoundEvent)=>
|
this.iframeSubscriptionList.push(iframeListener.playSoundStream.subscribe((playSoundEvent)=>
|
||||||
{
|
{
|
||||||
soundManager.playSound(this.load,this.sound,playSoundEvent.url,playSoundEvent.config);
|
const url = new URL(playSoundEvent.url, this.MapUrlFile);
|
||||||
|
soundManager.playSound(this.load,this.sound,url.toString(),playSoundEvent.config);
|
||||||
|
}))
|
||||||
|
|
||||||
|
this.iframeSubscriptionList.push(iframeListener.stopSoundStream.subscribe((stopSoundEvent)=>
|
||||||
|
{
|
||||||
|
const url = new URL(stopSoundEvent.url, this.MapUrlFile);
|
||||||
|
soundManager.stopSound(this.sound,url.toString());
|
||||||
|
}))
|
||||||
|
|
||||||
|
this.iframeSubscriptionList.push(iframeListener.loadSoundStream.subscribe((loadSoundEvent)=>
|
||||||
|
{
|
||||||
|
const url = new URL(loadSoundEvent.url, this.MapUrlFile);
|
||||||
|
soundManager.loadSound(this.load,this.sound,url.toString());
|
||||||
}))
|
}))
|
||||||
|
|
||||||
this.iframeSubscriptionList.push(iframeListener.enablePlayerControlStream.subscribe(()=>{
|
this.iframeSubscriptionList.push(iframeListener.enablePlayerControlStream.subscribe(()=>{
|
||||||
this.userInputManager.restoreControls();
|
this.userInputManager.restoreControls();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let scriptedBubbleSprite : Sprite;
|
let scriptedBubbleSprite : Sprite;
|
||||||
this.iframeSubscriptionList.push(iframeListener.displayBubbleStream.subscribe(()=>{
|
this.iframeSubscriptionList.push(iframeListener.displayBubbleStream.subscribe(()=>{
|
||||||
scriptedBubbleSprite = new Sprite(this,this.CurrentPlayer.x + 25,this.CurrentPlayer.y,'circleSprite-white');
|
scriptedBubbleSprite = new Sprite(this,this.CurrentPlayer.x + 25,this.CurrentPlayer.y,'circleSprite-white');
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
import LoaderPlugin = Phaser.Loader.LoaderPlugin;
|
import LoaderPlugin = Phaser.Loader.LoaderPlugin;
|
||||||
import BaseSoundManager = Phaser.Sound.BaseSoundManager;
|
import BaseSoundManager = Phaser.Sound.BaseSoundManager;
|
||||||
import BaseSound = Phaser.Sound.BaseSound;
|
import BaseSound = Phaser.Sound.BaseSound;
|
||||||
import Config = Phaser.Core.Config;
|
|
||||||
import SoundConfig = Phaser.Types.Sound.SoundConfig;
|
import SoundConfig = Phaser.Types.Sound.SoundConfig;
|
||||||
|
|
||||||
|
|
||||||
class SoundManager {
|
class SoundManager {
|
||||||
|
private soundPromises : Map<string,Promise<BaseSound>> = new Map<string, Promise<Phaser.Sound.BaseSound>>();
|
||||||
public loadSound (loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string) : Promise<BaseSound> {
|
public loadSound (loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string) : Promise<BaseSound> {
|
||||||
return new Promise<BaseSound>((res) => {
|
let soundPromise = this.soundPromises.get(soundUrl);
|
||||||
|
if (soundPromise !== undefined) {
|
||||||
|
return soundPromise;
|
||||||
|
}
|
||||||
|
soundPromise = new Promise<BaseSound>((res) => {
|
||||||
|
|
||||||
let sound = soundManager.get(soundUrl);
|
let sound = soundManager.get(soundUrl);
|
||||||
if (sound !== null) {
|
if (sound !== null) {
|
||||||
return res(sound);
|
return res(sound);
|
||||||
@ -17,14 +20,20 @@ class SoundManager {
|
|||||||
loadPlugin.once('filecomplete-audio-' + soundUrl, () => res(soundManager.add(soundUrl)));
|
loadPlugin.once('filecomplete-audio-' + soundUrl, () => res(soundManager.add(soundUrl)));
|
||||||
loadPlugin.start();
|
loadPlugin.start();
|
||||||
});
|
});
|
||||||
|
this.soundPromises.set(soundUrl,soundPromise);
|
||||||
|
return soundPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async playSound(loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string, config: SoundConfig) : Promise<void> {
|
public async playSound(loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string, config: SoundConfig) : Promise<void> {
|
||||||
console.log("play sound");
|
|
||||||
const sound = await this.loadSound(loadPlugin,soundManager,soundUrl);
|
const sound = await this.loadSound(loadPlugin,soundManager,soundUrl);
|
||||||
|
|
||||||
sound.play(config);
|
sound.play(config);
|
||||||
console.log("j'ai joué le son");
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public stopSound(soundManager : BaseSoundManager,soundUrl : string){
|
||||||
|
console.log("stop "+ soundManager.get(soundUrl).key);
|
||||||
|
soundManager.get(soundUrl).stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export const soundManager = new SoundManager();
|
export const soundManager = new SoundManager();
|
@ -10,6 +10,8 @@ import {OpenTabEvent} from "./Api/Events/OpenTabEvent";
|
|||||||
import {GoToPageEvent} from "./Api/Events/GoToPageEvent";
|
import {GoToPageEvent} from "./Api/Events/GoToPageEvent";
|
||||||
import {OpenCoWebSiteEvent} from "./Api/Events/OpenCoWebSiteEvent";
|
import {OpenCoWebSiteEvent} from "./Api/Events/OpenCoWebSiteEvent";
|
||||||
import {PlaySoundEvent} from "./Api/Events/PlaySoundEvent";
|
import {PlaySoundEvent} from "./Api/Events/PlaySoundEvent";
|
||||||
|
import {StopSoundEvent} from "./Api/Events/StopSoundEvent";
|
||||||
|
import {LoadSoundEvent} from "./Api/Events/LoadSoundEvent";
|
||||||
import SoundConfig = Phaser.Types.Sound.SoundConfig;
|
import SoundConfig = Phaser.Types.Sound.SoundConfig;
|
||||||
|
|
||||||
interface WorkAdventureApi {
|
interface WorkAdventureApi {
|
||||||
@ -26,7 +28,7 @@ interface WorkAdventureApi {
|
|||||||
restorePlayerControl() : void;
|
restorePlayerControl() : void;
|
||||||
displayBubble() : void;
|
displayBubble() : void;
|
||||||
removeBubble() : void;
|
removeBubble() : void;
|
||||||
playSound(url : string, config : SoundConfig): void;
|
loadSound(url : string): Sound;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@ -77,6 +79,42 @@ class Popup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Sound {
|
||||||
|
constructor(private url: string) {
|
||||||
|
// TODO: send a "loadSound" event
|
||||||
|
window.parent.postMessage({
|
||||||
|
"type" : 'loadSound',
|
||||||
|
"data": {
|
||||||
|
url: this.url,
|
||||||
|
} as LoadSoundEvent
|
||||||
|
|
||||||
|
},'*');
|
||||||
|
}
|
||||||
|
|
||||||
|
public play(config : SoundConfig) {
|
||||||
|
window.parent.postMessage({
|
||||||
|
"type" : 'playSound',
|
||||||
|
"data": {
|
||||||
|
url: this.url,
|
||||||
|
config
|
||||||
|
} as PlaySoundEvent
|
||||||
|
|
||||||
|
},'*');
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
public stop() {
|
||||||
|
window.parent.postMessage({
|
||||||
|
"type" : 'stopSound',
|
||||||
|
"data": {
|
||||||
|
url: this.url,
|
||||||
|
} as StopSoundEvent
|
||||||
|
|
||||||
|
},'*');
|
||||||
|
return this.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
window.WA = {
|
window.WA = {
|
||||||
/**
|
/**
|
||||||
* Send a message in the chat.
|
* Send a message in the chat.
|
||||||
@ -116,7 +154,7 @@ window.WA = {
|
|||||||
},'*');
|
},'*');
|
||||||
},
|
},
|
||||||
|
|
||||||
playSound(url: string, config : SoundConfig) : string{
|
/*playSound(url: string, config : SoundConfig) : string{
|
||||||
window.parent.postMessage({
|
window.parent.postMessage({
|
||||||
"type" : 'playSound',
|
"type" : 'playSound',
|
||||||
"data": {
|
"data": {
|
||||||
@ -126,6 +164,10 @@ window.WA = {
|
|||||||
|
|
||||||
},'*');
|
},'*');
|
||||||
return url;
|
return url;
|
||||||
|
},*/
|
||||||
|
|
||||||
|
loadSound(url: string) : Sound {
|
||||||
|
return new Sound(url);
|
||||||
},
|
},
|
||||||
|
|
||||||
goToPage(url : string) : void{
|
goToPage(url : string) : void{
|
||||||
|
@ -5,10 +5,10 @@ var targetObjectTutoBubble ='Tutobubble';
|
|||||||
var targetObjectTutoChat ='tutoChat';
|
var targetObjectTutoChat ='tutoChat';
|
||||||
var targetObjectTutoExplanation ='tutoExplanation';
|
var targetObjectTutoExplanation ='tutoExplanation';
|
||||||
var popUpExplanation = undefined;
|
var popUpExplanation = undefined;
|
||||||
var enterSoundUrl = "/resources/objects/webrtc-in.mp3";
|
var enterSoundUrl = "webrtc-in.mp3";
|
||||||
var exitSoundUrl = "/resources/objects/webrtc-out.mp3";
|
var exitSoundUrl = "webrtc-out.mp3";
|
||||||
var soundConfig = {
|
var soundConfig = {
|
||||||
volume : 0.5,
|
volume : 0.2,
|
||||||
loop : false
|
loop : false
|
||||||
}
|
}
|
||||||
function launchTuto (){
|
function launchTuto (){
|
||||||
@ -32,6 +32,7 @@ function launchTuto (){
|
|||||||
className : "success",callback:(popup2 => {
|
className : "success",callback:(popup2 => {
|
||||||
popup2.close();
|
popup2.close();
|
||||||
WA.restorePlayerControl();
|
WA.restorePlayerControl();
|
||||||
|
WA.loadSound(winSoundUrl).play(soundConfig);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
@ -49,8 +50,7 @@ function launchTuto (){
|
|||||||
|
|
||||||
WA.onEnterZone('popupZone', () => {
|
WA.onEnterZone('popupZone', () => {
|
||||||
WA.displayBubble();
|
WA.displayBubble();
|
||||||
|
WA.loadSound(enterSoundUrl).play(soundConfig);
|
||||||
WA.playSound(enterSoundUrl,soundConfig);
|
|
||||||
if (!isFirstTimeTuto) {
|
if (!isFirstTimeTuto) {
|
||||||
isFirstTimeTuto = true;
|
isFirstTimeTuto = true;
|
||||||
launchTuto();
|
launchTuto();
|
||||||
@ -79,6 +79,5 @@ WA.onEnterZone('popupZone', () => {
|
|||||||
WA.onLeaveZone('popupZone', () => {
|
WA.onLeaveZone('popupZone', () => {
|
||||||
if (popUpExplanation !== undefined) popUpExplanation.close();
|
if (popUpExplanation !== undefined) popUpExplanation.close();
|
||||||
WA.removeBubble();
|
WA.removeBubble();
|
||||||
WA.playSound(exitSoundUrl,soundConfig);
|
WA.loadSound(exitSoundUrl).play(soundConfig);
|
||||||
|
|
||||||
})
|
})
|
||||||
|
BIN
maps/Tuto/webrtc-in.mp3
Normal file
BIN
maps/Tuto/webrtc-in.mp3
Normal file
Binary file not shown.
BIN
maps/Tuto/webrtc-out.mp3
Normal file
BIN
maps/Tuto/webrtc-out.mp3
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
maps/tests/Audience.mp3
Normal file
BIN
maps/tests/Audience.mp3
Normal file
Binary file not shown.
44
maps/tests/SoundScript.js
Normal file
44
maps/tests/SoundScript.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
var zonePlaySound = "PlaySound";
|
||||||
|
var zonePlaySoundLoop = "playSoundLoop";
|
||||||
|
var stopSound = "StopSound";
|
||||||
|
var loopConfig ={
|
||||||
|
volume : 0.5,
|
||||||
|
loop : true
|
||||||
|
}
|
||||||
|
var configBase = {
|
||||||
|
volume : 0.5,
|
||||||
|
loop : false
|
||||||
|
}
|
||||||
|
var enterSoundUrl = "webrtc-in.mp3";
|
||||||
|
var exitSoundUrl = "webrtc-out.mp3";
|
||||||
|
var winSoundUrl = "Win.ogg";
|
||||||
|
var enterSound;
|
||||||
|
var exitSound;
|
||||||
|
var winSound;
|
||||||
|
loadAllSounds();
|
||||||
|
winSound.play(configBase);
|
||||||
|
WA.onEnterZone(zonePlaySound, () => {
|
||||||
|
enterSound.play(configBase);
|
||||||
|
})
|
||||||
|
|
||||||
|
WA.onEnterZone(zonePlaySoundLoop, () => {
|
||||||
|
winSound.play(loopConfig);
|
||||||
|
})
|
||||||
|
|
||||||
|
WA.onLeaveZone(zonePlaySoundLoop, () => {
|
||||||
|
winSound.stop();
|
||||||
|
})
|
||||||
|
|
||||||
|
WA.onEnterZone('popupZone', () => {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
WA.onLeaveZone('popupZone', () => {
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
function loadAllSounds(){
|
||||||
|
winSound = WA.loadSound(winSoundUrl);
|
||||||
|
enterSound = WA.loadSound(enterSoundUrl);
|
||||||
|
exitSound = WA.loadSound(exitSoundUrl);
|
||||||
|
}
|
134
maps/tests/SoundTest.json
Normal file
134
maps/tests/SoundTest.json
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
{ "compressionlevel":-1,
|
||||||
|
"height":20,
|
||||||
|
"infinite":false,
|
||||||
|
"layers":[
|
||||||
|
{
|
||||||
|
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
"height":20,
|
||||||
|
"id":2,
|
||||||
|
"name":"start",
|
||||||
|
"opacity":1,
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||||
|
"height":20,
|
||||||
|
"id":4,
|
||||||
|
"name":"floor",
|
||||||
|
"opacity":1,
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
"height":20,
|
||||||
|
"id":3,
|
||||||
|
"name":"playSound",
|
||||||
|
"opacity":1,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"zone",
|
||||||
|
"type":"string",
|
||||||
|
"value":"PlaySound"
|
||||||
|
}],
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
"height":20,
|
||||||
|
"id":6,
|
||||||
|
"name":"playSoundLoop",
|
||||||
|
"opacity":1,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"zone",
|
||||||
|
"type":"string",
|
||||||
|
"value":"playSoundLoop"
|
||||||
|
}],
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
"height":20,
|
||||||
|
"id":7,
|
||||||
|
"name":"stopSound",
|
||||||
|
"opacity":1,
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"draworder":"topdown",
|
||||||
|
"id":5,
|
||||||
|
"name":"floorLayer",
|
||||||
|
"objects":[
|
||||||
|
{
|
||||||
|
"height":19.296875,
|
||||||
|
"id":2,
|
||||||
|
"name":"",
|
||||||
|
"rotation":0,
|
||||||
|
"text":
|
||||||
|
{
|
||||||
|
"text":"Play Sound",
|
||||||
|
"wrap":true
|
||||||
|
},
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":107.109375,
|
||||||
|
"x":258.4453125,
|
||||||
|
"y":197.018229166667
|
||||||
|
}],
|
||||||
|
"opacity":1,
|
||||||
|
"type":"objectgroup",
|
||||||
|
"visible":true,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
}],
|
||||||
|
"nextlayerid":8,
|
||||||
|
"nextobjectid":3,
|
||||||
|
"orientation":"orthogonal",
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"script",
|
||||||
|
"type":"string",
|
||||||
|
"value":"SoundScript.js"
|
||||||
|
}],
|
||||||
|
"renderorder":"right-down",
|
||||||
|
"tiledversion":"1.5.0",
|
||||||
|
"tileheight":32,
|
||||||
|
"tilesets":[
|
||||||
|
{
|
||||||
|
"columns":11,
|
||||||
|
"firstgid":1,
|
||||||
|
"image":"tileset1.png",
|
||||||
|
"imageheight":352,
|
||||||
|
"imagewidth":352,
|
||||||
|
"margin":0,
|
||||||
|
"name":"tileset1",
|
||||||
|
"spacing":0,
|
||||||
|
"tilecount":121,
|
||||||
|
"tileheight":32,
|
||||||
|
"tilewidth":32
|
||||||
|
}],
|
||||||
|
"tilewidth":32,
|
||||||
|
"type":"map",
|
||||||
|
"version":1.5,
|
||||||
|
"width":20
|
||||||
|
}
|
BIN
maps/tests/Win.ogg
Normal file
BIN
maps/tests/Win.ogg
Normal file
Binary file not shown.
BIN
maps/tests/webrtc-in.mp3
Normal file
BIN
maps/tests/webrtc-in.mp3
Normal file
Binary file not shown.
BIN
maps/tests/webrtc-out.mp3
Normal file
BIN
maps/tests/webrtc-out.mp3
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user