webgal-engine 4.5.13 → 4.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{index-d726bd1f.js → index-3eeb86b4.js} +258 -229
- package/dist/assets/{index.es-8b68ffd3.js → index.es-91e0b61f.js} +1 -1
- package/dist/assets/initRegister-3e6399ee.js +1 -0
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/initRegister-303d274f.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{E as Bt,u as kt,M as yt,T as De,P as Ae,C as Re,O as Oe,a as It}from"./index-
|
|
1
|
+
import{E as Bt,u as kt,M as yt,T as De,P as Ae,C as Re,O as Oe,a as It}from"./index-3eeb86b4.js";var W=Math.pow,I=(s,t,e)=>new Promise((i,r)=>{var a=l=>{try{o(e.next(l))}catch(h){r(h)}},n=l=>{try{o(e.throw(l))}catch(h){r(h)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,n);o((e=e.apply(s,t)).next())});const Kt=2,Qt=2;var gt;(s=>{s.supportMoreMaskDivisions=!0,s.setOpacityFromMotion=!1})(gt||(gt={}));var L;(s=>{s.LOG_LEVEL_VERBOSE=0,s.LOG_LEVEL_WARNING=1,s.LOG_LEVEL_ERROR=2,s.LOG_LEVEL_NONE=999,s.logLevel=s.LOG_LEVEL_WARNING,s.sound=!0,s.motionSync=!0,s.motionFadingDuration=500,s.idleMotionFadingDuration=2e3,s.expressionFadingDuration=500,s.preserveExpressionOnMotion=!0,s.cubism4=gt})(L||(L={}));const xs="0.5.8",C={log(s,...t){L.logLevel<=L.LOG_LEVEL_VERBOSE&&console.log(`[${s}]`,...t)},warn(s,...t){L.logLevel<=L.LOG_LEVEL_WARNING&&console.warn(`[${s}]`,...t)},error(s,...t){L.logLevel<=L.LOG_LEVEL_ERROR&&console.error(`[${s}]`,...t)}};function xt(s,t,e){return s<t?t:s>e?e:s}function Be(s,t){return Math.random()*(t-s)+s}function rt(s,t,e,i,r){const a=t[i];a!==null&&typeof a===s&&(e[r]=a)}function at(s,t,e,i,r){const a=t[i];Array.isArray(a)&&(e[r]=a.filter(n=>n!==null&&typeof n===s))}function pe(s,t){t.forEach(e=>{Object.getOwnPropertyNames(e.prototype).forEach(i=>{i!=="constructor"&&Object.defineProperty(s.prototype,i,Object.getOwnPropertyDescriptor(e.prototype,i))})})}function ke(s){let t=s.lastIndexOf("/");return t!=-1&&(s=s.slice(0,t)),t=s.lastIndexOf("/"),t!==-1&&(s=s.slice(t+1)),s}function Ue(s,t){const e=s.indexOf(t);e!==-1&&s.splice(e,1)}class Ut extends Bt{constructor(t,e){super(),this.expressions=[],this.reserveExpressionIndex=-1,this.destroyed=!1,this.settings=t,this.tag=`ExpressionManager(${t.name})`}init(){this.defaultExpression=this.createExpression({},void 0),this.currentExpression=this.defaultExpression,this.stopAllExpressions()}loadExpression(t){return I(this,null,function*(){if(!this.definitions[t]){C.warn(this.tag,`Undefined expression at [${t}]`);return}if(this.expressions[t]===null){C.warn(this.tag,`Cannot set expression at [${t}] because it's already failed in loading.`);return}if(this.expressions[t])return this.expressions[t];const e=yield this._loadExpression(t);return this.expressions[t]=e,e})}_loadExpression(t){throw new Error("Not implemented.")}setRandomExpression(){return I(this,null,function*(){if(this.definitions.length){const t=[];for(let e=0;e<this.definitions.length;e++)this.expressions[e]!==null&&this.expressions[e]!==this.currentExpression&&e!==this.reserveExpressionIndex&&t.push(e);if(t.length){const e=Math.floor(Math.random()*t.length);return this.setExpression(e)}}return!1})}resetExpression(){this._setExpression(this.defaultExpression)}restoreExpression(){this._setExpression(this.currentExpression)}setExpression(t){return I(this,null,function*(){if(typeof t!="number"&&(t=this.getExpressionIndex(t)),!(t>-1&&t<this.definitions.length)||t===this.expressions.indexOf(this.currentExpression))return!1;this.reserveExpressionIndex=t;const e=yield this.loadExpression(t);return!e||this.reserveExpressionIndex!==t?!1:(this.reserveExpressionIndex=-1,this.currentExpression=e,this._setExpression(e),!0)})}update(t,e){return this.isFinished()?!1:this.updateParameters(t,e)}destroy(){this.destroyed=!0,this.emit("destroy");const t=this;t.definitions=void 0,t.expressions=void 0}}const te=.01,Ve=40/7.5,Ne=1/(.15*1e3);class Ge{constructor(){this.targetX=0,this.targetY=0,this.x=0,this.y=0,this.vx=0,this.vy=0}focus(t,e,i=!1){this.targetX=xt(t,-1,1),this.targetY=xt(e,-1,1),i&&(this.x=this.targetX,this.y=this.targetY)}update(t){const e=this.targetX-this.x,i=this.targetY-this.y;if(Math.abs(e)<te&&Math.abs(i)<te)return;const r=Math.sqrt(W(e,2)+W(i,2)),a=Ve/(1e3/t);let n=a*(e/r)-this.vx,o=a*(i/r)-this.vy;const l=Math.sqrt(W(n,2)+W(o,2)),h=a*Ne*t;l>h&&(n*=h/l,o*=h/l),this.vx+=n,this.vy+=o;const u=Math.sqrt(W(this.vx,2)+W(this.vy,2)),c=.5*(Math.sqrt(W(h,2)+8*h*r)-h);u>c&&(this.vx*=c/u,this.vy*=c/u),this.x+=this.vx,this.y+=this.vy}}class Mt{constructor(t){this.json=t;let e=t.url;if(typeof e!="string")throw new TypeError("The `url` field in settings JSON must be defined as a string.");this.url=e,this.name=ke(this.url)}resolveURL(t){return kt.resolve(this.url,t)}replaceFiles(t){this.moc=t(this.moc,"moc"),this.pose!==void 0&&(this.pose=t(this.pose,"pose")),this.physics!==void 0&&(this.physics=t(this.physics,"physics"));for(let e=0;e<this.textures.length;e++)this.textures[e]=t(this.textures[e],`textures[${e}]`)}getDefinedFiles(){const t=[];return this.replaceFiles(e=>(t.push(e),e)),t}validateFiles(t){const e=(a,n)=>{const o=this.resolveURL(a);if(!t.includes(o)){if(n)throw new Error(`File "${a}" is defined in settings, but doesn't exist in given files`);return!1}return!0};return[this.moc,...this.textures].forEach(a=>e(a,!0)),this.getDefinedFiles().filter(a=>e(a,!1))}}var Ft=(s=>(s[s.NONE=0]="NONE",s[s.IDLE=1]="IDLE",s[s.NORMAL=2]="NORMAL",s[s.FORCE=3]="FORCE",s))(Ft||{});class Xe{constructor(){this.debug=!1,this.currentPriority=0,this.reservePriority=0}reserve(t,e,i){if(i<=0)return C.log(this.tag,"Cannot start a motion with MotionPriority.NONE."),!1;if(t===this.currentGroup&&e===this.currentIndex)return C.log(this.tag,"Motion is already playing.",this.dump(t,e)),!1;if(t===this.reservedGroup&&e===this.reservedIndex||t===this.reservedIdleGroup&&e===this.reservedIdleIndex)return C.log(this.tag,"Motion is already reserved.",this.dump(t,e)),!1;if(i===1){if(this.currentPriority!==0)return C.log(this.tag,"Cannot start idle motion because another motion is playing.",this.dump(t,e)),!1;if(this.reservedIdleGroup!==void 0)return C.log(this.tag,"Cannot start idle motion because another idle motion has reserved.",this.dump(t,e)),!1;this.setReservedIdle(t,e)}else{if(i<3){if(i<=this.currentPriority)return C.log(this.tag,"Cannot start motion because another motion is playing as an equivalent or higher priority.",this.dump(t,e)),!1;if(i<=this.reservePriority)return C.log(this.tag,"Cannot start motion because another motion has reserved as an equivalent or higher priority.",this.dump(t,e)),!1}this.setReserved(t,e,i)}return!0}start(t,e,i,r){if(r===1){if(this.setReservedIdle(void 0,void 0),this.currentPriority!==0)return C.log(this.tag,"Cannot start idle motion because another motion is playing.",this.dump(e,i)),!1}else{if(e!==this.reservedGroup||i!==this.reservedIndex)return C.log(this.tag,"Cannot start motion because another motion has taken the place.",this.dump(e,i)),!1;this.setReserved(void 0,void 0,0)}return t?(this.setCurrent(e,i,r),!0):!1}complete(){this.setCurrent(void 0,void 0,0)}setCurrent(t,e,i){this.currentPriority=i,this.currentGroup=t,this.currentIndex=e}setReserved(t,e,i){this.reservePriority=i,this.reservedGroup=t,this.reservedIndex=e}setReservedIdle(t,e){this.reservedIdleGroup=t,this.reservedIdleIndex=e}isActive(t,e){return t===this.currentGroup&&e===this.currentIndex||t===this.reservedGroup&&e===this.reservedIndex||t===this.reservedIdleGroup&&e===this.reservedIdleIndex}reset(){this.setCurrent(void 0,void 0,0),this.setReserved(void 0,void 0,0),this.setReservedIdle(void 0,void 0)}shouldRequestIdleMotion(){return this.currentGroup===void 0&&this.reservedIdleGroup===void 0}shouldOverrideExpression(){return!L.preserveExpressionOnMotion&&this.currentPriority>1}dump(t,e){if(this.debug){const i=["currentPriority","reservePriority","currentGroup","currentIndex","reservedGroup","reservedIndex","reservedIdleGroup","reservedIdleIndex"];return`
|
|
2
2
|
<Requested> group = "${t}", index = ${e}
|
|
3
3
|
`+i.map(r=>"["+r+"] "+this[r]).join(`
|
|
4
4
|
`)}return""}}const ze="SoundManager",je=.5;class Z{static get volume(){return this._volume}static set volume(t){this._volume=(t>1?1:t<0?0:t)||0,this.audios.forEach(e=>e.volume=this._volume)}static add(t,e,i){const r=new Audio(t);return r.volume=this._volume,r.preload="auto",r.addEventListener("ended",()=>{this.dispose(r),e==null||e()}),r.addEventListener("error",a=>{this.dispose(r),C.warn(ze,`Error occurred on "${t}"`,a.error),i==null||i(a.error)}),this.audios.push(r),r}static play(t){return new Promise((e,i)=>{var r;(r=t.play())==null||r.catch(a=>{t.dispatchEvent(new ErrorEvent("error",{error:a})),i(a)}),t.readyState===t.HAVE_ENOUGH_DATA?e():t.addEventListener("canplaythrough",e)})}static dispose(t){t.pause(),t.removeAttribute("src"),Ue(this.audios,t)}static destroy(){for(let t=this.audios.length-1;t>=0;t--)this.dispose(this.audios[t])}}Z.audios=[];Z._volume=je;var We=(s=>(s.ALL="ALL",s.IDLE="IDLE",s.NONE="NONE",s))(We||{});class Pt extends Bt{constructor(t,e){super(),this.motionGroups={},this.state=new Xe,this.playing=!1,this.destroyed=!1,this.settings=t,this.tag=`MotionManager(${t.name})`,this.state.tag=this.tag}init(t){t!=null&&t.idleMotionGroup&&(this.groups.idle=t.idleMotionGroup),this.setupMotions(t),this.stopAllMotions()}setupMotions(t){for(const i of Object.keys(this.definitions))this.motionGroups[i]=[];let e;switch(t==null?void 0:t.motionPreload){case"NONE":return;case"ALL":e=Object.keys(this.definitions);break;case"IDLE":default:e=[this.groups.idle];break}for(const i of e)if(this.definitions[i])for(let r=0;r<this.definitions[i].length;r++)this.loadMotion(i,r).then()}loadMotion(t,e){return I(this,null,function*(){var i;if(!((i=this.definitions[t])!=null&&i[e])){C.warn(this.tag,`Undefined motion at "${t}"[${e}]`);return}if(this.motionGroups[t][e]===null){C.warn(this.tag,`Cannot start motion at "${t}"[${e}] because it's already failed in loading.`);return}if(this.motionGroups[t][e])return this.motionGroups[t][e];const r=yield this._loadMotion(t,e);if(!this.destroyed)return this.motionGroups[t][e]=r??null,r})}_loadMotion(t,e){throw new Error("Not implemented.")}startMotion(t,e){return I(this,arguments,function*(i,r,a=Ft.NORMAL){var n;if(!this.state.reserve(i,r,a))return!1;const o=(n=this.definitions[i])==null?void 0:n[r];if(!o)return!1;this.currentAudio&&Z.dispose(this.currentAudio);let l;if(L.sound){const u=this.getSoundFile(o);if(u)try{l=Z.add(this.settings.resolveURL(u),()=>this.currentAudio=void 0,()=>this.currentAudio=void 0),this.currentAudio=l}catch(c){C.warn(this.tag,"Failed to create audio",u,c)}}const h=yield this.loadMotion(i,r);if(l){const u=Z.play(l).catch(c=>C.warn(this.tag,"Failed to play audio",l.src,c));L.motionSync&&(yield u)}return this.state.start(h,i,r,a)?(C.log(this.tag,"Start motion:",this.getMotionName(o)),this.emit("motionStart",i,r,l),this.state.shouldOverrideExpression()&&this.expressionManager&&this.expressionManager.resetExpression(),this.playing=!0,this._startMotion(h),!0):(l&&(Z.dispose(l),this.currentAudio=void 0),!1)})}startRandomMotion(t,e){return I(this,null,function*(){const i=this.definitions[t];if(i!=null&&i.length){const r=[];for(let a=0;a<i.length;a++)this.motionGroups[t][a]!==null&&!this.state.isActive(t,a)&&r.push(a);if(r.length){const a=Math.floor(Math.random()*r.length);return this.startMotion(t,r[a],e)}}return!1})}stopAllMotions(){this._stopAllMotions(),this.state.reset(),this.currentAudio&&(Z.dispose(this.currentAudio),this.currentAudio=void 0)}update(t,e){var i;return this.isFinished()&&(this.playing&&(this.playing=!1,this.emit("motionFinish")),this.state.shouldOverrideExpression()&&((i=this.expressionManager)==null||i.restoreExpression()),this.state.complete(),this.state.shouldRequestIdleMotion()&&this.startRandomMotion(this.groups.idle,Ft.IDLE)),this.updateParameters(t,e)}destroy(){var t;this.destroyed=!0,this.emit("destroy"),this.stopAllMotions(),(t=this.expressionManager)==null||t.destroy();const e=this;e.definitions=void 0,e.motionGroups=void 0}}const Ye={x:0,y:0,width:0,height:0};class _e extends Bt{constructor(){super(...arguments),this.focusController=new Ge,this.originalWidth=0,this.originalHeight=0,this.width=0,this.height=0,this.localTransform=new yt,this.drawingMatrix=new yt,this.hitAreas={},this.textureFlipY=!1,this.viewport=[0,0,0,0],this.destroyed=!1}init(){this.setupLayout(),this.setupHitAreas()}setupLayout(){const t=this,e=this.getSize();t.originalWidth=e[0],t.originalHeight=e[1];const i=Object.assign({width:Kt,height:Qt},this.getLayout());this.localTransform.scale(i.width/Kt,i.height/Qt),t.width=this.originalWidth*this.localTransform.a,t.height=this.originalHeight*this.localTransform.d;const r=i.x!==void 0&&i.x-i.width/2||i.centerX!==void 0&&i.centerX||i.left!==void 0&&i.left-i.width/2||i.right!==void 0&&i.right+i.width/2||0,a=i.y!==void 0&&i.y-i.height/2||i.centerY!==void 0&&i.centerY||i.top!==void 0&&i.top-i.height/2||i.bottom!==void 0&&i.bottom+i.height/2||0;this.localTransform.translate(this.width*r,-this.height*a)}setupHitAreas(){const t=this.getHitAreaDefs().filter(e=>e.index>=0);for(const e of t)this.hitAreas[e.name]=e}hitTest(t,e){return Object.keys(this.hitAreas).filter(i=>this.isHit(i,t,e))}isHit(t,e,i){if(!this.hitAreas[t])return!1;const r=this.hitAreas[t].index,a=this.getDrawableBounds(r,Ye);return a.x<=e&&e<=a.x+a.width&&a.y<=i&&i<=a.y+a.height}getDrawableBounds(t,e){const i=this.getDrawableVertices(t);let r=i[0],a=i[0],n=i[1],o=i[1];for(let l=0;l<i.length;l+=2){const h=i[l],u=i[l+1];r=Math.min(h,r),a=Math.max(h,a),n=Math.min(u,n),o=Math.max(u,o)}return e??(e={}),e.x=r,e.y=n,e.width=a-r,e.height=o-n,e}updateTransform(t){this.drawingMatrix.copyFrom(t).append(this.localTransform)}update(t,e){this.focusController.update(t)}destroy(){this.destroyed=!0,this.emit("destroy"),this.motionManager.destroy(),this.motionManager=void 0}}const He="XHRLoader";class ee extends Error{constructor(t,e,i,r=!1){super(t),this.url=e,this.status=i,this.aborted=r}}const E=class{static createXHR(s,t,e,i,r){const a=new XMLHttpRequest;if(E.allXhrSet.add(a),s){let n=E.xhrMap.get(s);n?n.add(a):(n=new Set([a]),E.xhrMap.set(s,n)),s.listeners("destroy").includes(E.cancelXHRs)||s.once("destroy",E.cancelXHRs)}return a.open("GET",t),a.responseType=e,a.onload=()=>{(a.status===200||a.status===0)&&a.response?i(a.response):a.onerror()},a.onerror=()=>{C.warn(He,`Failed to load resource as ${a.responseType} (Status ${a.status}): ${t}`),r(new ee("Network error.",t,a.status))},a.onabort=()=>r(new ee("Aborted.",t,a.status,!0)),a.onloadend=()=>{var n;E.allXhrSet.delete(a),s&&((n=E.xhrMap.get(s))==null||n.delete(a))},a}static cancelXHRs(){var s;(s=E.xhrMap.get(this))==null||s.forEach(t=>{t.abort(),E.allXhrSet.delete(t)}),E.xhrMap.delete(this)}static release(){E.allXhrSet.forEach(s=>s.abort()),E.allXhrSet.clear(),E.xhrMap=new WeakMap}};let Ct=E;Ct.xhrMap=new WeakMap;Ct.allXhrSet=new Set;Ct.loader=(s,t)=>new Promise((e,i)=>{E.createXHR(s.target,s.settings?s.settings.resolveURL(s.url):s.url,s.type,a=>{s.result=a,e()},i).send()});function fe(s,t){let e=-1;return i(0);function i(r,a){if(a)return Promise.reject(a);if(r<=e)return Promise.reject(new Error("next() called multiple times"));e=r;const n=s[r];if(!n)return Promise.resolve();try{return Promise.resolve(n(t,i.bind(null,r+1)))}catch(o){return Promise.reject(o)}}}class j{static load(t){return fe(this.middlewares,t).then(()=>t.result)}}j.middlewares=[Ct.loader];function qe(s,t={}){var e;const i={resourceOptions:{crossorigin:t.crossOrigin}};if(It.fromURL)return It.fromURL(s,i).catch(n=>{if(n instanceof Error)throw n;const o=new Error("Texture loading error");throw o.event=n,o});i.resourceOptions.autoLoad=!1;const r=It.from(s,i);if(r.baseTexture.valid)return Promise.resolve(r);const a=r.baseTexture.resource;return(e=a._live2d_load)!=null||(a._live2d_load=new Promise((n,o)=>{const l=h=>{a.source.removeEventListener("error",l);const u=new Error("Texture loading error");u.event=h,o(u)};a.source.addEventListener("error",l),a.load().then(()=>n(r)).catch(l)})),a._live2d_load}const ie="Live2DFactory",ye=(s,t)=>I(void 0,null,function*(){if(typeof s.source=="string"){const e=yield j.load({url:s.source,type:"json",target:s.live2dModel});e.url=s.source,s.source=e,s.live2dModel.emit("settingsJSONLoaded",e)}return t()}),xe=(s,t)=>I(void 0,null,function*(){if(s.source instanceof Mt)return s.settings=s.source,t();if(typeof s.source=="object"){const e=b.findRuntime(s.source);if(e){const i=e.createModelSettings(s.source);return s.settings=i,s.live2dModel.emit("settingsLoaded",i),t()}}throw new TypeError("Unknown settings format.")}),ve=(s,t)=>{if(s.settings){const e=b.findRuntime(s.settings);if(e)return e.ready().then(t)}return t()},Me=(s,t)=>I(void 0,null,function*(){yield t();const e=s.internalModel;if(e){const i=s.settings,r=b.findRuntime(i);if(r){const a=[];i.pose&&a.push(j.load({settings:i,url:i.pose,type:"json",target:e}).then(n=>{e.pose=r.createPose(e.coreModel,n),s.live2dModel.emit("poseLoaded",e.pose)}).catch(n=>{s.live2dModel.emit("poseLoadError",n),C.warn(ie,"Failed to load pose.",n)})),i.physics&&a.push(j.load({settings:i,url:i.physics,type:"json",target:e}).then(n=>{e.physics=r.createPhysics(e.coreModel,n),s.live2dModel.emit("physicsLoaded",e.physics)}).catch(n=>{s.live2dModel.emit("physicsLoadError",n),C.warn(ie,"Failed to load physics.",n)})),a.length&&(yield Promise.all(a))}}}),Pe=(s,t)=>I(void 0,null,function*(){if(s.settings){const e=s.live2dModel,i=s.settings.textures.map(r=>{const a=s.settings.resolveURL(r);return qe(a,{crossOrigin:s.options.crossOrigin})});if(yield t(),s.internalModel)e.internalModel=s.internalModel,e.emit("modelLoaded",s.internalModel);else throw new TypeError("Missing internal model.");e.textures=yield Promise.all(i),e.emit("textureLoaded",e.textures)}else throw new TypeError("Missing settings.")}),Ce=(s,t)=>I(void 0,null,function*(){const e=s.settings;if(e instanceof Mt){const i=b.findRuntime(e);if(!i)throw new TypeError("Unknown model settings.");const r=yield j.load({settings:e,url:e.moc,type:"arraybuffer",target:s.live2dModel});if(!i.isValidMoc(r))throw new Error("Invalid moc data");const a=i.createCoreModel(r);return s.internalModel=i.createInternalModel(a,e,s.options),t()}throw new TypeError("Missing settings.")}),T=class{static registerRuntime(s){T.runtimes.push(s),T.runtimes.sort((t,e)=>e.version-t.version)}static findRuntime(s){for(const t of T.runtimes)if(t.test(s))return t}static setupLive2DModel(s,t,e){return I(this,null,function*(){const i=new Promise(n=>s.once("textureLoaded",n)),r=new Promise(n=>s.once("modelLoaded",n)),a=Promise.all([i,r]).then(()=>s.emit("ready"));yield fe(T.live2DModelMiddlewares,{live2dModel:s,source:t,options:e||{}}),yield a,s.emit("load")})}static loadMotion(s,t,e){var i,r;const a=n=>s.emit("motionLoadError",t,e,n);try{const n=(i=s.definitions[t])==null?void 0:i[e];if(!n)return Promise.resolve(void 0);s.listeners("destroy").includes(T.releaseTasks)||s.once("destroy",T.releaseTasks);let o=T.motionTasksMap.get(s);o||(o={},T.motionTasksMap.set(s,o));let l=o[t];l||(l=[],o[t]=l);const h=s.getMotionFile(n);return(r=l[e])!=null||(l[e]=j.load({url:h,settings:s.settings,type:s.motionDataType,target:s}).then(u=>{var c;const d=(c=T.motionTasksMap.get(s))==null?void 0:c[t];d&&delete d[e];const _=s.createMotion(u,t,n);return s.emit("motionLoaded",t,e,_),_}).catch(u=>{C.warn(s.tag,`Failed to load motion: ${h}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as B,W as z,C as D,b as G,a as N,S as U,c as R,B as O,R as X}from"./index-3eeb86b4.js";const $=(b,W,k,v,E,M,m)=>{const w=z.gameplay.pixiStage,x=W==="foreground"?w.foregroundEffectsContainer:w.backgroundEffectsContainer,p=R.width,a=R.height,c=new D;c.angle=m;const C=c.rotation,y=Math.abs(Math.cos(C)),d=Math.abs(Math.sin(C)),i=p*y+a*d,f=p*d+a*y;c.width=i,c.height=f,c.pivot.set(i/2,f/2),c.position.set(p/2,a/2),x.addChild(c);const r=new G(E,{scale:!0,position:!0,rotation:!0,uvs:!1,alpha:!0});c.addChild(r);const u=[],I=N.from("./game/tex/cherryBlossoms.png"),S=(h,l)=>h+Math.random()*(l-h);for(let h=0;h<E;h++){const l=Math.random()*Math.PI*2,n=U.from(I);n.anchor.set(.5),n.x=Math.random()*i,n.y=Math.random()*f,n.rotation=Math.random()*Math.PI*2,n.scale.set(Math.cos(l)*M,Math.sin(l)*M),n.speed=(S(.5,2)+S(.1,1))*k,n.rotationSpeed=Math.random()*.015*(Math.random()<.5?1:-1),n.positionPhase=Math.random()*Math.PI*2,n.scalePhase=l,u.push(n),r.addChild(n)}function A(h){const l=Date.now()/1e3;for(const n of u){const P=Math.sin(l+n.positionPhase)*v;n.x+=P*h,n.y+=n.speed*h,n.rotation+=n.rotationSpeed*h;const H=Math.cos(l+n.scalePhase)*M,F=Math.sin(l+n.scalePhase)*M;n.scale.set(H,F);const T=Math.abs(n.width*M),t=Math.abs(n.height*M);n.x+T/2<-i?n.x=i+T/2:n.x-T/2>i&&(n.x=-i-T/2),n.y-t/2>f&&(n.x=Math.random()*i,n.y=-Math.random()*50-t,n.positionPhase=Math.random()*Math.PI*2,n.scalePhase=Math.random()*Math.PI*2,n.speed=(S(.5,2)+S(.1,1))*k,n.rotationSpeed=Math.random()*.015*(Math.random()<.5?1:-1))}}return w.registerAnimation({setStartState:()=>{},setEndState:()=>{},tickerFunc:A},b),{container:c,tickerKey:b}};B("cherryBlossoms",{fg:()=>$("cherry-blossoms-foreground-ticker","foreground",2,3,100,.05,0),bg:()=>$("cherry-blossoms-background-ticker","background",1,2,300,.025,0)});const L=(b,W,k,v,E,M)=>{const m=z.gameplay.pixiStage;m.currentApp;const w=W==="foreground"?m.foregroundEffectsContainer:m.backgroundEffectsContainer,x=R.width,p=R.height,a=new D;a.angle=M;const c=a.rotation,C=Math.abs(Math.cos(c)),y=Math.abs(Math.sin(c)),d=x*C+p*y,i=x*y+p*C;a.width=d,a.height=i,a.pivot.set(d/2,i/2),a.position.set(x/2,p/2),w.addChild(a);const f=new G(v,{scale:!0,position:!0,rotation:!0,alpha:!0,uvs:!1});a.addChild(f);const r=[],u=[],I="./game/tex/rain.png",S=128,A=640,h=5,l=[10,5,2,2,1],n=t=>{if(!t||t.length===0)return 0;const e=t.reduce((o,g)=>o+g,0);if(e<=0)return Math.floor(Math.random()*t.length);let s=Math.random()*e;for(let o=0;o<t.length;o++){if(s<t[o])return o;s-=t[o]}return t.length-1},P=(t,e=!1)=>{const s=Math.random()*.5+.5;t.scale.set(E*s),t.anchor.set(.5),e?(t.x=Math.random()*d,t.y=Math.random()*i):(t.x=Math.random()*d,t.y=-Math.random()*50-t.height),t.alpha=Math.random()*.5+.5,t.vy=(Math.random()*.4+.8)*k},H=()=>{let t;r.length===h?t=n(l):t=Math.floor(Math.random()*r.length),t=Math.max(0,Math.min(t,r.length-1));const e=new U(r[t]);return P(e,!0),e},F=t=>{for(const e of u)e.y+=e.vy*t,(e.y-e.height/2>i||e.x<-e.width||e.x>d+e.width)&&P(e,!1)};return(()=>{for(r.length=0;u.length>0;)u.pop();f.removeChildren();const t=O.from(I),e=()=>{var s;if(t.valid)for(let o=0;o<h;o++){const g=new X(o*S,0,S,A);r.push(new N(t,g))}if(r.length===0){console.error("Failed to create any raindrop textures. Cannot create sprites.");return}(s=r[0])!=null&&s.valid||console.warn("First raindrop texture is invalid after creation. Sprites might not render correctly.");for(let o=0;o<v;o++){const g=H();f.addChild(g),u.push(g)}m.registerAnimation({setStartState:()=>{},setEndState:()=>{},tickerFunc:F},b)};t.valid?e():(t.once("loaded",()=>{e()}),t.once("error",s=>{console.error(`Error loading base texture ${I}:`,s),e()}))})(),{container:a,tickerKey:b}};B("rain",{fg:()=>L("rain-foreground-ticker","foreground",30,50,.4,1),bg:()=>L("rain-background-ticker","background",20,150,.3,1)});const _=(b,W,k,v,E,M)=>{const m=z.gameplay.pixiStage;m.currentApp;const w=W==="foreground"?m.foregroundEffectsContainer:m.backgroundEffectsContainer,x=R.width,p=R.height,a=new D;a.angle=M;const c=a.rotation,C=Math.abs(Math.cos(c)),y=Math.abs(Math.sin(c)),d=x*C+p*y,i=x*y+p*C;a.width=d,a.height=i,a.pivot.set(d/2,i/2),a.position.set(x/2,p/2),w.addChild(a);const f=new G(v,{scale:!0,position:!0,rotation:!0,alpha:!0,uvs:!1});a.addChild(f);const r=[],u=[],I="./game/tex/snow.png",S=128,A=128,h=10,l=[10,2,2,2,1,1,1,2,2,2],n=t=>{if(!t||t.length===0)return 0;const e=t.reduce((o,g)=>o+g,0);if(e<=0)return Math.floor(Math.random()*t.length);let s=Math.random()*e;for(let o=0;o<t.length;o++){if(s<t[o])return o;s-=t[o]}return t.length-1},P=(t,e=!1)=>{const s=Math.random()*.5+.5;t.scale.set(E*s),t.anchor.set(.5),e?(t.x=Math.random()*d,t.y=Math.random()*i):(t.x=Math.random()*d,t.y=-Math.random()*50-t.height),t.alpha=Math.random()*.2+.8,t.vy=(Math.random()*.4+.8)*k,t.vx=(Math.random()-.5)*.25*k,t.rotationSpeed=(Math.random()-.5)*.005},H=()=>{let t;r.length===h?t=n(l):t=Math.floor(Math.random()*r.length),t=Math.max(0,Math.min(t,r.length-1));const e=new U(r[t]);return P(e,!0),e},F=t=>{for(const e of u)e.y+=e.vy*t,e.x+=e.vx*t,e.rotation+=e.rotationSpeed*t,(e.y-e.height/2>i||e.x<-e.width||e.x>d+e.width)&&P(e,!1)};return(()=>{for(r.length=0;u.length>0;)u.pop();f.removeChildren();const t=O.from(I),e=()=>{var s;if(t.valid)for(let o=0;o<h;o++){const g=new X(o*S,0,S,A);r.push(new N(t,g))}if(r.length===0){console.error("Failed to create any snowflake textures. Cannot create sprites.");return}(s=r[0])!=null&&s.valid||console.warn("First snowflake texture is invalid after creation. Sprites might not render correctly.");for(let o=0;o<v;o++){const g=H();f.addChild(g),u.push(g)}m.registerAnimation({setStartState:()=>{},setEndState:()=>{},tickerFunc:F},b)};t.valid?e():(t.once("loaded",()=>{e()}),t.once("error",s=>{console.error(`Error loading base texture ${I}:`,s),e()}))})(),{container:a,tickerKey:b}};B("snow",{fg:()=>_("snow-foreground-ticker","foreground",3,250,.4,0),bg:()=>_("snow-background-ticker","background",1,750,.2,0)});B("heavySnow",{fg:()=>_("heavy-snow-foreground-ticker","foreground",20,1e3,.6,-75),bg:()=>_("heavy-snow-background-ticker","background",10,2e3,.3,-80)});
|
package/dist/index.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<link rel="manifest" href="./manifest.json" />
|
|
8
8
|
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"/>-->
|
|
9
9
|
<title>WebGAL</title>
|
|
10
|
-
<script type="module" crossorigin src="./assets/index-
|
|
10
|
+
<script type="module" crossorigin src="./assets/index-3eeb86b4.js"></script>
|
|
11
11
|
<link rel="stylesheet" href="./assets/index-a8388d26.css">
|
|
12
12
|
</head>
|
|
13
13
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as w,W as p,C,a as k,S as M,b as f,f as b}from"./index-d726bd1f.js";const P=y=>{const S=p.gameplay.pixiStage.effectsContainer,m=p.gameplay.pixiStage.currentApp,t=new C;S.addChild(t);const a=k.from("./game/tex/cherryBlossoms.png");t.x=m.screen.width/2,t.y=m.screen.height/2,t.pivot.x=t.width/2,t.pivot.y=t.height/2,t.scale.x=1,t.scale.y=1;const i=[];function h(c){var r;const g=f.width,x=f.height,n=new M(a);let d=.25;n.scale.x=.15*d,n.scale.y=.15*d,n.anchor.set(.5),n.x=Math.random()*g-.5*g,n.y=0-.5*x,n.dropSpeed=Math.random()*5,n.acc=Math.random(),t.addChild(n),i.push(n);let l=0;for(const e of i){l++;const s=Math.random();e.dropSpeed=e.acc*.01+e.dropSpeed,e.y+=c*y*e.dropSpeed*.3+.7,l%2===0?(e.x+=c*s*.5,e.rotation+=c*s*.03):(e.x-=c*s*.5,e.rotation-=c*s*.03)}i.length>=200&&((r=i.shift())==null||r.destroy(),t.removeChild(t.children[0]))}return p.gameplay.pixiStage.registerAnimation({setStartState:()=>{},setEndState:()=>{},tickerFunc:h},"cherryBlossoms-Ticker"),{container:t,tickerKey:"cherryBlossoms-Ticker"}};w("cherryBlossoms",()=>P(3));const v=(y,u)=>{var g;const m=p.gameplay.pixiStage.effectsContainer,t=p.gameplay.pixiStage.currentApp,a=new C;m.addChild(a);const i=k.from("./game/tex/raindrop.png");a.x=t.screen.width/2,a.y=t.screen.height/2,a.pivot.x=a.width/2,a.pivot.y=a.height/2,a.scale.x=1,a.scale.y=1;const h=[];function c(x){var l;const n=f.width,d=f.height;for(let r=0;r<u;r++){const e=new M(i);let s=Math.random()*2.5+1.5;e.filters=[new b.BlurFilter(s)];let o=Math.random();o<=.5&&(o=.5),e.scale.x=.48*o,e.scale.y=.48*o,e.anchor.set(.5),e.x=Math.random()*n-.5*n,e.y=0-.5*d,e.dropSpeed=Math.random()*1.5,e.acc=Math.random()+.25,e.alpha=Math.random(),e.alpha>=.95&&(e.alpha=.95),e.alpha<=.8&&(e.alpha=.8),a.addChild(e),h.push(e),h.length>=500&&((l=h.shift())==null||l.destroy(),a.removeChild(a.children[0]))}for(const r of h)r.dropSpeed=r.acc*.01+r.dropSpeed,r.y+=x*y*r.dropSpeed*1.1+3}return(g=p.gameplay.pixiStage)==null||g.registerAnimation({setStartState:()=>{},setEndState:()=>{},tickerFunc:c},"rain-Ticker"),{container:a,tickerKey:"rain-Ticker"}};w("rain",()=>v(6,3));const T=y=>{var n;const S=p.gameplay.pixiStage.effectsContainer,m=p.gameplay.pixiStage.currentApp,t=new C;S.addChild(t);const a=k.from("./game/tex/snowFlake_min.png");t.x=m.screen.width/2,t.y=m.screen.height/2,t.pivot.x=t.width/2,t.pivot.y=t.height/2,t.scale.x=1,t.scale.y=1;const i=[];let h=0;const c=f.width,g=f.height;function x(d){var r;if(h++,h%7===1){const e=new M(a);let s=Math.random()*8+1;e.filters=[new b.BlurFilter(s)];let o=Math.random();o<=.5&&(o=.5),e.scale.x=.144*o,e.scale.y=.144*o,e.anchor.set(.5),e.x=Math.random()*c-.5*c,e.y=0-.5*g,e.dropSpeed=Math.random()*2,e.acc=Math.random(),t.addChild(e),i.push(e)}let l=0;for(const e of i){l++;const s=Math.random();e.dropSpeed=e.acc*.01+e.dropSpeed,e.y+=d*y*e.dropSpeed*.3+.7,l%2===0?(e.x+=d*s*.5,e.rotation+=d*s*.03):(e.x-=d*s*.5,e.rotation-=d*s*.03)}i.length>=100&&((r=i.shift())==null||r.destroy(),t.removeChild(t.children[0]))}return(n=p.gameplay.pixiStage)==null||n.registerAnimation({setStartState:()=>{},setEndState:()=>{},tickerFunc:x},"snow-Ticker"),{container:t,tickerKey:"snow-Ticker"}};w("snow",()=>T(3));
|