litecanvas 0.103.6 → 0.200.0
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/dist.dev.js +19 -6
- package/dist/dist.js +7 -2
- package/dist/dist.min.js +1 -1
- package/package.json +3 -3
- package/src/index.js +26 -7
- package/src/version.js +1 -1
- package/types/global.d.ts +8 -2
- package/types/types.d.ts +8 -2
package/dist/dist.dev.js
CHANGED
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
var assert = (condition, message = "Assertion failed") => {
|
|
116
116
|
if (!condition) throw new Error("[litecanvas] " + message);
|
|
117
117
|
};
|
|
118
|
-
var version = "0.
|
|
118
|
+
var version = "0.200.0";
|
|
119
119
|
function litecanvas(settings = {}) {
|
|
120
120
|
const root = window,
|
|
121
121
|
math = Math,
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
loggerPrefix + "clamp() 3rd param must be a number",
|
|
230
230
|
);
|
|
231
231
|
DEV: assert(
|
|
232
|
-
max
|
|
232
|
+
max >= min,
|
|
233
233
|
loggerPrefix +
|
|
234
234
|
"clamp() the 2nd param must be less than the 3rd param",
|
|
235
235
|
);
|
|
@@ -335,7 +335,7 @@
|
|
|
335
335
|
loggerPrefix + "rand() 2nd param must be a number",
|
|
336
336
|
);
|
|
337
337
|
DEV: assert(
|
|
338
|
-
max
|
|
338
|
+
max >= min,
|
|
339
339
|
loggerPrefix + "rand() the 1st param must be less than the 2nd param",
|
|
340
340
|
);
|
|
341
341
|
const a = 1664525;
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
loggerPrefix + "randi() 2nd param must be a number",
|
|
355
355
|
);
|
|
356
356
|
DEV: assert(
|
|
357
|
-
|
|
357
|
+
max >= min,
|
|
358
358
|
loggerPrefix +
|
|
359
359
|
"randi() the 1st param must be less than the 2nd param",
|
|
360
360
|
);
|
|
@@ -881,7 +881,7 @@
|
|
|
881
881
|
);
|
|
882
882
|
loadPlugin(callback, config);
|
|
883
883
|
},
|
|
884
|
-
listen(eventName, callback) {
|
|
884
|
+
listen: (eventName, callback) => {
|
|
885
885
|
DEV: assert(
|
|
886
886
|
"string" === typeof eventName,
|
|
887
887
|
loggerPrefix + "listen() 1st param must be a string",
|
|
@@ -893,7 +893,20 @@
|
|
|
893
893
|
eventName = lowerCase(eventName);
|
|
894
894
|
_eventListeners[eventName] = _eventListeners[eventName] || new Set();
|
|
895
895
|
_eventListeners[eventName].add(callback);
|
|
896
|
-
|
|
896
|
+
},
|
|
897
|
+
unlisten: (eventName, callback) => {
|
|
898
|
+
DEV: assert(
|
|
899
|
+
"string" === typeof eventName,
|
|
900
|
+
loggerPrefix + "unlisten() 1st param must be a string",
|
|
901
|
+
);
|
|
902
|
+
DEV: assert(
|
|
903
|
+
"function" === typeof callback,
|
|
904
|
+
loggerPrefix + "unlisten() 2nd param must be a function",
|
|
905
|
+
);
|
|
906
|
+
eventName = lowerCase(eventName);
|
|
907
|
+
if (_eventListeners[eventName]) {
|
|
908
|
+
_eventListeners[eventName].delete(callback);
|
|
909
|
+
}
|
|
897
910
|
},
|
|
898
911
|
emit(eventName, arg1, arg2, arg3, arg4) {
|
|
899
912
|
DEV: assert(
|
package/dist/dist.js
CHANGED
|
@@ -409,11 +409,16 @@
|
|
|
409
409
|
use(callback, config = {}) {
|
|
410
410
|
loadPlugin(callback, config);
|
|
411
411
|
},
|
|
412
|
-
listen(eventName, callback) {
|
|
412
|
+
listen: (eventName, callback) => {
|
|
413
413
|
eventName = lowerCase(eventName);
|
|
414
414
|
_eventListeners[eventName] = _eventListeners[eventName] || new Set();
|
|
415
415
|
_eventListeners[eventName].add(callback);
|
|
416
|
-
|
|
416
|
+
},
|
|
417
|
+
unlisten: (eventName, callback) => {
|
|
418
|
+
eventName = lowerCase(eventName);
|
|
419
|
+
if (_eventListeners[eventName]) {
|
|
420
|
+
_eventListeners[eventName].delete(callback);
|
|
421
|
+
}
|
|
417
422
|
},
|
|
418
423
|
emit(eventName, arg1, arg2, arg3, arg4) {
|
|
419
424
|
if (_initialized) {
|
package/dist/dist.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e=["#211e20","#555568","#a0a08b","#e9efec"];window.litecanvas=function(t={}){let a,l=window,n=Math,i=performance,o=2*n.PI,r=requestAnimationFrame,s=[],f=(e,t,a)=>{e.addEventListener(t,a,!1),s.push(()=>e.removeEventListener(t,a,!1))},d=(a=new AudioContext,l.zzfxV=1,(e=1,t=.05,n=220,i=0,o=0,r=.1,s=0,f=1,d=0,c=0,p=0,u=0,h=0,g=0,m=0,v=0,w=0,x=1,y=0,b=0,k=0)=>{let z=Math,E=2*z.PI,P=d*=500*E/44100/44100,T=n*=(1-t+2*t*z.random(t=[]))*E/44100,C=0,I=0,
|
|
1
|
+
(()=>{var e=["#211e20","#555568","#a0a08b","#e9efec"];window.litecanvas=function(t={}){let a,l=window,n=Math,i=performance,o=2*n.PI,r=requestAnimationFrame,s=[],f=(e,t,a)=>{e.addEventListener(t,a,!1),s.push(()=>e.removeEventListener(t,a,!1))},d=(a=new AudioContext,l.zzfxV=1,(e=1,t=.05,n=220,i=0,o=0,r=.1,s=0,f=1,d=0,c=0,p=0,u=0,h=0,g=0,m=0,v=0,w=0,x=1,y=0,b=0,k=0)=>{let z=Math,E=2*z.PI,P=d*=500*E/44100/44100,T=n*=(1-t+2*t*z.random(t=[]))*E/44100,C=0,I=0,L=0,D=1,S=0,A=0,M=0,H=k<0?-1:1,N=E*H*k*2/44100,W=z.cos(N),q=z.sin,B=q(N)/4,O=1+B,V=-2*W/O,R=(1-B)/O,F=(1+H*W)/2/O,G=-(H+W)/O,X=0,Y=0,$=0,j=0;for(i=44100*i+9,y*=44100,o*=44100,r*=44100,w*=44100,c*=500*E/85766121e6,m*=E/44100,p*=E/44100,u*=44100,h=44100*h|0,e*=.3*l.zzfxV,H=i+y+o+r+w|0;L<H;t[L++]=M*e)++A%(100*v|0)||(M=s?1<s?2<s?3<s?q(C*C):z.max(z.min(z.tan(C),1),-1):1-(2*C/E%2+2)%2:1-4*z.abs(z.round(C/E)-C/E):q(C),M=(h?1-b+b*q(E*L/h):1)*(M<0?-1:1)*z.abs(M)**f*(L<i?L/i:L<i+y?1-(L-i)/y*(1-x):L<i+y+o?x:L<H-w?(H-L-w)/r*x:0),M=w?M/2+(w>L?0:(L<H-w?1:(H-L)/w)*t[L-w|0]/2/e):M,k&&(M=j=F*X+G*(X=Y)+F*(Y=M)-R*$-V*($=j))),C+=(N=(n+=d+=c)*z.cos(m*I++))+N*g*q(L**5),D&&++D>u&&(n+=p,T+=p,D=0),!h||++S%h||(n=T,d=P,D=D||1);(e=a.createBuffer(1,H,44100)).getChannelData(0).set(t),(n=a.createBufferSource()).buffer=e,n.connect(a.destination),n.start()});t=Object.assign({width:null,height:null,autoscale:!0,canvas:null,global:!0,loop:null,tapEvents:!0,keyboardEvents:!0},t);let c=!1,p=!0,u,h=1,g,m=.5,v=1,w,x=1e3/60,y,b,k=3,z="sans-serif",E=20,P=1.2,T=Date.now(),C=e,I=[],L=[.5,0,1750,,,.3,1,,,,600,.1],D={},S={W:0,H:0,T:0,MX:-1,MY:-1,TWO_PI:o,HALF_PI:o/4,lerp:(e,t,a)=>e+a*(t-e),deg2rad:e=>n.PI/180*e,rad2deg:e=>180/n.PI*e,round:(e,t=0)=>{if(!t)return n.round(e);let a=10**t;return n.round(e*a)/a},clamp:(e,t,a)=>e<t?t:e>a?a:e,dist:(e,t,a,l)=>n.hypot(a-e,l-t),wrap:(e,t,a)=>e-(a-t)*n.floor((e-t)/(a-t)),map(e,t,a,l,n,i){let o=(e-t)/(a-t)*(n-l)+l;return i?S.clamp(o,l,n):o},norm:(e,t,a)=>S.map(e,t,a,0,1),rand:(e=0,t=1)=>(T=(1664525*T+0x3c6ef35f)%0x100000000)/0x100000000*(t-e)+e,randi:(e=0,t=1)=>~~S.rand(e,t+1),rseed(e){T=~~e},cls(e){null==e?g.clearRect(0,0,S.W,S.H):S.rectfill(0,0,S.W,S.H,e)},rect(e,t,a,l,n,i){g.beginPath(),g[i?"roundRect":"rect"](~~e-m,~~t-m,~~a+2*m,~~l+2*m,i),S.stroke(n)},rectfill(e,t,a,l,n,i){g.beginPath(),g[i?"roundRect":"rect"](~~e,~~t,~~a,~~l,i),S.fill(n)},circ(e,t,a,l){g.beginPath(),g.arc(~~e,~~t,~~a,0,o),S.stroke(l)},circfill(e,t,a,l){g.beginPath(),g.arc(~~e,~~t,~~a,0,o),S.fill(l)},oval(e,t,a,l,n){g.beginPath(),g.ellipse(~~e,~~t,~~a,~~l,0,0,o),S.stroke(n)},ovalfill(e,t,a,l,n){g.beginPath(),g.ellipse(~~e,~~t,~~a,~~l,0,0,o),S.fill(n)},shape(e){g.beginPath();for(let t=0;t<e.length;t+=2)0===t?g.moveTo(~~e[t],~~e[t+1]):g.lineTo(~~e[t],~~e[t+1]);g.lineTo(~~e[0],~~e[1])},line(e,t,a,l,n){g.beginPath();let i=.5*(0!==m&&~~e==~~a),o=.5*(0!==m&&~~t==~~l);g.moveTo(~~e+i,~~t+o),g.lineTo(~~a+i,~~l+o),S.stroke(n)},linewidth(e){g.lineWidth=~~e,m=.5*(0!=~~e%2)},linedash(e,t=0){g.setLineDash(e),g.lineDashOffset=t},text(e,t,a,l=k,n="normal"){g.font=`${n} ${E}px ${z}`,g.fillStyle=W(l);let i=(""+a).split("\n");for(let a=0;a<i.length;a++)g.fillText(i[a],~~e,~~t+E*P*a)},textgap(e){P=e},textfont(e){z=e},textsize(e){E=e},textalign(e,t){e&&(g.textAlign=e),t&&(g.textBaseline=t)},image(e,t,a){g.drawImage(a,~~e,~~t)},spr(e,t,a){let l=a.trim().split("\n");for(let a=0;a<l.length;a++){let n=l[a].trim();for(let l=0;l<n.length;l++){let i=n[l];"."!==i&&" "!==i&&S.rectfill(e+l,t+a,1,1,parseInt(i,36)||0)}}},paint(e,t,a,l={}){let n=l.canvas||new OffscreenCanvas(1,1),i=l.scale||1,o=g;return n.width=e*i,n.height=t*i,(g=n.getContext("2d")).scale(i,i),a(g),g=o,n.transferToImageBitmap()},ctx:e=>(e&&(g=e),g),push(){g.save()},pop(){g.restore()},translate(e,t){g.translate(~~e,~~t)},scale(e,t){g.scale(e,t||e)},rotate(e){g.rotate(e)},alpha(e){g.globalAlpha=S.clamp(e,0,1)},fill(e){g.fillStyle=W(e),g.fill()},stroke(e){g.strokeStyle=W(e),g.stroke()},clip(e){g.beginPath(),e(g),g.clip()},sfx:(e,t=0,a=1)=>!!l.zzfxV&&(!navigator.userActivation||!!navigator.userActivation.hasBeenActive)&&(e=e||L,(0!==t||1!==a)&&((e=e.slice())[0]=a*(e[0]||1),e[10]=~~e[10]+t),d.apply(0,e),e),volume(e){l.zzfxV=e},canvas:()=>u,use(e,t={}){var a=e,l=t;let n=a(S,l);for(let e in n)S.def(e,n[e])},listen:(e,t)=>{D[e=e.toLowerCase()]=D[e]||new Set,D[e].add(t)},unlisten:(e,t)=>{D[e=e.toLowerCase()]&&D[e].delete(t)},emit(e,t,a,l,n){c&&(N("before:"+(e=e.toLowerCase()),t,a,l,n),N(e,t,a,l,n),N("after:"+e,t,a,l,n))},pal(t,a=3){C=t||e,I=[],k=a},palc(e,t){null==e?I=[]:I[e]=t},def(e,a){S[e]=a,t.global&&(l[e]=a)},timescale(e){v=e},framerate(e){x=1e3/~~e},stat(e){let a={index:e,value:[t,c,x/1e3,h,D,C,L,v,l.zzfxV,T,E,z,I,P][e]};return S.emit("stat",a),a.value},pause(){p=!0,cancelAnimationFrame(b)},resume(){c&&p&&(p=!1,y=x,w=i.now(),b=r(M))},paused:()=>p,quit(){for(let e of(S.emit("quit"),S.pause(),c=!1,D={},s))e();if(t.global){for(let e in S)delete l[e];delete l.ENGINE}}};for(let e of"PI,sin,cos,atan2,hypot,tan,abs,ceil,floor,trunc,min,max,pow,sqrt,sign,exp".split(","))S[e]=n[e];function A(){if(t.autoscale&&f(l,"resize",H),t.tapEvents){let e=e=>[(e.pageX-u.offsetLeft)/h,(e.pageY-u.offsetTop)/h],t=new Map,a=(e,a,l)=>{let n={x:a,y:l,xi:a,yi:l,t:i.now()};return t.set(e,n),n},n=(e,l,n)=>{let i=t.get(e)||a(e);i.x=l,i.y=n},o=e=>e&&i.now()-e.t<=300,r=!1;f(u,"mousedown",t=>{if(0===t.button){t.preventDefault();let[l,n]=e(t);S.emit("tap",l,n,0),a(0,l,n),r=!0}}),f(u,"mouseup",a=>{if(0===a.button){a.preventDefault();let l=t.get(0),[n,i]=e(a);o(l)&&S.emit("tapped",l.xi,l.yi,0),S.emit("untap",n,i,0),t.delete(0),r=!1}}),f(l,"mousemove",t=>{t.preventDefault();let[a,l]=e(t);S.def("MX",a),S.def("MY",l),r&&(S.emit("tapping",a,l,0),n(0,a,l))}),f(u,"touchstart",t=>{for(let l of(t.preventDefault(),t.changedTouches)){let[t,n]=e(l);S.emit("tap",t,n,l.identifier+1),a(l.identifier+1,t,n)}}),f(u,"touchmove",t=>{for(let a of(t.preventDefault(),t.changedTouches)){let[t,l]=e(a);S.emit("tapping",t,l,a.identifier+1),n(a.identifier+1,t,l)}});let s=e=>{e.preventDefault();let a=[];if(e.targetTouches.length>0)for(let t of e.targetTouches)a.push(t.identifier+1);for(let[e,l]of t)a.includes(e)||(o(l)&&S.emit("tapped",l.xi,l.yi,e),S.emit("untap",l.x,l.y,e),t.delete(e))};f(u,"touchend",s),f(u,"touchcancel",s),f(l,"blur",()=>{for(let[e,a]of(r=!1,t))S.emit("untap",a.x,a.y,e),t.delete(e)})}if(t.keyboardEvents){let e=new Set,t=new Set,a=(e,t="")=>(t=t.toLowerCase())?e.has("space"===t?" ":t):e.size>0,n="";f(l,"keydown",a=>{let l=a.key.toLowerCase();e.has(l)||(e.add(l),t.add(l),n=" "===l?"space":l)}),f(l,"keyup",t=>{e.delete(t.key.toLowerCase())}),f(l,"blur",()=>e.clear()),S.listen("after:update",()=>t.clear()),S.def("iskeydown",t=>a(e,t)),S.def("iskeypressed",e=>a(t,e)),S.def("lastkey",()=>n)}c=!0,S.resume(),S.emit("init",S)}function M(){b=r(M);let e=i.now(),t=0,a=e-w;for(w=e,y+=a<100?a:x;y>=x;){t++,y-=x;let e=x/1e3*v;S.emit("update",e,t),S.def("T",S.T+e)}t&&(S.emit("draw",g),t>1&&(y=0))}function H(){let e=t.width>0?t.width:innerWidth,a=t.width>0?t.height||t.width:innerHeight;if(S.def("W",e),S.def("H",a),u.width=e,u.height=a,t.autoscale){let l=+t.autoscale;u.style.display||(u.style.display="block",u.style.margin="auto"),h=n.min(innerWidth/e,innerHeight/a),h=l>1&&h>l?l:h,u.style.width=e*h+"px",u.style.height=a*h+"px"}g.imageSmoothingEnabled=!1,S.textalign("start","top"),S.emit("resized",h)}function N(e,t,a,l,n){if(D[e])for(let i of D[e])i(t,a,l,n)}function W(e){return C[~~(I[e]??e)%C.length]}if(t.global){if(l.ENGINE)throw Error("only one global litecanvas is allowed");Object.assign(l,S),l.ENGINE=S}g=(u=(u="string"==typeof t.canvas?document.querySelector(t.canvas):t.canvas)||document.createElement("canvas")).getContext("2d"),f(u,"click",()=>focus()),H(),u.parentNode||document.body.appendChild(u),u.style.imageRendering="pixelated",u.oncontextmenu=()=>!1;let q=t.loop?t.loop:l;for(let e of"init,update,draw,tap,untap,tapping,tapped,resized".split(","))q[e]&&S.listen(e,q[e]);return"loading"===document.readyState?f(l,"DOMContentLoaded",()=>r(A)):b=r(A),S}})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "litecanvas",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.200.0",
|
|
4
4
|
"description": "Lightweight HTML5 canvas 2D game engine suitable for small projects and creative coding. Inspired by PICO-8 and p5.js/Processing.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Luiz Bills <luizbills@pm.me>",
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
"creative coding"
|
|
33
33
|
],
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@happy-dom/global-registrator": "^20.8.
|
|
35
|
+
"@happy-dom/global-registrator": "^20.8.4",
|
|
36
36
|
"@size-limit/preset-small-lib": "^12.0.1",
|
|
37
37
|
"@swc/core": "^1.15.18",
|
|
38
38
|
"ava": "^7.0.0",
|
|
39
|
-
"esbuild": "^0.27.
|
|
39
|
+
"esbuild": "^0.27.4",
|
|
40
40
|
"genversion": "^3.2.0",
|
|
41
41
|
"gzip-size": "^7.0.0",
|
|
42
42
|
"prettier": "^3.8.1",
|
package/src/index.js
CHANGED
|
@@ -210,7 +210,7 @@ export default function litecanvas(settings = {}) {
|
|
|
210
210
|
DEV: assert(isNumber(min), loggerPrefix + 'clamp() 2nd param must be a number')
|
|
211
211
|
DEV: assert(isNumber(max), loggerPrefix + 'clamp() 3rd param must be a number')
|
|
212
212
|
DEV: assert(
|
|
213
|
-
max
|
|
213
|
+
max >= min,
|
|
214
214
|
loggerPrefix + 'clamp() the 2nd param must be less than the 3rd param'
|
|
215
215
|
)
|
|
216
216
|
|
|
@@ -319,7 +319,7 @@ export default function litecanvas(settings = {}) {
|
|
|
319
319
|
DEV: assert(isNumber(min), loggerPrefix + 'rand() 1st param must be a number')
|
|
320
320
|
DEV: assert(isNumber(max), loggerPrefix + 'rand() 2nd param must be a number')
|
|
321
321
|
DEV: assert(
|
|
322
|
-
max
|
|
322
|
+
max >= min,
|
|
323
323
|
loggerPrefix + 'rand() the 1st param must be less than the 2nd param'
|
|
324
324
|
)
|
|
325
325
|
|
|
@@ -343,7 +343,7 @@ export default function litecanvas(settings = {}) {
|
|
|
343
343
|
DEV: assert(isNumber(min), loggerPrefix + 'randi() 1st param must be a number')
|
|
344
344
|
DEV: assert(isNumber(max), loggerPrefix + 'randi() 2nd param must be a number')
|
|
345
345
|
DEV: assert(
|
|
346
|
-
|
|
346
|
+
max >= min,
|
|
347
347
|
loggerPrefix + 'randi() the 1st param must be less than the 2nd param'
|
|
348
348
|
)
|
|
349
349
|
|
|
@@ -1079,9 +1079,8 @@ export default function litecanvas(settings = {}) {
|
|
|
1079
1079
|
*
|
|
1080
1080
|
* @param {string} eventName the event type name
|
|
1081
1081
|
* @param {Function} callback the function that is called when the event occurs
|
|
1082
|
-
* @returns {Function} a function to remove the listener
|
|
1083
1082
|
*/
|
|
1084
|
-
listen(eventName, callback) {
|
|
1083
|
+
listen: (eventName, callback) => {
|
|
1085
1084
|
DEV: assert(
|
|
1086
1085
|
'string' === typeof eventName,
|
|
1087
1086
|
loggerPrefix + 'listen() 1st param must be a string'
|
|
@@ -1095,9 +1094,29 @@ export default function litecanvas(settings = {}) {
|
|
|
1095
1094
|
|
|
1096
1095
|
_eventListeners[eventName] = _eventListeners[eventName] || new Set()
|
|
1097
1096
|
_eventListeners[eventName].add(callback)
|
|
1097
|
+
},
|
|
1098
|
+
|
|
1099
|
+
/**
|
|
1100
|
+
* Remove a game event listener
|
|
1101
|
+
*
|
|
1102
|
+
* @param {string} eventName the event type name
|
|
1103
|
+
* @param {Function} callback the function that is called when the event occurs
|
|
1104
|
+
*/
|
|
1105
|
+
unlisten: (eventName, callback) => {
|
|
1106
|
+
DEV: assert(
|
|
1107
|
+
'string' === typeof eventName,
|
|
1108
|
+
loggerPrefix + 'unlisten() 1st param must be a string'
|
|
1109
|
+
)
|
|
1110
|
+
DEV: assert(
|
|
1111
|
+
'function' === typeof callback,
|
|
1112
|
+
loggerPrefix + 'unlisten() 2nd param must be a function'
|
|
1113
|
+
)
|
|
1114
|
+
|
|
1115
|
+
eventName = lowerCase(eventName)
|
|
1098
1116
|
|
|
1099
|
-
|
|
1100
|
-
|
|
1117
|
+
if (_eventListeners[eventName]) {
|
|
1118
|
+
_eventListeners[eventName].delete(callback)
|
|
1119
|
+
}
|
|
1101
1120
|
},
|
|
1102
1121
|
|
|
1103
1122
|
/**
|
package/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '0.
|
|
2
|
+
export const version = '0.200.0'
|
package/types/global.d.ts
CHANGED
|
@@ -551,9 +551,15 @@ declare global {
|
|
|
551
551
|
*
|
|
552
552
|
* @param event The game event type
|
|
553
553
|
* @param callback the function that is called when the event occurs
|
|
554
|
-
* @returns a function to remove the listener
|
|
555
554
|
*/
|
|
556
|
-
function listen(event: string, callback: Function):
|
|
555
|
+
function listen(event: string, callback: Function): void
|
|
556
|
+
/**
|
|
557
|
+
* Remove a game loop event listener
|
|
558
|
+
*
|
|
559
|
+
* @param event The game event type
|
|
560
|
+
* @param callback the function that is called when the event occurs
|
|
561
|
+
*/
|
|
562
|
+
function unlisten(event: string, callback: Function): void
|
|
557
563
|
/**
|
|
558
564
|
* Call all listeners attached to a game event
|
|
559
565
|
*
|
package/types/types.d.ts
CHANGED
|
@@ -535,9 +535,15 @@ type LitecanvasInstance = {
|
|
|
535
535
|
*
|
|
536
536
|
* @param event The game event type
|
|
537
537
|
* @param callback the function that is called when the event occurs
|
|
538
|
-
* @returns a function to remove the listener
|
|
539
538
|
*/
|
|
540
|
-
listen(event: string, callback: Function):
|
|
539
|
+
listen(event: string, callback: Function): void
|
|
540
|
+
/**
|
|
541
|
+
* Remove a game loop event listener
|
|
542
|
+
*
|
|
543
|
+
* @param event The game event type
|
|
544
|
+
* @param callback the function that is called when the event occurs
|
|
545
|
+
*/
|
|
546
|
+
unlisten(event: string, callback: Function): void
|
|
541
547
|
/**
|
|
542
548
|
* Call all listeners attached to a game event
|
|
543
549
|
*
|