@drincs/pixi-vn-json
Version:
Pixi'VN can be integrated with JSON files to create a visual novel.
3 lines (2 loc) • 14.2 kB
JavaScript
export*from'@drincs/pixi-vn-json/importer';import {JsonUnifier}from'@drincs/pixi-vn-json/unifier';export*from'@drincs/pixi-vn-json/unifier';import {createExportableElement,storage,SYSTEM_RESERVED_STORAGE_KEYS,narration,canvas,VideoSprite,showVideo,ZoomTicker,RotateTicker,MoveTicker,FadeAlphaTicker,sound,Assets,ImageSprite,showImage,ImageContainer,showImageContainer,shakeEffect,NarrationManagerStatic,pushOut,zoomOut,moveOut,removeWithDissolve,removeWithFade,pushIn,zoomIn,moveIn,showWithDissolve,showWithFade}from'@drincs/pixi-vn';var H=Object.defineProperty;var B=(e,i,t)=>i in e?H(e,i,{enumerable:true,configurable:true,writable:true,value:t}):e[i]=t;var w=(e,i,t)=>B(e,typeof i!="symbol"?i+"":i,t);var J="___param___";var n=class n{static t(i){return Array.isArray(i)?i.map(t=>n.translate(`${t}`)):n.translate(`${i}`)}static set beforeToTranslate(i){n._beforeToTranslate=i;}static set translate(i){n._translate=i;}static get translate(){return i=>{let t=i;return n._beforeToTranslate&&(t=n._beforeToTranslate(t)),t=n._translate(t),n._afterToTranslate&&(t=n._afterToTranslate(t)),t}}static set afterToTranslate(i){n._afterToTranslate=i;}static addKey(i,t,r){let a=r.defaultValue||"empty_string";typeof t=="string"&&(t=[t]),Array.isArray(t)&&t.forEach(s=>{i[s]===void 0&&(a==="empty_string"?i[s]="":a==="copy_key"&&(n._beforeToTranslate?i[s]=n._beforeToTranslate(s):i[s]=s));});}static getConditionalsThenElse(i,t=[]){if(typeof i=="object"&&i&&"type"in i)if(i.type==="ifelse")i.then&&n.getConditionalsThenElse(i.then,t),i.else&&n.getConditionalsThenElse(i.else,t);else if(i.type==="stepswitch"){if(i.elements)if(Array.isArray(i.elements))i.elements.forEach(r=>{n.getConditionalsThenElse(r,t);});else if(i.elements.type==="ifelse"){let r=[];n.getConditionalsThenElse(i.elements,r),r.forEach(a=>{t.push(...a);});}else if(i.elements.type==="stepswitch"){let r=[];n.getConditionalsThenElse(i.elements,r),r.forEach(a=>{t.push(...a);});}else n.getConditionalsThenElse(i.elements,t);}else i.type==="resulttocombine"?(i.firstItem&&n.getConditionalsThenElse(i.firstItem,t),i.secondConditionalItem&&i.secondConditionalItem.forEach(r=>{n.getConditionalsThenElse(r,t);})):t.push(i);else i&&t.push(i);return t}static generateJsonTranslation(i,t={},r={}){let{defaultValue:a="copy_key"}=r;return i.forEach(s=>{if(s.choices){let l=[];Array.isArray(s.choices)?l=[s.choices]:l=n.getConditionalsThenElse(s.choices),l.forEach(c=>c.forEach(u=>{if("type"in u){let p=[];u.type==="ifelse"||u.type==="stepswitch"?n.getConditionalsThenElse(u,p):p=[u],p.map(g=>n.getConditionalsThenElse(g.text)).forEach(g=>{Array.isArray(g)&&g.forEach(T=>{Array.isArray(T)?T.forEach(V=>{typeof V=="string"?n.addKey(t,V,{defaultValue:a}):n.getConditionalsThenElse(V).forEach(N=>{Array.isArray(N)?N.forEach(b=>{typeof b=="string"&&n.addKey(t,b,{defaultValue:a});}):typeof N=="string"&&n.addKey(t,N,{defaultValue:a});});}):typeof T=="string"&&n.addKey(t,T,{defaultValue:a});});});}}));}if(s.dialogue){let l=[];Array.isArray(s.dialogue)?l=[s.dialogue]:l=n.getConditionalsThenElse(s.dialogue),l.forEach(c=>{if(typeof c=="string")n.addKey(t,c,{defaultValue:a});else if("text"in c){let u=n.getConditionalsThenElse(c.text);typeof u=="string"&&(u=[u]),u.forEach(p=>{typeof p=="string"?n.addKey(t,p,{defaultValue:a}):n.getConditionalsThenElse(p).forEach(g=>{typeof g=="string"?n.addKey(t,g,{defaultValue:a}):Array.isArray(g)&&g.forEach(T=>{typeof T=="string"?n.addKey(t,T,{defaultValue:a}):n.getConditionalsThenElse(T).forEach(V=>{typeof V=="string"&&n.addKey(t,V,{defaultValue:a});});});});});}});}s.conditionalStep&&n.getConditionalsThenElse(s.conditionalStep).forEach(c=>{Array.isArray(c)?n.generateJsonTranslation(c,t,r):n.generateJsonTranslation([c],t,r);});}),t}};w(n,"_beforeToTranslate"),w(n,"_translate",i=>i),w(n,"_afterToTranslate");var C=n;var S=C;async function L(e){let i=JsonUnifier.getLogichValue(e);if(i)switch(i.type){case "assets":switch(i.operationType){case "load":await Assets.load(i.aliases);break;case "lazyload":Assets.backgroundLoad(i.aliases);break}break;case "bundle":switch(i.operationType){case "load":await Assets.loadBundle(i.aliases);break;case "lazyload":Assets.backgroundLoadBundle(i.aliases);break}break}}var d;(a=>(a.log=(s,...l)=>console.log(`[Pixi\u2019VN Json] ${s}`,...l),a.warn=(s,...l)=>console.warn(`[Pixi\u2019VN Json] ${s}`,...l),a.error=(s,...l)=>console.error(`[Pixi\u2019VN Json] ${s}`,...l),a.info=(s,...l)=>console.info(`[Pixi\u2019VN Json] ${s}`,...l)))(d||(d={}));async function R(e,i,t){switch(t.type){case "fade":await showWithFade(i.alias,e,t.props,t.priority);break;case "dissolve":await showWithDissolve(i.alias,e,t.props,t.priority);break;case "movein":case "moveout":await moveIn(i.alias,e,t.props,t.priority);break;case "zoomin":case "zoomout":await zoomIn(i.alias,e,t.props,t.priority);break;case "pushin":case "pushout":await pushIn(i.alias,e,t.props,t.priority);break}}function O(e){if(e.transition)switch(e.transition.type){case "fade":removeWithFade(e.alias,e.transition.props,e.transition.priority);break;case "dissolve":removeWithDissolve(e.alias,e.transition.props,e.transition.priority);break;case "movein":case "moveout":moveOut(e.alias,e.transition.props,e.transition.priority);break;case "zoomin":case "zoomout":zoomOut(e.alias,e.transition.props,e.transition.priority);break;case "pushin":case "pushout":pushOut(e.alias,e.transition.props,e.transition.priority);break}else canvas.remove(e.alias);}async function G(e){switch(e.operationType){case "show":if(e.transition){let t=new ImageSprite(e.props,e.url||e.alias);await R(t,e,e.transition);}else await showImage(e.alias,e.url,e.props);break;case "edit":let i=canvas.find(e.alias);i?e.props&&await i.setMemory({...i.memory,...e.props}):d.error(`Image with alias ${e.alias} not found.`);break;case "remove":O(e);break}}async function M(e){switch(e.operationType){case "show":if(e.transition){let a=new VideoSprite(e.props,e.url||e.alias);await R(a,e,e.transition);}else await showVideo(e.alias,e.url,e.props);break;case "edit":let i=canvas.find(e.alias);i?e.props&&await i.setMemory({...i.memory,...e.props}):d.error(`Video with alias ${e.alias} not found.`);break;case "remove":O(e);break;case "pause":let t=canvas.find(e.alias);t?t.paused=true:d.error(`Video with alias ${e.alias} not found.`);break;case "resume":let r=canvas.find(e.alias);r?r.paused=false:d.error(`Video with alias ${e.alias} not found.`);break}}async function $(e){switch(e.operationType){case "show":if(e.transition){let t=new ImageContainer(e.props,e.urls);await R(t,e,e.transition);}else await showImageContainer(e.alias,e.urls,e.props);break;case "edit":let i=canvas.find(e.alias);i?e.props&&await i.setMemory({...i.memory,...e.props}):d.error(`ImageContainer with alias ${e.alias} not found.`);break;case "remove":O(e);break}}async function F(e){switch(e.operationType){case "edit":try{let i=canvas.find(e.alias);i?e.props&&(i.memory={...i.memory,...e.props}):d.error(`Canvas Element with alias ${e.alias} not found.`);}catch(i){d.error(`There was an error while trying to edit the canvas element with alias ${e.alias}.`,i);}break;case "remove":O(e);break}}function _(e){switch(e.type){case "fade":let i=new FadeAlphaTicker(e.props,e.duration,e.priority);canvas.addTicker(e.alias,i);break;case "move":let t=new MoveTicker(e.props,e.duration,e.priority);canvas.addTicker(e.alias,t);break;case "rotate":let r=new RotateTicker(e.props,e.duration,e.priority);canvas.addTicker(e.alias,r);break;case "zoom":let a=new ZoomTicker(e.props,e.duration,e.priority);canvas.addTicker(e.alias,a);break}}async function K(e){switch(e.type){case "shake":await shakeEffect(e.alias,e.props,e.priority);break}}function U(e){switch(e.type){case "animate":canvas.animate(e.alias,e.keyframes,e.options,e.priority);break;case "animate-sequence":canvas.animate(e.alias,e.sequence,e.options,e.priority);break}}function z(e){switch(e.operationType){case "request":narration.requestInput({type:e.valueType},e.defaultValue);break}}function X(e){switch(e.operationType){case "play":sound.play(e.alias,e.props);break;case "stop":sound.stop(e.alias);break;case "pause":sound.pause(e.alias);break;case "resume":sound.resume(e.alias);break;case "volume":sound.volume(e.alias,e.value);break}}function W(e){let i=o(e.value),t;switch(i&&typeof i=="object"&&"type"in i?t=o(i):t=i,e.storageType){case "flagStorage":storage.setFlag(e.key,e.value);break;case "storage":storage.setVariable(e.key,t);break;case "tempstorage":storage.setTempVariable(e.key,t);break;case "params":let r=storage.getVariable(`${J}${narration.openedLabels.length-1}`)||[];r&&r.length-1>=e.key&&(r[e.key]=t),storage.setTempVariable(`${J}${narration.openedLabels.length-1}`,r);break}}function o(e){let i=Ee(e);if(i&&typeof i=="object"&&"type"in i)switch(i.type){case "value":return be(i);case "arithmetic":case "arithmeticsingle":return Ne(i);case "compare":case "valueCondition":case "union":return Pe(i)}return i}function Ne(e){let i=o(e.leftValue);switch(e.type){case "arithmetic":let t=o(e.rightValue);switch(e.operator){case "*":return i*t;case "/":return i/t;case "+":return i+t;case "-":return i-t;case "%":return i%t;case "POW":return Math.pow(i,t);case "RANDOM":return narration.getRandomNumber(i,t)}case "arithmeticsingle":switch(e.operator){case "INT":return parseInt(i);case "FLOOR":return Math.floor(i);case "FLOAT":return parseFloat(i)}break}}function be(e){if(e&&typeof e=="object"&&"type"in e&&e.type==="value"&&e.storageOperationType==="get")switch(e.storageType){case "storage":case "tempstorage":return storage.getVariable(e.key);case "flagStorage":return storage.getFlag(e.key);case "label":return narration.getTimesLabelOpened(e.label);case "choice":return narration.getTimesChoiceMade(e.index);case "logic":return o(e.operation);case "params":let i=storage.getVariable(`${J}${narration.openedLabels.length-1}`)||[];if(i&&i.length>e.key)return i[e.key];d.warn("getValue params not found");return}return e}function Pe(e){if(!e)return false;if(typeof e!="object"||!("type"in e))return !!e;switch(e.type){case "compare":let i=o(e.leftValue),t=o(e.rightValue);switch(e.operator){case "==":return i===t;case "!=":return i!==t;case "<":return i<t;case "<=":return i<=t;case ">":return i>t;case ">=":return i>=t;case "CONTAINS":return i.toString().includes(t.toString())}break;case "valueCondition":return !!o(e.value);case "union":return Je(e)}return !!e}function Je(e){if(e.unionType==="not")return !o(e.condition);let i=e.unionType==="and";for(let t=0;t<e.conditions.length;t++)if(i=o(e.conditions[t])||false,e.unionType==="and"){if(!i)return false}else if(i)return true;return i}function Ce(e,i){return Math.floor(Math.random()*(i-e+1)+e)}function Ee(e){if(Array.isArray(e)||!e)return e;if(e&&typeof e=="object"&&"type"in e)switch(e.type){case "resulttocombine":return we(e);case "ifelse":return o(e.condition)?o(e.then):o(e.else);case "stepswitch":let t=o(e.elements)||[];if(t.length===0){d.error("getValueFromConditionalStatements elements.length === 0");return}switch(e.choiceType){case "random":let r=Ce(0,t.length-1);return o(t[r]);case "loop":let a=NarrationManagerStatic.getCurrentStepTimesCounter(e.nestedId)-1;return a>t.length-1&&(a=a%t.length),o(t[a]);case "sequential":let s,l=NarrationManagerStatic.getCurrentStepTimesCounter(e.nestedId)-1;return e.end=="lastItem"&&(s=o(t[t.length-1])),l>t.length-1?s:o(t[l]);case "sequentialrandom":let c=NarrationManagerStatic.getRandomNumber(0,t.length-1,{nestedId:e.nestedId,onceOnly:true});if(c==null&&e.end=="lastItem"){let u=NarrationManagerStatic.getCurrentStepTimesCounterData(e.nestedId);if(!u||!u?.usedRandomNumbers){d.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}let p=u.usedRandomNumbers[`0-${t.length-1}`];return o(t[p[p.length-1]])}if(c==null){d.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}return o(t[c])}}return e}function v(e){if(e.conditionalStep){let i=createExportableElement(o(e.conditionalStep));if(i?.glueEnabled===void 0&&delete i?.glueEnabled,i?.goNextStep===void 0&&delete i?.goNextStep,i?.end===void 0&&delete i?.end,i?.choices===void 0&&delete i?.choices,i?.dialogue===void 0&&delete i?.dialogue,i?.labelToOpen===void 0&&delete i?.labelToOpen,i?.operations===void 0&&delete i?.operations,i){let t={...e,conditionalStep:void 0,...i};return v(t)}else storage.getFlag(SYSTEM_RESERVED_STORAGE_KEYS.ADD_NEXT_DIALOG_TEXT_INTO_THE_CURRENT_DIALOG_FLAG_KEY)&&storage.setFlag(SYSTEM_RESERVED_STORAGE_KEYS.ADD_NEXT_DIALOG_TEXT_INTO_THE_CURRENT_DIALOG_FLAG_KEY,false);}return e}function we(e){let i=e.firstItem,t=[];e.secondConditionalItem?.forEach(a=>{if(Array.isArray(a))a.forEach(s=>{let l=o(s);t.push(l);});else {let s=o(a);t.push(s);}});let r=i?[i,...t]:t;if(r.length===0){d.warn("combinateResult toCheck.length === 0");return}if(typeof r[0]=="string")return S.t(r);if(typeof r[0]=="object"){let a=r,s,l=a.map((f,x)=>{f=v(f);let m=o(f.dialogue)||"";return x===0?(s=o(f.glueEnabled)||false,m):(typeof m=="object"&&"text"in m&&(m=m.character+": "+m.text),s===false&&(m=`
`+m),s=o(f.glueEnabled)||false,m)}),c=o(l[0]),u=typeof c=="object"&&"character"in c?c.character:void 0,p=l.flatMap(f=>{let x;f&&typeof f=="object"&&"text"in f?x=f.text:x=f;let m;return Array.isArray(x)?m=x.map(q=>{let Y=o(q);return S.t(`${Y}`)}):m=o(x)||"",S.t(m)}),A=a.find(f=>f.end),g=a.find(f=>f.choices),T=false,V=false;a.length>0&&(a[0].glueEnabled&&a[0].goNextStep&&a[0].dialogue===void 0&&storage.setFlag(SYSTEM_RESERVED_STORAGE_KEYS.ADD_NEXT_DIALOG_TEXT_INTO_THE_CURRENT_DIALOG_FLAG_KEY,true),T=a[a.length-1].glueEnabled,V=a.reverse().find(f=>!(f.operations&&(!f.dialogue||!f.choices)))?.goNextStep);let N=a.find(f=>f.labelToOpen),b=[];return a.forEach(f=>{f.operations&&b.forEach(x=>{b.push(x);});}),{dialogue:u?{character:u,text:p}:p,end:A?.end,choices:g?.choices,glueEnabled:T,goNextStep:V,labelToOpen:N?.labelToOpen,operations:b}}}function fi(){JsonUnifier.init({animateOperation:U,canvasElementOperation:F,effectOperation:K,imageContainerOperation:$,imageOperation:G,inputOperation:z,loadAssets:L,soundOperation:X,tickerOperation:_,videoOperation:M,setStorageValue:W,getLogichValue:o,getConditionalStep:v});}export{J as PIXIVNJSON_PARAM_ID,fi as init,S as translator};