@drincs/pixi-vn-json
Version:
Pixi'VN can be integrated with JSON files to create a visual novel.
3 lines (2 loc) • 8.94 kB
JavaScript
;var pixiVn=require('@drincs/pixi-vn');var A="___param___";var V=class e{static _beforeToTranslate=void 0;static _translate=n=>n;static _afterToTranslate=void 0;static t(n){return Array.isArray(n)?n.map(t=>e.translate(`${t}`)):e.translate(`${n}`)}static set beforeToTranslate(n){e._beforeToTranslate=n;}static set translate(n){e._translate=n;}static get translate(){return n=>{let t=n;return e._beforeToTranslate&&(t=e._beforeToTranslate(t)),t=e._translate(t),e._afterToTranslate&&(t=e._afterToTranslate(t)),t}}static set afterToTranslate(n){e._afterToTranslate=n;}static addKey(n,t,r){let i=r.defaultValue||"empty_string";typeof t=="string"&&(t=[t]),Array.isArray(t)&&t.forEach(a=>{n[a]===void 0&&(i==="empty_string"?n[a]="":i==="copy_key"&&(e._beforeToTranslate?n[a]=e._beforeToTranslate(a):n[a]=a));});}static getConditionalsThenElse(n,t=[]){if(typeof n=="object"&&n&&"type"in n)if(n.type==="ifelse")n.then&&e.getConditionalsThenElse(n.then,t),n.else&&e.getConditionalsThenElse(n.else,t);else if(n.type==="stepswitch"){if(n.elements)if(Array.isArray(n.elements))n.elements.forEach(r=>{e.getConditionalsThenElse(r,t);});else if(n.elements.type==="ifelse"){let r=[];e.getConditionalsThenElse(n.elements,r),r.forEach(i=>{t.push(...i);});}else if(n.elements.type==="stepswitch"){let r=[];e.getConditionalsThenElse(n.elements,r),r.forEach(i=>{t.push(...i);});}else e.getConditionalsThenElse(n.elements,t);}else n.type==="resulttocombine"?(n.firstItem&&e.getConditionalsThenElse(n.firstItem,t),n.secondConditionalItem&&n.secondConditionalItem.forEach(r=>{e.getConditionalsThenElse(r,t);})):t.push(n);else n&&t.push(n);return t}static generateJsonTranslation(n,t={},r={}){return n.forEach(i=>{if(i.choices){let a=[];Array.isArray(i.choices)?a=[i.choices]:a=e.getConditionalsThenElse(i.choices),a.forEach(o=>o.forEach(f=>{if("type"in f){let c=[];f.type==="ifelse"||f.type==="stepswitch"?e.getConditionalsThenElse(f,c):c=[f],c.map(g=>e.getConditionalsThenElse(g.text)).forEach(g=>{Array.isArray(g)&&g.forEach(p=>{Array.isArray(p)?p.forEach(x=>{typeof x=="string"?e.addKey(t,x,r):e.getConditionalsThenElse(x).forEach(y=>{Array.isArray(y)?y.forEach(N=>{typeof N=="string"&&e.addKey(t,N,r);}):typeof y=="string"&&e.addKey(t,y,r);});}):typeof p=="string"&&e.addKey(t,p,r);});});}}));}if(i.dialogue){let a=[];Array.isArray(i.dialogue)?a=[i.dialogue]:a=e.getConditionalsThenElse(i.dialogue),a.forEach(o=>{typeof o=="string"?e.addKey(t,o,r):"text"in o&&Array.isArray(o.text)&&o.text.forEach(f=>{typeof f=="string"?e.addKey(t,f,r):e.getConditionalsThenElse(f).forEach(d=>{typeof d=="string"?e.addKey(t,d,r):Array.isArray(d)&&d.forEach(g=>{typeof g=="string"?e.addKey(t,g,r):e.getConditionalsThenElse(g).forEach(p=>{typeof p=="string"&&e.addKey(t,p,r);});});});});});}i.conditionalStep&&e.getConditionalsThenElse(i.conditionalStep).forEach(o=>{Array.isArray(o)?e.generateJsonTranslation(o,t,r):e.generateJsonTranslation([o],t,r);});}),t}};var b=V;var h;(i=>(i.log=(a,...o)=>console.log(`[Pixi\u2019VN Json] ${a}`,...o),i.warn=(a,...o)=>console.warn(`[Pixi\u2019VN Json] ${a}`,...o),i.error=(a,...o)=>console.error(`[Pixi\u2019VN Json] ${a}`,...o),i.info=(a,...o)=>console.info(`[Pixi\u2019VN Json] ${a}`,...o)))(h||={});function L(e,n){return Math.floor(Math.random()*(n-e+1)+e)}function k(e){if(Array.isArray(e)||!e)return e;if(e&&typeof e=="object"&&"type"in e)switch(e.type){case "resulttocombine":return R(e);case "ifelse":return s(e.condition)?s(e.then):s(e.else);case "stepswitch":let t=s(e.elements)||[];if(t.length===0){h.error("getValueFromConditionalStatements elements.length === 0");return}switch(e.choiceType){case "random":let r=L(0,t.length-1);return s(t[r]);case "loop":let i=pixiVn.NarrationManagerStatic.getCurrentStepTimesCounter(e.nestedId)-1;return i>t.length-1&&(i=i%t.length),s(t[i]);case "sequential":let a,o=pixiVn.NarrationManagerStatic.getCurrentStepTimesCounter(e.nestedId)-1;return e.end=="lastItem"&&(a=s(t[t.length-1])),o>t.length-1?a:s(t[o]);case "sequentialrandom":let f=pixiVn.NarrationManagerStatic.getRandomNumber(0,t.length-1,{nestedId:e.nestedId,onceOnly:true});if(f==null&&e.end=="lastItem"){let c=pixiVn.NarrationManagerStatic.getCurrentStepTimesCounterData(e.nestedId);if(!c||!c?.usedRandomNumbers){h.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}let d=c.usedRandomNumbers[`0-${t.length-1}`];return s(t[d[d.length-1]])}if(f==null){h.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}return s(t[f])}}return e}function O(e){if(e.conditionalStep){let n=pixiVn.createExportableElement(s(e.conditionalStep));if(n?.glueEnabled===void 0&&delete n?.glueEnabled,n?.goNextStep===void 0&&delete n?.goNextStep,n?.end===void 0&&delete n?.end,n?.choices===void 0&&delete n?.choices,n?.dialogue===void 0&&delete n?.dialogue,n?.labelToOpen===void 0&&delete n?.labelToOpen,n?.operations===void 0&&delete n?.operations,n){let t={...e,conditionalStep:void 0,...n};return O(t)}else pixiVn.storage.getFlag(pixiVn.SYSTEM_RESERVED_STORAGE_KEYS.ADD_NEXT_DIALOG_TEXT_INTO_THE_CURRENT_DIALOG_FLAG_KEY)&&pixiVn.storage.setFlag(pixiVn.SYSTEM_RESERVED_STORAGE_KEYS.ADD_NEXT_DIALOG_TEXT_INTO_THE_CURRENT_DIALOG_FLAG_KEY,false);}return e}function R(e){let n=e.firstItem,t=[];e.secondConditionalItem?.forEach(i=>{if(Array.isArray(i))i.forEach(a=>{let o=s(a);t.push(o);});else {let a=s(i);t.push(a);}});let r=n?[n,...t]:t;if(r.length===0){h.warn("combinateResult toCheck.length === 0");return}if(typeof r[0]=="string")return b.t(r);if(typeof r[0]=="object"){let i=r,a,o=i.map((l,T)=>{l=O(l);let u=s(l.dialogue)||"";return T===0?(a=s(l.glueEnabled)||false,u):(typeof u=="object"&&"text"in u&&(u=u.character+": "+u.text),a===false&&(u=`
`+u),a=s(l.glueEnabled)||false,u)}),f=s(o[0]),c=typeof f=="object"&&"character"in f?f.character:void 0,d=o.flatMap(l=>{let T;l&&typeof l=="object"&&"text"in l?T=l.text:T=l;let u;return Array.isArray(T)?u=T.map(I=>{let w=s(I);return b.t(`${w}`)}):u=s(T)||"",b.t(u)}),g=i.find(l=>l.end),p=i.find(l=>l.choices),x=false,y=false;i.length>0&&(i[0].glueEnabled&&i[0].goNextStep&&i[0].dialogue===void 0&&pixiVn.storage.setFlag(pixiVn.SYSTEM_RESERVED_STORAGE_KEYS.ADD_NEXT_DIALOG_TEXT_INTO_THE_CURRENT_DIALOG_FLAG_KEY,true),x=i[i.length-1].glueEnabled,y=i.reverse().find(l=>!(l.operations&&(!l.dialogue||!l.choices)))?.goNextStep);let N=i.find(l=>l.labelToOpen),C=[];return i.forEach(l=>{l.operations&&C.forEach(T=>{C.push(T);});}),{dialogue:c?{character:c,text:d}:d,end:g?.end,choices:p?.choices,glueEnabled:x,goNextStep:y,labelToOpen:N?.labelToOpen,operations:C}}}function G(e){if(!e)return false;if(typeof e!="object"||!("type"in e))return !!e;switch(e.type){case "compare":let n=s(e.leftValue),t=s(e.rightValue);switch(e.operator){case "==":return n===t;case "!=":return n!==t;case "<":return n<t;case "<=":return n<=t;case ">":return n>t;case ">=":return n>=t;case "CONTAINS":return n.toString().includes(t.toString())}break;case "valueCondition":return !!s(e.value);case "union":return F(e)}return !!e}function _(e){if(e&&typeof e=="object"&&"type"in e&&e.type==="value"&&e.storageOperationType==="get")switch(e.storageType){case "storage":case "tempstorage":return pixiVn.storage.getVariable(e.key);case "flagStorage":return pixiVn.storage.getFlag(e.key);case "label":return pixiVn.narration.getTimesLabelOpened(e.label);case "choice":return pixiVn.narration.getTimesChoiceMade(e.index);case "logic":return s(e.operation);case "params":let n=pixiVn.storage.getVariable(`${A}${pixiVn.narration.openedLabels.length-1}`)||[];if(n&&n.length>e.key)return n[e.key];h.warn("getValue params not found");return}return e}function F(e){if(e.unionType==="not")return !s(e.condition);let n=e.unionType==="and";for(let t=0;t<e.conditions.length;t++)if(n=s(e.conditions[t])||false,e.unionType==="and"){if(!n)return false}else if(n)return true;return n}function s(e){let n=k(e);if(n&&typeof n=="object"&&"type"in n)switch(n.type){case "value":return _(n);case "arithmetic":case "arithmeticsingle":return $(n);case "compare":case "valueCondition":case "union":return G(n)}return n}function $(e){let n=s(e.leftValue);switch(e.type){case "arithmetic":let t=s(e.rightValue);switch(e.operator){case "*":return n*t;case "/":return n/t;case "+":return n+t;case "-":return n-t;case "%":return n%t;case "POW":return Math.pow(n,t);case "RANDOM":return pixiVn.narration.getRandomNumber(n,t)}case "arithmeticsingle":switch(e.operator){case "INT":return parseInt(n);case "FLOOR":return Math.floor(n);case "FLOAT":return parseFloat(n)}break}}async function ee(e){let n=s(e);if(n)switch(n.type){case "assets":switch(n.operationType){case "load":await pixiVn.Assets.load(n.aliases);break;case "lazyload":pixiVn.Assets.backgroundLoad(n.aliases);break}break;case "bundle":switch(n.operationType){case "load":await pixiVn.Assets.loadBundle(n.aliases);break;case "lazyload":pixiVn.Assets.backgroundLoadBundle(n.aliases);break}break}}exports.loadAssets=ee;