XDUPlayer/Js/XduPlayer.min.js
firebingo 54c475e44e min js source map.
Moved generic css.
removed fonts.
2018-04-21 13:27:04 -07:00

3 lines
34 KiB
JavaScript

"use strict";let rootUrl=`${window.location.protocol}//${window.location.host}/`;const screenRatio=9/16;class commonFunctions{static getFileText(e){return new Promise((t,i)=>{try{fetch(e).then(e=>{200===e.status?e.text().then(e=>{t(e)}):i(e)},e=>{i(e)})}catch(e){i(e)}})}static getFileJson(e){return new Promise((t,i)=>{try{fetch(e).then(e=>{200===e.status?e.json().then(e=>{t(e)}):i(e)},e=>{i(e)})}catch(e){i(e)}})}static readLine(e,t){if(e.startsWith("//"))return{comment:e};if(e){let i=e.split("\t"),s={};for(let e=0;e<i.length;++e){let a=i[e].trim();s[t[e]]=a}return s}}static lerp(e,t,i,s="linear"){switch(s){default:case"linear":break;case"sin":i*=Math.PI/2,i=Math.sin(i);break;case"fullsin":i*=Math.PI,i=Math.sin(i);break;case"fullwait":i=1-Math.pow(2*i-1,4);break;case"square":i=Math.pow(i,2);break;case"exp":i=Math.pow(i,.25);break;case"sqrt":i=Math.sqrt(i);break;case"dampsin":(i=1*Math.pow(.3,i)*Math.sin(2*Math.PI*i/.5+0)/1.25)<-.45&&(i=-.45)}return(1-i)*e+i*t}static getColorFromName(e){if(!e)return 16777215;switch(e.toLowerCase()){case"black":return 0;case"white":return 16777215}}static convertUtageTextTags(e){let t=(e=(e=e.replace(/<speed.*?>|<\/speed>/g,"")).replace(/\\n/g,"<br/>")).match(/<ruby=.*?<\/ruby>/g);if(t)for(let i=0;i<t.length;++i){let s=t[i],a="",o="",r=!1,n=!1;for(let e=0;e<s.length;++e)"<"===s[e]&&0!==e&&(n=!1),n&&(o+=s[e]),">"===s[e]&&(r=!1,n=!0),r&&(a+=s[e]),"="===s[e]&&(r=!0);e=e.replace(s,`<ruby>${o}<rt>${a}</rt></ruby>`)}return e}static getNewResolution(e,t,i,s){let a={width:0,height:0};if(t>=i){let o=(i-(s||0))/e.height;a.height=e.height*o,a.width=e.width*o,a.width>t&&(o=t/e.width,a.height=e.height*o,a.width=e.width*o)}else if(i>t){let i=t/e.width;a.height=e.height*i,a.width=e.width*i}return a}static getAnchorFromCharPivot(e){let t=.5,i=.5,s=e.split(" ");for(let e of s)e.startsWith("x=")?t=Number(e.substring(2)):e.startsWith("y=")&&(i=1-(i=Number(e.substring(2))));return{x:t,y:i}}static getPropertiesFromTweenCommand(e,t=!0){var i={};let s=e.indexOf("x=");if(-1!==s){i.x="";for(let t=s+2;t<e.length&&" "!=e[t];++t)i.x+=e[t];i.x=Number(i.x)}let a=e.indexOf("y=");if(-1!==a){i.y="";for(let t=a+2;t<e.length&&" "!=e[t];++t)i.y+=e[t];i.y=t?-Number(i.y):Number(i.y)}let o=e.indexOf("time=");if(-1!==o){i.time="";for(let t=o+5;t<e.length&&" "!=e[t];++t)i.time+=e[t];i.time=1e3*Number(i.time)}let r=e.indexOf("delay=");if(-1!==r){i.delay="";for(let t=r+6;t<e.length&&" "!=e[t];++t)i.delay+=e[t];i.delay=1e3*Number(i.delay)}let n=e.indexOf("alpha=");if(-1!==n){i.alpha="";for(let t=n+6;t<e.length&&" "!=e[t];++t)i.alpha+=e[t];i.alpha=Number(i.alpha)}let l=e.indexOf("speed=");if(-1!==l){i.speed="";for(let t=l+6;t<e.length&&" "!=e[t];++t)i.speed+=e[t];i.speed=Number(i.speed)}return i}}class TextFunctions{constructor(){this.mainUi=void 0,this.title=void 0,this.diva=void 0,this.dialogBox=void 0,this.character=void 0,this.dialog=void 0,this.textScrollSpeedMs=35,this.scrollControls=void 0,this.nextIndicator=void 0,this.dialogToDisplay={timeout:void 0,fullText:"",text:"",curPos:0},this.scrollingText=!1,this.lineHeight=-1,this.textHistory=[]}findTextElements(){this.mainUi=document.getElementById("main-ui-img"),this.title=document.getElementById("title"),this.diva=document.getElementById("diva"),this.dialogBox=document.getElementById("dialog-box"),this.character=document.getElementById("character"),this.dialog=document.getElementById("dialog"),this.dialogInner=document.getElementById("dialog-inner"),this.scrollControls=document.getElementById("dialog-scroll"),this.nextIndicator=document.getElementById("dialog-next")}titleText(e,t){void 0!=t&&(this.title.innerHTML=t),this.title.classList.toggle("hidden",!e)}divaText(e,t){void 0!=t&&(this.diva.innerHTML=t),this.diva.classList.toggle("hidden",!e)}characterName(e,t){void 0!=t&&(this.character.innerHTML=t),this.mainUi.classList.toggle("hidden",!e),this.character.classList.toggle("hidden",!e)}dialogText(e,t){-1==this.lineHeight&&(this.lineHeight=Number(window.getComputedStyle(this.dialog,null).getPropertyValue("line-height").replace("px",""))),this.showNextIndicator(!1),this.showScrollControls(!1),void 0!=t&&(this.dialogToDisplay.timeout&&(clearTimeout(this.dialogToDisplay.timeout),this.dialogToDisplay.timeout=void 0),""===t?(this.dialogInner.innerHTML=t,this.scrollingText=!1):(this.dialogToDisplay.text=t,this.dialogToDisplay.fullText=t,this.textHistory.push({character:this.character.innerHTML,text:t}),this.dialogToDisplay.curPos=0,this.dialogInner.innerHTML="",this.scrollingText=!0,this.dialogToDisplay.timeout=setTimeout(function e(){this.dialogToDisplay.curPos=this.typeHtmlChars(this.dialogToDisplay.text,this.dialogToDisplay.curPos);this.dialogToDisplay.text.substr(this.dialogToDisplay.curPos);if(this.dialogToDisplay.curPos===this.dialogToDisplay.text.length)return this.showNextIndicator(!0),void(this.scrollingText=!1);{this.dialogToDisplay.curPos+=1;const e=this.dialogToDisplay.text.substr(0,this.dialogToDisplay.curPos);this.dialogInner.innerHTML=e;let t=2*this.lineHeight;this.dialogInner.offsetHeight>t+5&&(this.dialog.scrollTop=this.dialogInner.offsetHeight-t,this.showScrollControls(!0))}this.dialogToDisplay.timeout=setTimeout(e.bind(this),this.textScrollSpeedMs)}.bind(this),this.textScrollSpeedMs))),this.mainUi.classList.toggle("hidden",!e),this.dialogBox.classList.toggle("hidden",!e)}showDialogFullText(){this.dialogToDisplay.timeout&&(clearTimeout(this.dialogToDisplay.timeout),this.dialogToDisplay.timeout=void 0),this.dialogInner.innerHTML=this.dialogToDisplay.fullText;let e=2*this.lineHeight;this.dialogInner.offsetHeight>e+5&&(this.dialog.scrollTop=this.dialogInner.offsetHeight-e,this.showScrollControls(!0)),this.showNextIndicator(!0),this.scrollingText=!1}typeHtmlChars(e,t){const i=e.substr(t).charAt(0);if("<"===i||"&"===i){let s="";for(s="<"===i?">":";";e.substr(t+1).charAt(0)!==s&&!(++t+1>e.length););t++}return t}showScrollControls(e){this.scrollControls.classList.toggle("hidden",!e)}scrollTextUp(){let e=2*this.lineHeight,t=this.dialog.scrollTop-e;t<0&&(t=0),this.dialog.scrollTop=t}scrollTextDown(){let e=2*this.lineHeight,t=this.dialog.scrollTop+e;t>this.dialogInner.offsetHeight-e&&(t=this.dialogInner.offsetHeight-e),this.dialog.scrollTop=t}showNextIndicator(e){this.nextIndicator.classList.toggle("hidden",!e)}hideUi(e){this.mainUi.classList.toggle("hidden",!e),this.dialogBox.classList.toggle("hidden",!e),this.character.classList.toggle("hidden",!e)}resetAll(){this.title.innerHTML="",this.diva.innerHTML="",this.character.innerHTML="",this.dialogInner.innerHTML="",this.title.classList.add("hidden"),this.diva.classList.add("hidden"),this.mainUi.classList.add("hidden"),this.character.classList.add("hidden"),this.dialogBox.classList.add("hidden"),this.scrollControls.classList.add("hidden"),this.nextIndicator.classList.add("hidden"),this.textHistory.length=0,this.dialogToDisplay.timeout&&clearTimeout(this.dialogToDisplay.timeout),this.dialogToDisplay={timeout:void 0,fullText:"",text:"",curPos:0},this.scrollingText=!1,this.lineHeight=-1}}class UtageInfo{constructor(){this.currentPlayingFile=[],this.rootDirectory=`${rootUrl}XDUPlayer/`,this.availableMissions={},this.missionsList=[],this.characterInfo={},this.layerInfo={},this.localizeInfo={},this.paramInfo={},this.soundInfo={},this.textureInfo={},this.translations={},this.currentTranslation={},this.bgmLoopData={}}loadUtageSettings(e,t){return new Promise((e,t)=>{let i=[commonFunctions.getFileJson(`${this.rootDirectory}Js/XduMissions.json`),commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Character.tsv`),commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Layer.tsv`),commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Localize.tsv`),commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Param.tsv`),commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Sound.tsv`),commonFunctions.getFileText(`${this.rootDirectory}XDUData/Utage/Diva/Settings/Texture.tsv`),commonFunctions.getFileJson(`${this.rootDirectory}Js/bgmLoop.json`)];Promise.all(i).then(t=>{this.availableMissions=t[0],this.missionsList=Object.keys(this.availableMissions).map(e=>`${this.availableMissions[e].Id}|${this.availableMissions[e].Name}`),this.missionsList.sort(),this.parseCharacterInfo(t[1]),this.parseLayerInfo(t[2]),this.parseLocalizeInfo(t[3]),this.parseParamInfo(t[4]),this.parseSoundInfo(t[5]),this.parseTextureInfo(t[6]),this.bgmLoopData=t[7],e()},e=>{t(e)})})}parseMissionFile(e){return new Promise((t,i)=>{commonFunctions.getFileText(e).then(e=>{let i=e.split("\n"),s=[];for(let e=0;e<i.length;++e){let t=i[e];if(0===e)s=t.trim().split("\t");else{let e=commonFunctions.readLine(t,s);e&&this.currentPlayingFile.push(e)}}this.currentPlayingFile.reverse(),t()},e=>{i(e)})})}loadMissionTranslation(e,t){return new Promise((i,s)=>{this.translations[t]?(this.currentTranslation=this.translations[t],i()):commonFunctions.getFileJson(e).then(e=>{this.translations[t]=e,this.currentTranslation=e,i()},e=>{this.currentTranslation={},i()})})}parseCharacterInfo(e){let t=e.split("\n"),i=[],s="",a="";for(let e=0;e<t.length;++e){let o=t[e];if(0===e)i=o.split("\t");else{let e=commonFunctions.readLine(o,i);e&&!e.comment&&(e.CharacterName&&(s=e.CharacterName),delete e.CharacterName,e.NameText?a=e.NameText:e.NameText=a,e.FileName&&!e.FileName.startsWith("file://")&&(e.FileName=`${this.rootDirectory}XDUData/Character/${e.FileName}`),this.characterInfo[s]||(this.characterInfo[s]={}),this.characterInfo[s][e.Pattern||"none"]=e)}}}parseLayerInfo(e){let t=e.split("\n"),i=[];for(let e=0;e<t.length;++e){let s=t[e];if(0===e)i=s.split("\t");else{let e=commonFunctions.readLine(s,i);e&&e.LayerName&&(this.layerInfo[e.LayerName]=e)}}}parseLocalizeInfo(e){let t=e.split("\n"),i=[];for(let e=0;e<t.length;++e){let s=t[e];if(0===e)i=s.split("\t");else{let e=commonFunctions.readLine(s,i);e&&e.Key&&(this.localizeInfo[e.Key]=e)}}}parseParamInfo(e){let t=e.split("\n"),i=[];for(let e=0;e<t.length;++e){let s=t[e];if(0===e)i=s.split("\t");else{let e=commonFunctions.readLine(s,i);e&&e.Label&&(this.paramInfo[e.Label]=e)}}}parseSoundInfo(e){let t=e.split("\n"),i=[];for(let e=0;e<t.length;++e){let s=t[e];if(0===e)i=s.split("\t");else{let e=commonFunctions.readLine(s,i);if(e&&e.Label){if(e.FileName&&e.Type)switch(e.origFileName=e.FileName,e.FileName.includes(".")||(e.FileName=`${e.FileName}.opus`),e.Type.toLowerCase()){case"se":if(e.FileName.includes(",")){let t=e.FileName.split(",");e.FileName=`${t[0].split("_").join("/")}/${t[1]}`}e.FileName=`${this.rootDirectory}XDUData/Se/${e.FileName}`;break;case"bgm":e.FileName=`${this.rootDirectory}XDUData/Bgm/${e.FileName}`}this.soundInfo[e.Label]=e}}}}parseTextureInfo(e){let t=e.split("\n"),i=[];for(let e=0;e<t.length;++e){let s=t[e];if(0===e)i=s.split("\t");else{let e=commonFunctions.readLine(s,i);e&&e.Label&&(e.FileName=`${this.rootDirectory}XDUData/BG/${e.FileName}`,this.textureInfo[e.Label]=e)}}}resetTranslations(){this.translations={},this.currentTranslation={}}}class bufferLoader{constructor(e,t,i){this.context=e,this.soundMap=t,this.onloadUpdate=i,this.bufferList={},this.loadCount=0}load(){for(let e of this.soundMap)this.loadBuffer(e.FileName,e.Label)}loadBuffer(e,t){return new Promise((i,s)=>{try{fetch(e).then(a=>{if(200!==a.status)return this.onloadUpdate&&this.onloadUpdate(++this.loadCount/this.soundMap.length*100),void s(a);a.arrayBuffer().then(a=>{this.context.decodeAudioData(a,a=>{a||s("error decoding file data: "+e),this.bufferList[t]=a,this.onloadUpdate&&this.onloadUpdate(++this.loadCount/this.soundMap.length*100),i(`${this.loadCount}|${this.soundMap.length}`)},function(i){console.log(i),console.log(`url: ${e}, name: ${t}`),this.onloadUpdate&&this.onloadUpdate(++this.loadCount/this.soundMap.length*100),s(i)})})},e=>{console.log(e),s(e)})}catch(e){console.log(e),s(e)}})}resetAll(){this.bufferList={}}}class audioController{constructor(e){this.utage=e,this.volume=1,this.muted=!1,this.audioCtx=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioCtx.createGain(),this.gainNode.connect(this.audioCtx.destination),this.loader=void 0,this.sources={}}playSound(e,t){if(!this.loader.bufferList[e])return;let i=this.audioCtx.createBufferSource();if(this.sources[e]=i,i.buffer=this.loader.bufferList[e],i.loop=!1,"bgm"===t&&this.utage.bgmLoopData[this.utage.soundInfo[e].origFileName]){let t=this.utage.bgmLoopData[this.utage.soundInfo[e].origFileName];i.loopStart=t.loop_start.seconds,i.loopEnd=t.loop_end.seconds,i.loop=!0}i.connect(this.gainNode),i.onended=(()=>{this.sources[e]&&(this.sources[e].disconnect(this.gainNode),this.sources[e]=void 0)}),i.start(0)}stopSound(e){if("bgm"===e)for(let e of Object.keys(this.sources))try{if(!e.startsWith("bgm"))continue;let t=this.sources[e];t.stop(),t.disconnect(this.gainNode),t=void 0}catch(e){}else{if(!this.sources[e])return;this.sources[e].stop(),this.sources[e].disconnect(this.gainNode),this.sources[e]=void 0}}changeVolume(e){this.volume=(Math.exp(e)-1)/(Math.E-1),this.muted||this.gainNode.gain.setValueAtTime(this.volume,this.audioCtx.currentTime)}mute(e){this.muted=void 0!=e?e:!this.muted,this.muted?this.gainNode.gain.setValueAtTime(0,this.audioCtx.currentTime):this.gainNode.gain.setValueAtTime(this.volume,this.audioCtx.currentTime)}loadSounds(e,t){this.loader=new bufferLoader(this.audioCtx,e,e=>{t&&t(e)}),this.loader.load()}resetAll(){this.loader&&(this.loader.resetAll(),this.loader=void 0);for(let e of Object.keys(this.sources)){let t=this.sources[e];try{t.stop(),t.disconnect(this.gainNode),t=void 0}catch(e){}}this.sources={}}}const baseDimensions={width:1334,height:750};class Player{constructor(e,t,i,s){this.pixi=e,this.loader=e.loader,this.utage=t,this.text=i,this.audio=s,this.resolutionScale=1,this.baseFps=60,this.bgLayerName="背景",this.defaultCharPattern="すまし",this.backCharTint=8421504,this.titleWaitTime=1,this.blackBackSp=void 0,this.currentCharacters={},this.lastCharOffLayer=void 0,this.layers={},this.sprites={},this.currentCommand=void 0,this.runEvent=!1,this.secondTicker=1e3,this.waitTime=0,this.lerpTargets=[],this.manualNext=!1,this.hasMoreText=!1,this.uiHidden=!1,this.center={x:baseDimensions.width/2*this.resolutionScale,y:baseDimensions.height/2*this.resolutionScale},this.assetLoadPercent=0,this.audioLoadPercent=0,this.playingVoice=void 0}playFile(){let e=new Promise((e,t)=>{this.resolve=e,this.reject=t});return this.preCheckFilesToGet().then(e=>{this.pixi.app.ticker.add(this.onPixiTick,this)},e=>{console.log(e)}),e}preCheckFilesToGet(){return new Promise((e,t)=>{let i={},s={};for(let e=0;e<utage.currentPlayingFile.length;++e)try{let t=utage.currentPlayingFile[e];if(t.comment)continue;switch(t.Command?t.Command.toLowerCase():""){case"bg":this.utage.textureInfo[t.Arg1]?this.loader.resources[`bg|${t.Arg1}`]||this.loader.add(`bg|${t.Arg1}`,this.utage.textureInfo[t.Arg1].FileName):this.utage.textureInfo[t.Arg1]||console.log(`Failed to get BG: ${t.Arg1}`);break;case"":let e=t.Arg2;if(t.Arg1&&this.utage.characterInfo[t.Arg1]&&!e&&(e=this.defaultCharPattern),this.utage.characterInfo[t.Arg1]&&this.utage.characterInfo[t.Arg1][e]&&e&&"<Off>"!=e?this.loader.resources[`char|${t.Arg1}|${e}`]||this.loader.add(`char|${t.Arg1}|${e}`,this.utage.characterInfo[t.Arg1][e].FileName):!t.Arg1||!e||"<Off>"==e||this.utage.characterInfo[t.Arg1]&&this.utage.characterInfo[t.Arg1][e]||console.log(`Failed to get Character: ${t.Arg1}|${e}`),t.Voice){let e=t.Voice;if(e.includes(",")){let t=e.split(",");e=`${t[0].split("_").join("/")}/${t[1]}`}e=`${this.utage.rootDirectory}XDUData/Voice/${e}.opus`,s[t.Voice]||(s[t.Voice]={Label:t.Voice,FileName:e})}break;case"bgm":this.utage.soundInfo[t.Arg1]?i[t.Arg1]||(i[t.Arg1]=this.utage.soundInfo[t.Arg1]):console.log(`Failed to get BGM: ${t.Arg1}`);break;case"se":this.utage.soundInfo[t.Arg1]?s[t.Arg1]||(s[t.Arg1]=this.utage.soundInfo[t.Arg1]):console.log(`Failed to get SE: ${t.Arg1}`)}}catch(e){console.log(e);continue}let a=[];for(let e of Object.keys(i))a.push(i[e]);for(let e of Object.keys(s))a.push(s[e]);this.audio.loadSounds(a,e=>{this.onAudioProgress(e)}),this.loader.add("bg|whiteFade",`${this.utage.rootDirectory}Images/white.png`),this.loader.on("progress",(e,t)=>{this.onPixiProgress(e,t)}).load(()=>{this.onPixiLoad(e,t)})})}buildLayerContainers(){let e=[];for(let t of Object.keys(this.utage.layerInfo))e.push(this.utage.layerInfo[t]);e.sort(function(e,t){return e.Order-t.Order});let t=new PIXI.Container;t.position.set(this.center.x,this.center.y),t.pivot.set(this.center.x,this.center.y),this.pixi.app.stage.addChild(t),this.layers["bg|mainparent"]={container:t};for(let i of e){this.layers[i.LayerName]={info:i};let e=new PIXI.Container;this.layers[i.LayerName].container=e,t.addChild(e);let s=(baseDimensions.width/2+Number(i.X))*this.resolutionScale,a=(baseDimensions.height/2-Number(i.Y))*this.resolutionScale;e.position.set(s,a),e.visible=!1}let i=new PIXI.Container,s=new PIXI.Sprite(this.loader.resources["bg|whiteFade"].texture);s.height=baseDimensions.height*this.resolutionScale,s.width=baseDimensions.width*this.resolutionScale,this.layers["bg|whiteFade"]={info:void 0,sprite:s,container:i},s.alpha=0,i.addChild(s),this.pixi.app.stage.addChild(i)}onPixiProgress(e,t){this.assetLoadPercent=e.progress,this.text.titleText(!0,`Loading Assets... ${e.progress.toFixed(0)}%`),this.onLoadProgressUpdate()}onAudioProgress(e){this.audioLoadPercent=e,this.onLoadProgressUpdate()}onLoadProgressUpdate(){let e=this.audioLoadPercent/2+this.assetLoadPercent/2;this.text.titleText(!0,`Loading Assets... ${e.toFixed(0)}%`)}onPixiLoad(e,t){100===this.audioLoadPercent?(this.text.titleText(!1,""),setTimeout(()=>{this.runEvent=!0,this.buildLayerContainers(),e()},1e3)):setTimeout(()=>{this.onPixiLoad(e,t)},100)}onPixiTick(e){try{if(!this.runEvent)return;let t=1e3/this.baseFps*e;this.secondTicker-=t,this.waitTime>=0&&(this.waitTime-=t),this.loopHandleLerps(t),this.currentCommand&&this.waitTime<=0&&!this.manualNext&&this.processEndCommand(e),this.currentCommand||this.getNextCommand(),this.currentCommand&&!this.manualNext&&this.waitTime<=0&&this.processCommand(e),this.secondTicker<0&&(this.secondTicker=1e3)}catch(e){console.log(e)}}loopHandleLerps(e){try{let t=[];for(let i=0;i<this.lerpTargets.length;++i)try{let s=this.lerpTargets[i];if(s.curTime+=e,s.curTime<0)continue;let a=s.inter||"linear",o=s.curTime/s.time;if(o>=1&&(o=1,t.push(i),"destroy"===s.post)){s.object.destroy();continue}switch(s.type){case"shake":if(1===o)s.object instanceof HTMLElement?s.object.style="":s.object.position.set(s.initV.x,s.initV.y);else{let e=Math.floor(Math.random()*(s.finalV.x*(1-o))),t=Math.floor(Math.random()*(s.finalV.y*(1-o)));s.object instanceof HTMLElement?s.object.style=`transform: translate(${e}px, ${t}px);`:s.object.position.set(e,t)}break;default:{let e=commonFunctions.lerp(s.initV,s.finalV,o,a),t=s.type.split(".");switch(t.length){case 1:s.object[t[0]]=e;break;case 2:s.object[t[0]][t[1]]=e;break;default:continue}break}}}catch(e){t.push(i)}for(let e=t.length-1;e>-1;--e)this.lerpTargets.splice(t[e],1)}catch(e){console.log(e)}}processCommand(e){try{let i=this.currentCommand;switch((i.Command||"").toLowerCase()){case"scenetitle01":this.waitTime=1e3*this.titleWaitTime;var t=i.English&&utage.currentTranslation[i.English]||i.Text;this.text.titleText(!0,t);break;case"divaeffect":this.waitTime=1e3;t=i.English&&utage.currentTranslation[i.English]||i.Text;this.text.divaText(!0,t);break;case"fadeout":this.text.dialogText(!1,""),this.text.characterName(!1,""),this.waitTime=1e3*Number(i.Arg6),this.layers["bg|whiteFade"].sprite.tint=commonFunctions.getColorFromName(i.Arg1),this.lerpTargets.push({type:"alpha",object:this.layers["bg|whiteFade"].sprite,curTime:0,time:this.waitTime,finalV:1,initV:0});break;case"fadein":this.waitTime=1e3*Number(i.Arg6),this.layers["bg|whiteFade"].sprite.tint=commonFunctions.getColorFromName(i.Arg1),this.lerpTargets.push({type:"alpha",object:this.layers["bg|whiteFade"].sprite,curTime:0,time:this.waitTime,finalV:0,initV:1});break;case"bg":{let e=this.utage.textureInfo[i.Arg1],t=this.layers[this.bgLayerName].container;if(i.Arg6)this.lerpTargets.push({type:"alpha",object:t.children[0],curTime:0,time:1e3*Number(i.Arg6),finalV:0,initV:1,post:"destroy"});else for(let e=0;e<t.children.length;++e)t.children[e].destroy();t.visible=!0;let s=new PIXI.Sprite(this.loader.resources[`bg|${i.Arg1}`].texture);s.scale.set(Number(e.Scale),Number(e.Scale)),s.anchor.set(.5,.5),i.Arg6?(t.addChild(s),s.alpha=0,this.lerpTargets.push({type:"alpha",object:s,curTime:0,time:1e3*Number(i.Arg6),finalV:1,initV:0})):t.addChild(s);break}case"wait":this.waitTime=1e3*Number(i.Arg6);break;case"waitinput":{let e=Number(i.Arg6);e?this.waitTime=1e3*e:this.manualNext=!0;break}case"movecamera":{let e=Number(i.Arg4),t=1-Number(i.Arg3)+1,s=this.layers["bg|mainparent"].container,a=this.center.x+-Number(i.Arg1),o=this.center.y- -Number(i.Arg2);e?(this.waitTime=1e3*e,s.scale.x!==t&&this.lerpTargets.push({type:"scale.x",object:s,curTime:0,time:this.waitTime,finalV:t,initV:s.scale.x}),s.scale.y!==t&&this.lerpTargets.push({type:"scale.y",object:s,curTime:0,time:this.waitTime,finalV:t,initV:s.scale.y}),s.position.x!==a&&this.lerpTargets.push({type:"position.x",object:s,curTime:0,time:this.waitTime,finalV:a,initV:s.position.x}),s.position.y!==o&&this.lerpTargets.push({type:"position.y",object:s,curTime:0,time:this.waitTime,finalV:o,initV:s.position.y}),i.Arg6&&"nowait"===i.Arg6.toLowerCase()&&(this.waitTime=0)):(s.scale.set(t,t),s.position.set(a,o));break}case"characteroff":this.text.dialogText(!1,""),this.text.characterName(!1,"");for(let e of Object.keys(this.currentCharacters)){if(!this.currentCharacters[e])continue;let t=this.currentCharacters[e];if(t.charName===i.Arg1){let s=1e3*Number(i.Arg6);this.lastCharOffLayer=this.currentCharacters[e].layer,this.lerpTargets.push({type:"alpha",object:t.sprite,curTime:0,time:s,finalV:0,initV:1,post:"destroy"}),this.currentCharacters[e]=void 0;break}}case"tween":this.processTween(e,i);break;case"bgm":if(!this.utage.soundInfo[i.Arg1])break;this.audio.playSound(i.Arg1,"bgm");break;case"stopbgm":this.audio.stopSound("bgm");break;case"se":if(!this.utage.soundInfo[i.Arg1])break;this.audio.playSound(i.Arg1,"se");break;case"shake":this.processShake(e,i);break;case"henshin01_bgmoff":this.audio.stopSound("bgm"),this.checkPutCharacterScreen(i,!0);break;default:this.processCommandOther(e)}}catch(e){console.log(e)}}processCommandOther(e){let t=this.currentCommand;this.checkPutCharacterScreen(t),this.checkPutText(t)}checkPutCharacterScreen(e,t=!1){if((!e.Command||t)&&e.Arg1&&this.utage.characterInfo[e.Arg1]){let t=void 0,i=void 0;for(let s of Object.keys(this.currentCharacters))this.currentCharacters[s]&&this.currentCharacters[s].charName===e.Arg1&&(i=this.currentCharacters[s],t=this.currentCharacters[s].layer,e.Arg3||(e.Arg3=s));e.Arg2||i?!e.Arg2&&i&&(e.Arg2=i.character.Pattern):e.Arg2=this.defaultCharPattern;let s=this.utage.characterInfo[e.Arg1][e.Arg2];if(e.Arg3&&!i){if(t=this.layers[e.Arg3],i=this.currentCharacters[e.Arg3],!t)return}else if(!i){if(!(t=this.lastCharOffLayer))return;e.Arg3=t.info.LayerName}if(i&&i.charName===e.Arg1&&i.character.Pattern===e.Arg2)return;!i||i.character.NameText===s.NameText&&i.character.Pattern===s.Pattern||(this.lerpTargets.push({type:"alpha",object:i.sprite,curTime:0,time:100,finalV:0,initV:1,post:"destroy"}),this.currentCharacters[e.Arg3]=void 0);let a=new PIXI.Sprite(this.loader.resources[`char|${e.Arg1}|${e.Arg2}`].texture);a.scale.set(Number(s.Scale),Number(s.Scale));let o=commonFunctions.getAnchorFromCharPivot(s.Pivot);a.anchor.set(o.x,o.y),a.alpha=0,this.currentCharacters[e.Arg3]={layer:t,character:s,charName:e.Arg1,sprite:a},this.lerpTargets.push({type:"alpha",object:a,curTime:0,time:100,finalV:1,initV:0}),t.container.addChild(a),t.container.visible=!0}}checkPutText(e){if(this.playingVoice&&this.audio.stopSound(this.playingVoice),!e.Command&&e.Arg1&&e.Text){var t=e.English&&utage.currentTranslation[e.English]||e.Text;if(t=commonFunctions.convertUtageTextTags(t),e.Arg2&&"<off>"===e.Arg2.toLowerCase())this.text.characterName(!0,e.Arg1),this.text.dialogText(!0,commonFunctions.convertUtageTextTags(t));else{let i=!1;for(let s of Object.keys(this.currentCharacters))this.currentCharacters[s]&&(this.currentCharacters[s].charName!==e.Arg1?this.currentCharacters[s].sprite&&(this.currentCharacters[s].sprite.tint=this.backCharTint):(this.text.characterName(!0,this.currentCharacters[s].character.NameText),this.text.dialogText(!0,t),this.currentCharacters[s].sprite.tint=16777215,i=!0));i||(this.text.characterName(!0,e.Arg1),this.text.dialogText(!0,t))}this.manualNext=!0}else if(!e.Command&&"<off>"===e.Arg2.toLowerCase()&&e.Text){t=e.English&&utage.currentTranslation[e.English]||e.Text;this.text.characterName(!0,""),this.text.dialogText(!0,commonFunctions.convertUtageTextTags(t)),this.manualNext=!0}e.Voice&&(this.playingVoice=e.Voice,this.audio.playSound(e.Voice))}processTween(e,t){this.text.dialogText(!1,""),this.text.characterName(!1,"");let i=void 0;for(let e of Object.keys(this.currentCharacters))this.currentCharacters[e]&&(this.currentCharacters[e].charName!==t.Arg1?this.currentCharacters[e].sprite&&(this.currentCharacters[e].sprite.tint=this.backCharTint):(i=this.currentCharacters[e],this.currentCharacters[e].sprite.tint=16777215));if(i)switch(t.Arg2.toLowerCase()){case"moveto":{let e=commonFunctions.getPropertiesFromTweenCommand(t.Arg3);t.Arg6&&"NoWait"===t.Arg6||(this.waitTime=e.time+(e.delay||0)),e.x&&(e.time?this.lerpTargets.push({type:"position.x",object:i.sprite,curTime:0-(e.delay||0),time:e.time,finalV:i.sprite.position.x+e.x,initV:i.sprite.position.x,inter:"exp"}):i.sprite.position.x=i.sprite.position.x+e.x),e.y&&(e.time?this.lerpTargets.push({type:"position.y",object:i.sprite,curTime:0-(e.delay||0),time:e.time,finalV:i.sprite.position.y+e.y,initV:i.sprite.position.y,inter:"exp"}):i.sprite.position.y=i.sprite.position.y+e.y);break}case"punchposition":{let e=commonFunctions.getPropertiesFromTweenCommand(t.Arg3);e.time||(e.time=500),t.Arg6&&"NoWait"===t.Arg6||(this.waitTime=e.time+(e.delay||0)),e.x&&this.lerpTargets.push({type:"position.x",object:i.sprite,curTime:0-(e.delay||0),time:e.time,finalV:i.sprite.position.x+e.x,initV:i.sprite.position.x,inter:"dampsin"}),e.y&&this.lerpTargets.push({type:"position.y",object:i.sprite,curTime:0-(e.delay||0),time:e.time,finalV:i.sprite.position.y+e.y,initV:i.sprite.position.y,inter:"dampsin"});break}case"scaleto":{let e=commonFunctions.getPropertiesFromTweenCommand(t.Arg3,!1);e.time||(e.time=500),e.speed&&(e.time=1e3*e.speed),t.Arg6&&"NoWait"===t.Arg6||(this.waitTime=e.time+(e.delay||0)),e.x&&this.lerpTargets.push({type:"scale.x",object:i.sprite,curTime:0-(e.delay||0),time:e.time,finalV:i.sprite.scale.x*e.x,initV:i.sprite.scale.x}),e.y&&this.lerpTargets.push({type:"scale.y",object:i.sprite,curTime:0-(e.delay||0),time:e.time,finalV:i.sprite.scale.y*e.y,initV:i.sprite.scale.y})}case"colorto":{let e=commonFunctions.getPropertiesFromTweenCommand(t.Arg3);e.alpha&&(e.time?this.lerpTargets.push({type:"alpha",object:i.sprite,curTime:0-(e.delay||0),time:e.time,finalV:e.alpha,initV:i.sprite.alpha}):i.sprite.alpha=0)}}}processShake(e,t){switch(t.Arg1.toLowerCase()){case"camera":{let e=commonFunctions.getPropertiesFromTweenCommand(t.Arg3);e.time||(e.time=1e3),t.Arg6&&"NoWait"===t.Arg6||(this.waitTime=e.time+(e.delay||0)),e.x||(e.x=30),e.y||(e.y=30);let i=this.pixi.app.stage.position;this.lerpTargets.push({type:"shake",object:this.pixi.app.stage,curTime:0-(e.delay||0),time:e.time,finalV:{x:e.x+i.x,y:e.y+i.y},initV:{x:i.x,y:i.y}});break}case"messagewindow":{let e=commonFunctions.getPropertiesFromTweenCommand(t.Arg3);e.time||(e.time=1e3),t.Arg6&&"NoWait"===t.Arg6||(this.waitTime=e.time+(e.delay||0)),e.x||(e.x=30),e.y||(e.y=30),this.lerpTargets.push({type:"shake",object:document.getElementById("dialog-box"),curTime:0-(e.delay||0),time:e.time,finalV:{x:e.x,y:e.y},initV:{x:0,y:0}});break}}}processEndCommand(e){switch(this.currentCommand.Command){case"SceneTitle01":this.text.titleText(!1,"");break;case"DivaEffect":this.text.divaText(!1,"")}this.currentCommand=void 0}checkIfAllOff(){for(let e of Object.keys(this.currentCharacters))if(this.currentCharacters[e])return!1;return!0}onMainClick(e){this.runEvent&&(e.preventDefault(),e.stopPropagation(),this.manualNext&&!this.uiHidden?this.text.scrollingText?this.text.scrollingText&&this.text.showDialogFullText():(this.manualNext=!1,this.waitTime=0):this.uiHidden&&(this.text.hideUi(!0),this.uiHidden=!1))}hideUiClicked(e){this.runEvent&&(e.preventDefault(),e.stopPropagation(),this.uiHidden=!0,this.text.hideUi(!1))}onEndFile(){this.resolve()}getNextCommand(){let e=utage.currentPlayingFile.pop();utage.currentPlayingFile&&0!==utage.currentPlayingFile.length?e&&!e.comment&&(e.Command||e.Arg1||e.Arg2||e.Arg3||e.Arg4||e.Arg5||e.Arg6)?this.currentCommand=e:this.getNextCommand():this.onEndFile()}updateResolution(e){let t=e.height/baseDimensions.height;this.pixi.app.stage.scale.set(t,t),this.pixi.app.renderer.resize(e.width,e.height),document.getElementById("text-container").style.cssText=`transform: scale(${t})`}resetAll(){return new Promise((e,t)=>{try{this.pixi.app.ticker.remove(this.onPixiTick,this),this.pixi.app.stage.children.forEach(function(e){e.destroy(!0,!0,!0)});for(let e of Object.keys(PIXI.utils.TextureCache))PIXI.utils.TextureCache[e]&&PIXI.utils.TextureCache[e].destroy(!0);this.loader.reset(),this.currentCharacters={},this.lastCharOffLayer=void 0,this.layers={},this.sprites={},this.blackBackSp=void 0,this.currentCommand=void 0,this.runEvent=!1,this.secondTicker=1e3,this.waitTime=0,this.lerpTargets=[],this.manualNext=!1,this.hasMoreText=!1,this.audioLoadPercent=0,this.assetLoadPercent=0,this.playingVoice=void 0,this.text.resetAll(),this.audio.resetAll(),this.utage.resetTranslations(),e()}catch(e){t(e)}})}}const pixiApp={app:new PIXI.Application(baseDimensions),loader:PIXI.loader},utage=new UtageInfo,textFunc=new TextFunctions,audio=new audioController(utage),player=new Player(pixiApp,utage,textFunc,audio),context=new(window.AudioContext||window.webkitAudioContext),languages=["eng","jpn"];let bodyLoaded=!1,utageLoaded=!1,selectedLang="eng",currentMission=void 0,screenw=Math.max(document.documentElement.clientWidth,window.innerWidth||0),screenh=Math.max(document.documentElement.clientHeight,window.innerHeight||0),screenSizeTimeout=void 0,isMuted=!1,volume=.5;function onBodyLoaded(){bodyLoaded=!0}function onAllLoaded(e){textFunc.findTextElements(),buildMissionSelectList(),buildLanguageList(),document.getElementById("app-container").appendChild(pixiApp.app.view),setTimeout(()=>{document.getElementById("parent-container").style.cssText="opacity: 1;",onWindowResize(),window.addEventListener("resize",onWindowResize)},0)}function loadLocalStorage(){volume=localStorage.getItem("volume")||.5,volume=Number(volume),audio.changeVolume(volume),document.getElementById("volume-range").value=100*volume,"false"===(isMuted=localStorage.getItem("ismuted")||!1)?isMuted=!1:"true"===isMuted&&(isMuted=!0),audio.mute(isMuted),document.getElementById("mute-button").innerText=isMuted?"🔇":"🔊";let e=localStorage.getItem("language")||"eng";languages.includes(e)&&(selectedLang=e)}function buildMissionSelectList(){let e=document.getElementById("select-mission");e.innerHTML="";for(let t=-1;t<utage.missionsList.length;++t){let i=document.createElement("option");if(-1===t)i.setAttribute("value","{Select}"),i.innerText="Select Mission";else{let e=utage.missionsList[t];i.setAttribute("value",e),i.innerText=e.replace("|"," - ")}e.appendChild(i)}}function buildLanguageList(){let e=document.getElementById("select-language");e.innerHTML="";for(let t=0;t<languages.length;++t){let i=document.createElement("option");i.setAttribute("value",languages[t]),i.innerText=languages[t],e.appendChild(i)}e.value=selectedLang}function missionChanged(e){if(!e||!e.currentTarget||!e.currentTarget.value||"{Select}"===e.currentTarget.value)return;let t=utage.availableMissions[e.currentTarget.value.split("|")[0]];currentMission=t;let i=[utage.parseMissionFile(`${utage.rootDirectory}XDUData/${t.Path.replace("Asset/","").replace(".utage","").replace(".tsv","_t.tsv")}`),utage.loadMissionTranslation(`${utage.rootDirectory}XDUData/${t.Path.replace("Asset/","").replace(".utage","").replace(".tsv",`_translations_${selectedLang}.json`)}`,selectedLang),player.resetAll()];Promise.all(i).then(e=>{player.playFile().then(e=>{player.resetAll(),currentMission=void 0},e=>{currentMission=void 0,console.log(e)})},e=>{currentMission=void 0,console.log(e)})}function languageChanged(e){e&&e.currentTarget&&e.currentTarget.value&&"{Select}"!==e.currentTarget.value&&languages.includes(e.currentTarget.value)&&(selectedLang=e.currentTarget.value,utage.loadMissionTranslation(`${utage.rootDirectory}XDUData/${currentMission.Path.replace("Asset/","").replace(".utage","").replace(".tsv",`_translations_${selectedLang}.json`)}`,selectedLang))}function onMainClick(e){player.onMainClick(e)}function hideUiClicked(e){player.hideUiClicked(e)}function dialogScrollUp(e){e.preventDefault(),e.stopPropagation(),textFunc.scrollTextUp()}function dialogScrollDown(e){e.preventDefault(),e.stopPropagation(),textFunc.scrollTextDown()}function toggleMute(e){isMuted=!isMuted,audio.mute(isMuted),localStorage.setItem("ismuted",isMuted),document.getElementById("mute-button").innerText=isMuted?"🔇":"🔊"}function onVolumeChange(e){let t=e.currentTarget.value/100;audio.changeVolume(t),localStorage.setItem("volume",t)}function onWindowResize(e){screenSizeTimeout&&(clearTimeout(screenSizeTimeout),screenSizeTimeout=void 0),screenSizeTimeout=setTimeout(()=>{screenw=Math.max(document.documentElement.clientWidth,window.innerWidth||0),screenh=Math.max(document.documentElement.clientHeight,window.innerHeight||0);let e=document.getElementById("other-controls-container").offsetHeight+6,t=commonFunctions.getNewResolution(baseDimensions,screenw,screenh,e);player.updateResolution(t),document.getElementById("app-container").style.cssText=`width: ${t.width}px; height: ${t.height}px;`},400)}!function(){let e=[utage.loadUtageSettings()];Promise.all(e).then(e=>{utageLoaded=!0},e=>{console.log(e)})}(),function e(){bodyLoaded&&(document.getElementById("loading-font").style.cssText="display: none;",loadLocalStorage()),utageLoaded&&(document.getElementById("loading-utage").style.cssText="display: none;"),bodyLoaded&&utageLoaded?(document.getElementById("loading-container").style.cssText="opacity: 0;",onAllLoaded()):setTimeout(e,300)}();
//# sourceMappingURL=XduPlayer.min.js.map