@sepveneto/dao 0.0.1 → 0.0.3

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.
@@ -0,0 +1,46 @@
1
+ import { GameObject } from './GameObject';
2
+ import { Projection } from './Projection';
3
+ import { InputSystem } from './system/InputSystem';
4
+ export declare class Camera {
5
+ viewport: {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ };
11
+ x: number;
12
+ y: number;
13
+ zoom: number;
14
+ projection: Projection;
15
+ private _followTarget?;
16
+ private _followLerp;
17
+ private _offsetX;
18
+ private _offsetY;
19
+ private originX;
20
+ private originY;
21
+ get width(): number;
22
+ get height(): number;
23
+ constructor(proj: Projection);
24
+ setOrigin(x: number, y: number): void;
25
+ setViewport(x: number, y: number, width: number, height: number): void;
26
+ apply(ctx: CanvasRenderingContext2D): void;
27
+ restore(ctx: CanvasRenderingContext2D): void;
28
+ project(worldX: number, worldY: number, worldZ?: number): {
29
+ px: number;
30
+ py: number;
31
+ };
32
+ follow(target: GameObject, options?: {
33
+ lerp?: number;
34
+ offsetX?: number;
35
+ offsetY?: number;
36
+ }): void;
37
+ stopFollow(): void;
38
+ update(): void;
39
+ }
40
+ export declare class CameraController {
41
+ private camera;
42
+ private input;
43
+ speed: number;
44
+ constructor(camera: Camera, input: InputSystem);
45
+ update(delta: number): void;
46
+ }
@@ -0,0 +1,17 @@
1
+ import { Camera } from './Camera';
2
+ import { GameObject } from './GameObject';
3
+ export declare class Container extends GameObject {
4
+ x: number;
5
+ y: number;
6
+ z: number;
7
+ rotation: number;
8
+ scaleX: number;
9
+ scaleY: number;
10
+ private children;
11
+ add(child: any): void;
12
+ private updateBounds;
13
+ remove(child: any): void;
14
+ update(delta: number): void;
15
+ draw(ctx: CanvasRenderingContext2D, camera: Camera): void;
16
+ private drawChild;
17
+ }
@@ -0,0 +1,60 @@
1
+ import { GameObject } from './GameObject';
2
+ declare abstract class DisplayObject {
3
+ x: number;
4
+ y: number;
5
+ originX: number;
6
+ originY: number;
7
+ abstract render(ctx: CanvasRenderingContext2D): void;
8
+ }
9
+ export declare class ImageObject extends DisplayObject {
10
+ texture: HTMLImageElement;
11
+ resolution: number;
12
+ width: number;
13
+ height: number;
14
+ constructor(x: number, y: number, texture: HTMLImageElement, resolution?: number);
15
+ render(ctx: CanvasRenderingContext2D): void;
16
+ }
17
+ export declare class DisplayList {
18
+ private list;
19
+ add(obj: DisplayObject): void;
20
+ render(ctx: CanvasRenderingContext2D): void;
21
+ }
22
+ interface TextStyle {
23
+ fontFamily: string;
24
+ fontSize: number;
25
+ fontStyle?: string;
26
+ color: string;
27
+ align?: 'left' | 'center' | 'right';
28
+ stroke?: string;
29
+ strokeThickness?: number;
30
+ shadow?: {
31
+ offsetX: number;
32
+ offsetY: number;
33
+ color: string;
34
+ blur: number;
35
+ };
36
+ padding?: {
37
+ left: number;
38
+ right: number;
39
+ top: number;
40
+ bottom: number;
41
+ };
42
+ }
43
+ export declare class Text extends GameObject {
44
+ x: number;
45
+ y: number;
46
+ text: string;
47
+ style: TextStyle;
48
+ visible: boolean;
49
+ width: number;
50
+ height: number;
51
+ private canvas;
52
+ private ctx;
53
+ private dirty;
54
+ constructor(text: string, style: TextStyle);
55
+ setText(text: string): void;
56
+ setStyle(style: TextStyle): void;
57
+ private rebuild;
58
+ render(ctx: CanvasRenderingContext2D): void;
59
+ }
60
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ImageObject, DisplayList } from './Display';
2
+ export declare class AddFactory {
3
+ private rm;
4
+ private displayList;
5
+ constructor(displayList: DisplayList);
6
+ image(x: number, y: number, key: string, resolution?: number): ImageObject;
7
+ }
@@ -0,0 +1,17 @@
1
+ import { Camera } from './Camera';
2
+ export declare class GameObject {
3
+ x: number;
4
+ y: number;
5
+ z: number;
6
+ width: number;
7
+ height: number;
8
+ zIndex: number;
9
+ protected originX: number;
10
+ protected originY: number;
11
+ texture?: HTMLImageElement | HTMLCanvasElement;
12
+ rotation: number;
13
+ setOrigin(x: number, y: number): void;
14
+ draw(ctx: CanvasRenderingContext2D, _camera: Camera): void;
15
+ render(ctx: CanvasRenderingContext2D): void;
16
+ update(_delta: number): void;
17
+ }
@@ -0,0 +1,18 @@
1
+ import { Cache } from './ResourceManager';
2
+ declare abstract class File<T> {
3
+ key: string;
4
+ url: string;
5
+ constructor(key: string, url: string);
6
+ abstract load(): Promise<T>;
7
+ }
8
+ export declare class ImageFile extends File<HTMLImageElement> {
9
+ load(): Promise<HTMLImageElement>;
10
+ }
11
+ export declare class Loader {
12
+ private queue;
13
+ private textures;
14
+ constructor(textures: Cache<HTMLImageElement>);
15
+ image(key: string, url: string): this;
16
+ load(): Promise<void>;
17
+ }
18
+ export {};
@@ -0,0 +1,25 @@
1
+ export interface Projection {
2
+ project(worldX: number, worldY: number, worldZ?: number): {
3
+ px: number;
4
+ py: number;
5
+ };
6
+ }
7
+ export declare class Projection2D implements Projection {
8
+ private scaleX;
9
+ private scaleY;
10
+ constructor(scaleX?: number, scaleY?: number);
11
+ project(x: number, y: number): {
12
+ px: number;
13
+ py: number;
14
+ };
15
+ }
16
+ export declare class IsoProjection implements Projection {
17
+ tileWidth: number;
18
+ tileHeight: number;
19
+ zHeight: number;
20
+ constructor(tileWidth: number, tileHeight: number, zHeight: number);
21
+ project(x: number, y: number, z?: number): {
22
+ px: number;
23
+ py: number;
24
+ };
25
+ }
@@ -0,0 +1,6 @@
1
+ import { Scene } from './Scene';
2
+ export declare class Renderer {
3
+ private ctx;
4
+ constructor(ctx: CanvasRenderingContext2D);
5
+ render(scene: Scene): void;
6
+ }
@@ -0,0 +1,13 @@
1
+ import { Loader } from './Loader';
2
+ export declare class Cache<T> {
3
+ private map;
4
+ add(key: string, asset: T): void;
5
+ get(key: string): T;
6
+ has(key: string): boolean;
7
+ remove(key: string): void;
8
+ clear(): void;
9
+ }
10
+ export declare class ResourceManager {
11
+ static textures: Cache<HTMLImageElement>;
12
+ static loader: Loader;
13
+ }
@@ -0,0 +1,27 @@
1
+ import { Camera } from './Camera';
2
+ import { DisplayList } from './Display';
3
+ import { AddFactory } from './Factory';
4
+ import { Game, GameConfig } from './main';
5
+ import { Projection } from './Projection';
6
+ import { SortStrategy } from './SortStragety';
7
+ import { EventSystem } from './system/EventSystem';
8
+ import { InputSystem } from './system/InputSystem';
9
+ import { TweenManager } from './system/TweenManager';
10
+ import { World } from './World';
11
+ export declare class Scene {
12
+ camera: Camera;
13
+ tween: TweenManager;
14
+ world: World;
15
+ private system;
16
+ input?: InputSystem;
17
+ events?: EventSystem;
18
+ config: Required<GameConfig>;
19
+ displayList: DisplayList;
20
+ add: AddFactory;
21
+ constructor(projection: Projection, sortStrategy: SortStrategy);
22
+ _boot(ctx: Game): void;
23
+ registerSystem(system: any): void;
24
+ create(): void;
25
+ resize(width: number, height: number): void;
26
+ update(delta: number): void;
27
+ }
@@ -0,0 +1,10 @@
1
+ import { GameObject } from './GameObject';
2
+ export interface SortStrategy {
3
+ getKey(obj: GameObject): number;
4
+ }
5
+ export declare class IsoStragety implements SortStrategy {
6
+ getKey(obj: GameObject): number;
7
+ }
8
+ export declare class ZIndexStragety implements SortStrategy {
9
+ getKey(obj: GameObject): number;
10
+ }
@@ -0,0 +1,7 @@
1
+ import { GameObject } from './GameObject';
2
+ export declare class World {
3
+ objects: GameObject[];
4
+ constructor();
5
+ add(obj: GameObject): void;
6
+ update(delta: number): void;
7
+ }
package/dist/dao.cjs ADDED
@@ -0,0 +1,2 @@
1
+ var e=class{constructor(){this.x=0,this.y=0,this.z=0,this.width=0,this.height=0,this.zIndex=0,this.originX=0,this.originY=0,this.rotation=0}setOrigin(e,t){this.originX=e,this.originY=t}draw(e,t){e.save(),e.rotate(this.rotation),this.render(e),e.restore()}render(e){if(!this.texture)return;let t=this.width||this.texture.width,n=this.height||this.texture.height;e.drawImage(this.texture,-t*this.originX,-n*this.originY,t,n)}update(e){}},t=class extends e{constructor(...e){super(...e),this.x=0,this.y=0,this.z=0,this.rotation=0,this.scaleX=1,this.scaleY=1,this.children=[]}add(e){this.children.push(e),this.updateBounds()}updateBounds(){if(!this.children.length){this.width=0,this.height=0;return}let e=1/0,t=1/0,n=-1/0,r=-1/0;this.children.forEach(i=>{let a=i.width||0,o=i.height||0,s=i.x,c=i.y;e=Math.min(e,s),t=Math.min(t,c),n=Math.max(n,s+a),r=Math.max(r,c+o)}),this.width=n-e,this.height=r-t}remove(e){let t=this.children.indexOf(e);t!==-1&&(this.children.splice(t,1),this.updateBounds())}update(e){this.children.forEach(t=>{var n;return(n=t.update)==null?void 0:n.call(t,e)})}draw(e,t){this.children.forEach(n=>{this.drawChild(n,e,t)})}drawChild(e,t,n){let r=this.width*this.originX,i=this.height*this.originY,a=Math.cos(this.rotation),o=Math.sin(this.rotation),s=(e.x-r)*this.scaleX,c=(e.y-i)*this.scaleY,l=this.x+s*a-c*o,u=this.y+s*o+c*a,d=this.z+e.z,f=this.rotation+e.rotation,{px:p,py:m}=n.projection.project(l,u,d);console.log(l,u,this.x,this.y),t.save(),t.translate(p,m),t.rotate(f),e.render(t),t.restore()}},n=class{constructor(e){this.ctx=e}render(e){let n=this.ctx,r=e.camera;n.clearRect(0,0,n.canvas.width,n.canvas.height),r.apply(n),e.displayList.render(n);for(let i of e.world.objects)if(i instanceof t)i.draw(n,r);else{let{px:e,py:t}=r.projection.project(i.x,i.y,i.z);n.save(),n.translate(e,t),i.draw(n,r),n.restore()}r.restore(n)}},r=class{constructor(){this.events=new Map}on(e,t){this.events.has(e)||this.events.set(e,new Set),this.events.get(e).add(t)}off(e,t){this.events.has(e)&&this.events.get(e).delete(t)}emit(e,...t){if(this.events.has(e))for(let n of this.events.get(e))n(...t)}};function i(e){"@babel/helpers - typeof";return i=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},i(e)}function a(e,t){if(i(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(i(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function o(e){var t=a(e,`string`);return i(t)==`symbol`?t:t+``}function s(e,t,n){return(t=o(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?c(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const u={KEY_DOWN:Symbol(`keyDown`),KEY_UP:Symbol(`keyUp`),POINTER_DOWN:Symbol(`pointerDown`),POINTER_MOVE:Symbol(`pointerMove`),POINTER_UP:Symbol(`pointerUp`)};var d=class{constructor(e,t){this.keys=new Set,this.pointer={x:0,y:0,dx:0,dy:0,down:!1,justDown:!1,justUp:!1,id:null},this.target=e,this.events=t,window.addEventListener(`keydown`,e=>{e.preventDefault(),this.keys.add(e.code),this.events.emit(u.KEY_DOWN,e)}),window.addEventListener(`keyup`,e=>{this.keys.delete(e.code),this.events.emit(u.KEY_UP,e)}),e.addEventListener(`mousedown`,this.onDown.bind(this)),e.addEventListener(`mousemove`,this.onMove.bind(this)),e.addEventListener(`mouseup`,this.onUp.bind(this)),e.addEventListener(`touchstart`,this.onDown.bind(this),{passive:!1}),e.addEventListener(`touchmove`,this.onMove.bind(this),{passive:!1}),e.addEventListener(`touchend`,this.onUp.bind(this))}update(){this.pointer.justDown=!1,this.pointer.justUp=!1,this.pointer.dx=0,this.pointer.dy=0}isKeyboardDown(e){return this.keys.has(e)}onDown(e){e.preventDefault();let t=this._getPoint(e);if(!t){console.warn(`missing point`);return}this.pointer.down=!0,this.pointer.justDown=!0,this.pointer.x=t.x,this.pointer.y=t.y,this.pointer.id=t.id,this.events.emit(u.POINTER_DOWN,l({},this.pointer))}onMove(e){if(!this.pointer.down)return;e.preventDefault();let t=this._getPoint(e);if(!t){console.warn(`missing point`);return}this.pointer.dx+=t.x-this.pointer.x,this.pointer.dy+=t.y-this.pointer.y,this.pointer.x=t.x,this.pointer.y=t.y,this.events.emit(u.POINTER_MOVE,l({},this.pointer))}onUp(){this.pointer.down=!1,this.pointer.justUp=!0,this.pointer.id=null,this.events.emit(u.POINTER_UP,l({},this.pointer))}_getPoint(e){let t=this.target.getBoundingClientRect(),n,r,i=`mouse`;if(e instanceof TouchEvent){let t=e.touches[0]||e.changedTouches[0];if(!t)return;n=t.clientX,r=t.clientY,i=t.identifier}else n=e.clientX,r=e.clientY;return{x:n-t.left,y:r-t.top,id:i}}},f=class{get width(){return this.viewport.width}get height(){return this.viewport.height}constructor(e){this.viewport={x:0,y:0,width:0,height:0},this.x=0,this.y=0,this.zoom=1,this._followLerp=1,this._offsetX=0,this._offsetY=0,this.originX=0,this.originY=0,this.projection=e}setOrigin(e,t){this.originX=e,this.originY=t}setViewport(e,t,n,r){this.viewport={x:e,y:t,width:n,height:r}}apply(e){e.save(),e.translate(this.originX*this.viewport.width,this.originY*this.viewport.height),e.scale(this.zoom,this.zoom),e.translate(-Math.round(this.x),-Math.round(this.y))}restore(e){e.restore()}project(e,t,n=0){let{px:r,py:i}=this.projection.project(e,t,n);return{px:r-this.x,py:i-this.y}}follow(e,t){var n,r,i;this._followTarget=e,this._followLerp=(n=t==null?void 0:t.lerp)==null?1:n,this._offsetX=(r=t==null?void 0:t.offsetX)==null?0:r,this._offsetY=(i=t==null?void 0:t.offsetY)==null?0:i}stopFollow(){this._followTarget=void 0}update(){if(!this._followTarget)return;let{x:e,y:t,z:n}=this._followTarget,{px:r,py:i}=this.project(e,t,n),a=r+this._offsetX,o=i+this._offsetY;this.x+=a*this._followLerp,this.y+=o*this._followLerp}},p=class{constructor(e,t){this.speed=300,this.camera=e,this.input=t}update(e){let t=this.speed*e/1e3;this.input.isKeyboardDown(`ArrowUp`)&&(this.camera.y+=t),this.input.isKeyboardDown(`ArrowDown`)&&(this.camera.y-=t),this.input.isKeyboardDown(`ArrowLeft`)&&(this.camera.x+=t),this.input.isKeyboardDown(`ArrowRight`)&&(this.camera.x-=t)}},m=class{constructor(){this.x=0,this.y=0,this.originX=.5,this.originY=.5}},h=class extends m{constructor(e,t,n,r=1){super(),this.resolution=1,this.x=e,this.y=t,this.texture=n,this.resolution=r,this.width=n.width/r,this.height=n.height/r}render(e){e.drawImage(this.texture,this.x-this.width*this.originX,this.y-this.height*this.originY,this.width,this.height)}},g=class{constructor(){this.list=[]}add(e){this.list.push(e)}render(e){this.list.forEach(t=>t.render(e))}},_=class extends e{constructor(e,t){super(),this.x=0,this.y=0,this.visible=!0,this.width=0,this.height=0,this.dirty=!0,this.text=e,this.style=t,this.canvas=document.createElement(`canvas`),this.ctx=this.canvas.getContext(`2d`),this.texture=this.canvas}setText(e){this.text!==e&&(this.text=e,this.dirty=!0)}setStyle(e){Object.assign(this.style,e),this.dirty=!0}rebuild(){var e,t,n;if(!this.dirty)return;let r=this.ctx,i=this.style,a=this.text.split(`
2
+ `),o=(e=i.padding)==null?{left:0,right:0,top:0,bottom:0}:e;r.font=`${(t=i.fontStyle)==null?``:t} ${i.fontSize}px ${i.fontFamily}`;let s=0;for(let e of a)s=Math.max(s,r.measureText(e).width);let c=i.fontSize*1.2;this.width=s+o.left+o.right,this.height=a.length*c+o.top+o.bottom,this.canvas.width=Math.ceil(this.width),this.canvas.height=Math.ceil(this.height),r.clearRect(0,0,this.canvas.width,this.canvas.height),r.font=`${(n=i.fontStyle)==null?``:n} ${i.fontSize}px ${i.fontFamily}`,r.fillStyle=i.color,r.textBaseline=`top`,i.shadow&&(r.shadowOffsetX=i.shadow.offsetX,r.shadowOffsetY=i.shadow.offsetY,r.shadowColor=i.shadow.color,r.shadowBlur=i.shadow.blur);let l=o.top;for(let e of a){let t=o.left,n=r.measureText(e).width;i.align===`center`?t+=(this.width-o.left-o.right-n)/2:i.align===`right`&&(t+=this.width-o.left-o.right-n),i.stroke&&i.strokeThickness&&(r.lineWidth=i.strokeThickness,r.strokeStyle=i.stroke,r.strokeText(e,t,l)),r.fillText(e,t,l),l+=c}this.dirty=!1}render(e){if(!this.texture)return;this.rebuild();let t=this.width||this.canvas.width,n=this.height;e.drawImage(this.texture,-t*this.originX,-n*this.originY,t,n)}};function v(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function y(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){v(a,r,i,o,s,`next`,e)}function s(e){v(a,r,i,o,s,`throw`,e)}o(void 0)})}}var b=class{constructor(e,t){this.key=e,this.url=t}},x=class extends b{load(){return new Promise((e,t)=>{let n=new Image;n.onload=()=>e(n),n.onerror=()=>t(Error(`Failed to load ${this.url}`)),n.src=this.url})}},S=class{constructor(e){this.queue=[],this.textures=e}image(e,t){return this.queue.push(new x(e,t)),this}load(){var e=this;return y(function*(){let t=e.queue.map(t=>t.load().then(n=>{t instanceof x&&e.textures.add(t.key,n)}));e.queue.length=0,yield Promise.all(t)})()}},C,w=class{constructor(){this.map=new Map}add(e,t){this.map.has(e)||this.map.set(e,t)}get(e){let t=this.map.get(e);if(!t)throw Error(`Asset ${e} not found`);return t}has(e){return this.map.has(e)}remove(e){this.map.delete(e)}clear(){this.map.clear()}},T=class{};C=T,C.textures=new w,C.loader=new S(C.textures);var E=class{constructor(e){this.rm=T,this.displayList=e}image(e,t,n,r=1){let i=new h(e,t,this.rm.textures.get(n),r);return this.displayList.add(i),i}},D=class{constructor(e,t){this.world=e,this.strategy=t}update(){this.world.objects.sort((e,t)=>this.strategy.getKey(e)-this.strategy.getKey(t)),this.world.objects.sort((e,t)=>e.zIndex-t.zIndex)}},O=class{constructor(e){this.elapsed=0,this.target=e.target,this.key=e.key,this.start=e.target[e.key],this.end=e.to,this.duration=e.duration,this.delay=e.delay||0;let t=e.easing||`Linear`;typeof t==`string`?this.easing=k[t]:this.easing=t}update(e){if(this.delay>0)return this.delay-=e,!1;this.elapsed+=e;let t=Math.min(this.elapsed/this.duration,1),n=this.easing(t);return this.target[this.key]=this.start+(this.end-this.start)*n,t===1?(this.target[this.key]=this.end,!0):!1}reset(){this.elapsed=0}};const k={Linear:e=>e,EaseOutBack:e=>{let t=3.70158,n=e-1;return 1+n*n*((t+1)*n+t)}};var A=class{constructor(e){for(let t in this.datas=[],this.finished=!1,this.loop=!1,e.to)this.datas.push(new O({target:e.target,key:t,to:e.to[t],duration:e.duration,easing:e.easing,delay:e.delay}));this.loop=e.loop||!1,this.onComplete=e.onComplete}update(e){if(this.finished)return;let t=!0;for(let n of this.datas)n.update(e)||(t=!1);if(t)if(this.loop)this.datas.forEach(e=>e.reset());else{var n;this.finished=!0,(n=this.onComplete)==null||n.call(this)}}},j=class{constructor(){this.tweens=[]}add(e){let t=new A(e);return this.tweens.push(t),t}update(e){for(let t of this.tweens)t.update(e);this.tweens=this.tweens.filter(e=>!e.finished)}},M=class{constructor(){this.objects=[]}add(e){this.objects.push(e)}update(e){for(let t of this.objects)t.update(e)}},N=class{constructor(e,t){this.world=new M,this.system=[],this.displayList=new g,this.add=new E(this.displayList),this.camera=new f(e),this.tween=new j,this.system.push(new D(this.world,t)),this.system.push(this.tween)}_boot(e){this.input=e.input,this.events=e.events,this.config=e.config}registerSystem(e){this.system.push(e)}create(){}resize(e,t){this.camera.setViewport(0,0,e,t)}update(e){for(let n of this.system){var t;(t=n.update)==null||t.call(n,e)}this.camera.update(),this.world.update(e)}},P=class{constructor(e=1,t=1){this.scaleX=e,this.scaleY=t}project(e,t){return{px:e*this.scaleX,py:t*this.scaleY}}},F=class{constructor(e,t,n){this.tileWidth=e,this.tileHeight=t,this.zHeight=n}project(e,t,n=0){return{px:(e-t)*this.tileWidth/2,py:(e+t)*this.tileHeight/2-n*this.zHeight}}},I=class{getKey(e){return e.x+e.y+e.z}},L=class{getKey(e){return e.zIndex}},R=class{constructor(e,t){this.lastTime=0,this.scene=null,this.config=l({width:window.innerWidth,height:window.innerHeight},t);let i=window.innerWidth/this.config.width,a=window.devicePixelRatio;e.width=this.config.width*i*a,e.height=this.config.height*i*a,e.style.width=`${this.config.width*i}px`,e.style.height=`${this.config.height*i}px`;let o=e.getContext(`2d`);if(!o)throw Error(`Canvas 2D context not found`);this.events=new r,this.input=new d(e,this.events),this.renderer=new n(o),o.scale(i*a,i*a)}start(e){this.scene=e,e._boot(this),e.registerSystem(this.input),e.registerSystem(this.events),e.create(),e.resize(this.config.width,this.config.height),window.requestAnimationFrame(this.loop.bind(this))}loop(e){let t=e-this.lastTime;this.lastTime=e,this.scene&&(this.scene.update(t),this.renderer.render(this.scene)),window.requestAnimationFrame(this.loop.bind(this))}};exports.Cache=w,exports.Camera=f,exports.CameraController=p,exports.DisplayList=g,exports.Easings=k,exports.Game=R,exports.GameObject=e,exports.ImageObject=h,exports.InputEventType=u,exports.InputSystem=d,exports.IsoProjection=F,exports.IsoStragety=I,exports.Projection2D=P,exports.ResourceManager=T,exports.Scene=N,exports.Text=_,exports.TweenManager=j,exports.ZIndexStragety=L;
package/dist/dao.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './main'
2
+ export {}