@combos-fun/plugin-renderer-nine-patch 0.0.1

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/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @combos-fun/plugin-renderer-nine-patch
2
+
3
+ Internal workspace package (Combos Fun monorepo).
@@ -0,0 +1,135 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var engine = require('@combos-fun/engine');
5
+ var inspectorDecorator = require('@combos-fun/inspector-decorator');
6
+ var pluginRenderer = require('@combos-fun/plugin-renderer');
7
+ var rendererAdapter = require('@combos-fun/renderer-adapter');
8
+ var pixi_js = require('pixi.js');
9
+
10
+ let NinePatch$1 = class NinePatch extends engine.Component {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.resource = '';
14
+ this.spriteName = '';
15
+ this.leftWidth = 0;
16
+ this.topHeight = 0;
17
+ this.rightWidth = 0;
18
+ this.bottomHeight = 0;
19
+ }
20
+ static { this.componentName = 'NinePatch'; }
21
+ init(obj) {
22
+ this.resource = obj.resource;
23
+ this.spriteName = obj.spriteName;
24
+ this.leftWidth = obj.leftWidth;
25
+ this.topHeight = obj.topHeight;
26
+ this.rightWidth = obj.rightWidth;
27
+ this.bottomHeight = obj.bottomHeight;
28
+ }
29
+ };
30
+ tslib.__decorate([
31
+ inspectorDecorator.type('string')
32
+ ], NinePatch$1.prototype, "resource", void 0);
33
+ tslib.__decorate([
34
+ inspectorDecorator.type('string')
35
+ ], NinePatch$1.prototype, "spriteName", void 0);
36
+ tslib.__decorate([
37
+ inspectorDecorator.type('number'),
38
+ inspectorDecorator.step(1)
39
+ ], NinePatch$1.prototype, "leftWidth", void 0);
40
+ tslib.__decorate([
41
+ inspectorDecorator.type('number'),
42
+ inspectorDecorator.step(1)
43
+ ], NinePatch$1.prototype, "topHeight", void 0);
44
+ tslib.__decorate([
45
+ inspectorDecorator.type('number'),
46
+ inspectorDecorator.step(1)
47
+ ], NinePatch$1.prototype, "rightWidth", void 0);
48
+ tslib.__decorate([
49
+ inspectorDecorator.type('number'),
50
+ inspectorDecorator.step(1)
51
+ ], NinePatch$1.prototype, "bottomHeight", void 0);
52
+
53
+ const resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.
54
+ let NinePatch = class NinePatch extends pluginRenderer.Renderer {
55
+ constructor() {
56
+ super(...arguments);
57
+ this.name = 'NinePatch';
58
+ this.ninePatch = {};
59
+ }
60
+ static { this.systemName = 'NinePatch'; }
61
+ init() {
62
+ this.renderSystem = this.game.getSystem(pluginRenderer.RendererSystem);
63
+ this.renderSystem.rendererManager.register(this);
64
+ }
65
+ rendererUpdate(gameObject) {
66
+ const { width, height } = gameObject.transform.size;
67
+ if (this.ninePatch[gameObject.id]) {
68
+ this.ninePatch[gameObject.id].width = width;
69
+ this.ninePatch[gameObject.id].height = height;
70
+ }
71
+ }
72
+ async componentChanged(changed) {
73
+ if (changed.componentName === 'NinePatch') {
74
+ if (changed.type === engine.OBSERVER_TYPE.ADD) {
75
+ this.add(changed);
76
+ }
77
+ else if (changed.type === engine.OBSERVER_TYPE.REMOVE) {
78
+ this.remove(changed);
79
+ }
80
+ else {
81
+ this.remove(changed);
82
+ this.add(changed);
83
+ }
84
+ }
85
+ }
86
+ async add(changed) {
87
+ const component = changed.component;
88
+ const gameObjectId = changed.gameObject.id;
89
+ const asyncId = this.increaseAsyncId(gameObjectId);
90
+ const { type, data } = await engine.resource.getResource(component.resource);
91
+ if (!this.validateAsyncId(gameObjectId, asyncId))
92
+ return;
93
+ if (!data) {
94
+ console.error(`GameObject:${changed.gameObject.name}'s NinePatch resource load error`);
95
+ return;
96
+ }
97
+ let img;
98
+ if (type === engine.RESOURCE_TYPE.SPRITE) {
99
+ img = component.resource + resourceKeySplit + component.spriteName;
100
+ }
101
+ else {
102
+ img = pixi_js.Texture.from(data.image);
103
+ }
104
+ const { leftWidth, topHeight, rightWidth, bottomHeight } = component;
105
+ const np = new rendererAdapter.NinePatch(img, leftWidth, topHeight, rightWidth, bottomHeight);
106
+ this.ninePatch[changed.gameObject.id] = np;
107
+ component.ninePatch = np;
108
+ const parent = this.containerManager.getContainer(changed.gameObject.id);
109
+ if (!parent) {
110
+ console.error(`GameObject:${changed.gameObject.name}'s NinePatch missing display container`);
111
+ return;
112
+ }
113
+ parent.addChildAt(np, 0);
114
+ }
115
+ remove(changed) {
116
+ const gameObjectId = changed.gameObject.id;
117
+ this.increaseAsyncId(gameObjectId);
118
+ const sprite = this.ninePatch[gameObjectId];
119
+ if (sprite) {
120
+ this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite);
121
+ delete this.ninePatch[changed.gameObject.id];
122
+ sprite.destroy({ children: true });
123
+ }
124
+ }
125
+ };
126
+ NinePatch = tslib.__decorate([
127
+ engine.decorators.componentObserver({
128
+ NinePatch: ['resource', 'spriteName', 'leftWidth', 'topHeight', 'rightWidth', 'bottomHeight'],
129
+ })
130
+ ], NinePatch);
131
+ var NinePatch_default = NinePatch;
132
+
133
+ exports.NinePatch = NinePatch$1;
134
+ exports.NinePatchSystem = NinePatch_default;
135
+ //# sourceMappingURL=plugin-renderer-nine-patch.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-renderer-nine-patch.cjs.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { type, step } from '@combos-fun/inspector-decorator';\nimport { NinePatch as NinePatchSprite } from \"@combos-fun/renderer-adapter\";\n\nexport interface NinePatchParams {\n resource: string;\n spriteName?: string;\n leftWidth?: number;\n topHeight?: number;\n rightWidth?: number;\n bottomHeight?: number;\n}\n\nexport default class NinePatch extends Component<NinePatchParams> {\n static componentName: string = 'NinePatch';\n ninePatch: NinePatchSprite;\n @type('string') resource: string = '';\n @type('string') spriteName: string = '';\n\n @type('number') @step(1) leftWidth: number = 0;\n @type('number') @step(1) topHeight: number = 0;\n @type('number') @step(1) rightWidth: number = 0;\n @type('number') @step(1) bottomHeight: number = 0;\n init(obj?: NinePatchParams) {\n this.resource = obj.resource;\n this.spriteName = obj.spriteName;\n this.leftWidth = obj.leftWidth;\n this.topHeight = obj.topHeight;\n this.rightWidth = obj.rightWidth;\n this.bottomHeight = obj.bottomHeight;\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, RESOURCE_TYPE, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport { NinePatch as NinePatchSprite } from '@combos-fun/renderer-adapter';\nimport NinePatchComponent from './component';\nimport { Texture } from 'pixi.js';\n\nconst resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.\n\n@decorators.componentObserver({\n NinePatch: ['resource', 'spriteName', 'leftWidth', 'topHeight', 'rightWidth', 'bottomHeight'],\n})\nexport default class NinePatch extends Renderer {\n static systemName: string = 'NinePatch';\n name: string = 'NinePatch';\n ninePatch: { [propName: number]: NinePatchSprite } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n rendererUpdate(gameObject: GameObject) {\n const { width, height } = gameObject.transform.size;\n if (this.ninePatch[gameObject.id]) {\n this.ninePatch[gameObject.id].width = width;\n this.ninePatch[gameObject.id].height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'NinePatch') {\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.add(changed);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.remove(changed);\n } else {\n this.remove(changed);\n this.add(changed);\n }\n }\n }\n async add(changed: ComponentChanged) {\n const component = changed.component as NinePatchComponent;\n const gameObjectId = changed.gameObject.id;\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { type, data } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!data) {\n console.error(`GameObject:${changed.gameObject.name}'s NinePatch resource load error`);\n return\n }\n let img: string | Texture;\n if (type === RESOURCE_TYPE.SPRITE) {\n img = component.resource + resourceKeySplit + component.spriteName;\n } else {\n img = Texture.from(data.image as HTMLImageElement);\n }\n const { leftWidth, topHeight, rightWidth, bottomHeight } = component;\n const np = new NinePatchSprite(img, leftWidth, topHeight, rightWidth, bottomHeight);\n\n this.ninePatch[changed.gameObject.id] = np;\n component.ninePatch = np;\n const parent = this.containerManager.getContainer(changed.gameObject.id);\n if (!parent) {\n console.error(`GameObject:${changed.gameObject.name}'s NinePatch missing display container`);\n return;\n }\n parent.addChildAt(np, 0);\n }\n remove(changed: ComponentChanged) {\n const gameObjectId = changed.gameObject.id;\n this.increaseAsyncId(gameObjectId);\n const sprite = this.ninePatch[gameObjectId];\n if (sprite) {\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite);\n delete this.ninePatch[changed.gameObject.id];\n sprite.destroy({ children: true });\n }\n }\n}\n"],"names":["Component","__decorate","type","NinePatch","step","Renderer","RendererSystem","OBSERVER_TYPE","resource","RESOURCE_TYPE","Texture","NinePatchSprite","decorators"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ "use strict";var e=require("tslib"),t=require("@combos-fun/engine"),i=require("@combos-fun/inspector-decorator"),r=require("@combos-fun/plugin-renderer"),s=require("@combos-fun/renderer-adapter"),o=require("pixi.js");let n=class extends t.Component{constructor(){super(...arguments),this.resource="",this.spriteName="",this.leftWidth=0,this.topHeight=0,this.rightWidth=0,this.bottomHeight=0}static{this.componentName="NinePatch"}init(e){this.resource=e.resource,this.spriteName=e.spriteName,this.leftWidth=e.leftWidth,this.topHeight=e.topHeight,this.rightWidth=e.rightWidth,this.bottomHeight=e.bottomHeight}};e.__decorate([i.type("string")],n.prototype,"resource",void 0),e.__decorate([i.type("string")],n.prototype,"spriteName",void 0),e.__decorate([i.type("number"),i.step(1)],n.prototype,"leftWidth",void 0),e.__decorate([i.type("number"),i.step(1)],n.prototype,"topHeight",void 0),e.__decorate([i.type("number"),i.step(1)],n.prototype,"rightWidth",void 0),e.__decorate([i.type("number"),i.step(1)],n.prototype,"bottomHeight",void 0);let h=class extends r.Renderer{constructor(){super(...arguments),this.name="NinePatch",this.ninePatch={}}static{this.systemName="NinePatch"}init(){this.renderSystem=this.game.getSystem(r.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){const{width:t,height:i}=e.transform.size;this.ninePatch[e.id]&&(this.ninePatch[e.id].width=t,this.ninePatch[e.id].height=i)}async componentChanged(e){"NinePatch"===e.componentName&&(e.type===t.OBSERVER_TYPE.ADD?this.add(e):e.type===t.OBSERVER_TYPE.REMOVE?this.remove(e):(this.remove(e),this.add(e)))}async add(e){const i=e.component,r=e.gameObject.id,n=this.increaseAsyncId(r),{type:h,data:a}=await t.resource.getResource(i.resource);if(!this.validateAsyncId(r,n))return;if(!a)return void console.error(`GameObject:${e.gameObject.name}'s NinePatch resource load error`);let c;c=h===t.RESOURCE_TYPE.SPRITE?i.resource+"_s|r|c_"+i.spriteName:o.Texture.from(a.image);const{leftWidth:d,topHeight:m,rightWidth:p,bottomHeight:g}=i,u=new s.NinePatch(c,d,m,p,g);this.ninePatch[e.gameObject.id]=u,i.ninePatch=u;const y=this.containerManager.getContainer(e.gameObject.id);y?y.addChildAt(u,0):console.error(`GameObject:${e.gameObject.name}'s NinePatch missing display container`)}remove(e){const t=e.gameObject.id;this.increaseAsyncId(t);const i=this.ninePatch[t];i&&(this.containerManager.getContainer(e.gameObject.id).removeChild(i),delete this.ninePatch[e.gameObject.id],i.destroy({children:!0}))}};h=e.__decorate([t.decorators.componentObserver({NinePatch:["resource","spriteName","leftWidth","topHeight","rightWidth","bottomHeight"]})],h);var a=h;exports.NinePatch=n,exports.NinePatchSystem=a;
@@ -0,0 +1,42 @@
1
+ import { Component, GameObject, ComponentChanged } from '@combos-fun/engine';
2
+ import { NinePatch as NinePatch$2 } from '@combos-fun/renderer-adapter';
3
+ import { Renderer, RendererSystem, RendererManager, ContainerManager } from '@combos-fun/plugin-renderer';
4
+
5
+ interface NinePatchParams {
6
+ resource: string;
7
+ spriteName?: string;
8
+ leftWidth?: number;
9
+ topHeight?: number;
10
+ rightWidth?: number;
11
+ bottomHeight?: number;
12
+ }
13
+ declare class NinePatch$1 extends Component<NinePatchParams> {
14
+ static componentName: string;
15
+ ninePatch: NinePatch$2;
16
+ resource: string;
17
+ spriteName: string;
18
+ leftWidth: number;
19
+ topHeight: number;
20
+ rightWidth: number;
21
+ bottomHeight: number;
22
+ init(obj?: NinePatchParams): void;
23
+ }
24
+
25
+ declare class NinePatch extends Renderer {
26
+ static systemName: string;
27
+ name: string;
28
+ ninePatch: {
29
+ [propName: number]: NinePatch$2;
30
+ };
31
+ renderSystem: RendererSystem;
32
+ rendererManager: RendererManager;
33
+ containerManager: ContainerManager;
34
+ init(): void;
35
+ rendererUpdate(gameObject: GameObject): void;
36
+ componentChanged(changed: ComponentChanged): Promise<void>;
37
+ add(changed: ComponentChanged): Promise<void>;
38
+ remove(changed: ComponentChanged): void;
39
+ }
40
+
41
+ export { NinePatch$1 as NinePatch, NinePatch as NinePatchSystem };
42
+ export type { NinePatchParams };
@@ -0,0 +1,132 @@
1
+ import { __decorate } from 'tslib';
2
+ import { Component, OBSERVER_TYPE, resource, RESOURCE_TYPE, decorators } from '@combos-fun/engine';
3
+ import { type, step } from '@combos-fun/inspector-decorator';
4
+ import { Renderer, RendererSystem } from '@combos-fun/plugin-renderer';
5
+ import { NinePatch as NinePatch$2 } from '@combos-fun/renderer-adapter';
6
+ import { Texture } from 'pixi.js';
7
+
8
+ let NinePatch$1 = class NinePatch extends Component {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.resource = '';
12
+ this.spriteName = '';
13
+ this.leftWidth = 0;
14
+ this.topHeight = 0;
15
+ this.rightWidth = 0;
16
+ this.bottomHeight = 0;
17
+ }
18
+ static { this.componentName = 'NinePatch'; }
19
+ init(obj) {
20
+ this.resource = obj.resource;
21
+ this.spriteName = obj.spriteName;
22
+ this.leftWidth = obj.leftWidth;
23
+ this.topHeight = obj.topHeight;
24
+ this.rightWidth = obj.rightWidth;
25
+ this.bottomHeight = obj.bottomHeight;
26
+ }
27
+ };
28
+ __decorate([
29
+ type('string')
30
+ ], NinePatch$1.prototype, "resource", void 0);
31
+ __decorate([
32
+ type('string')
33
+ ], NinePatch$1.prototype, "spriteName", void 0);
34
+ __decorate([
35
+ type('number'),
36
+ step(1)
37
+ ], NinePatch$1.prototype, "leftWidth", void 0);
38
+ __decorate([
39
+ type('number'),
40
+ step(1)
41
+ ], NinePatch$1.prototype, "topHeight", void 0);
42
+ __decorate([
43
+ type('number'),
44
+ step(1)
45
+ ], NinePatch$1.prototype, "rightWidth", void 0);
46
+ __decorate([
47
+ type('number'),
48
+ step(1)
49
+ ], NinePatch$1.prototype, "bottomHeight", void 0);
50
+
51
+ const resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.
52
+ let NinePatch = class NinePatch extends Renderer {
53
+ constructor() {
54
+ super(...arguments);
55
+ this.name = 'NinePatch';
56
+ this.ninePatch = {};
57
+ }
58
+ static { this.systemName = 'NinePatch'; }
59
+ init() {
60
+ this.renderSystem = this.game.getSystem(RendererSystem);
61
+ this.renderSystem.rendererManager.register(this);
62
+ }
63
+ rendererUpdate(gameObject) {
64
+ const { width, height } = gameObject.transform.size;
65
+ if (this.ninePatch[gameObject.id]) {
66
+ this.ninePatch[gameObject.id].width = width;
67
+ this.ninePatch[gameObject.id].height = height;
68
+ }
69
+ }
70
+ async componentChanged(changed) {
71
+ if (changed.componentName === 'NinePatch') {
72
+ if (changed.type === OBSERVER_TYPE.ADD) {
73
+ this.add(changed);
74
+ }
75
+ else if (changed.type === OBSERVER_TYPE.REMOVE) {
76
+ this.remove(changed);
77
+ }
78
+ else {
79
+ this.remove(changed);
80
+ this.add(changed);
81
+ }
82
+ }
83
+ }
84
+ async add(changed) {
85
+ const component = changed.component;
86
+ const gameObjectId = changed.gameObject.id;
87
+ const asyncId = this.increaseAsyncId(gameObjectId);
88
+ const { type, data } = await resource.getResource(component.resource);
89
+ if (!this.validateAsyncId(gameObjectId, asyncId))
90
+ return;
91
+ if (!data) {
92
+ console.error(`GameObject:${changed.gameObject.name}'s NinePatch resource load error`);
93
+ return;
94
+ }
95
+ let img;
96
+ if (type === RESOURCE_TYPE.SPRITE) {
97
+ img = component.resource + resourceKeySplit + component.spriteName;
98
+ }
99
+ else {
100
+ img = Texture.from(data.image);
101
+ }
102
+ const { leftWidth, topHeight, rightWidth, bottomHeight } = component;
103
+ const np = new NinePatch$2(img, leftWidth, topHeight, rightWidth, bottomHeight);
104
+ this.ninePatch[changed.gameObject.id] = np;
105
+ component.ninePatch = np;
106
+ const parent = this.containerManager.getContainer(changed.gameObject.id);
107
+ if (!parent) {
108
+ console.error(`GameObject:${changed.gameObject.name}'s NinePatch missing display container`);
109
+ return;
110
+ }
111
+ parent.addChildAt(np, 0);
112
+ }
113
+ remove(changed) {
114
+ const gameObjectId = changed.gameObject.id;
115
+ this.increaseAsyncId(gameObjectId);
116
+ const sprite = this.ninePatch[gameObjectId];
117
+ if (sprite) {
118
+ this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite);
119
+ delete this.ninePatch[changed.gameObject.id];
120
+ sprite.destroy({ children: true });
121
+ }
122
+ }
123
+ };
124
+ NinePatch = __decorate([
125
+ decorators.componentObserver({
126
+ NinePatch: ['resource', 'spriteName', 'leftWidth', 'topHeight', 'rightWidth', 'bottomHeight'],
127
+ })
128
+ ], NinePatch);
129
+ var NinePatch_default = NinePatch;
130
+
131
+ export { NinePatch$1 as NinePatch, NinePatch_default as NinePatchSystem };
132
+ //# sourceMappingURL=plugin-renderer-nine-patch.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-renderer-nine-patch.esm.js","sources":["../lib/component.ts","../lib/system.ts"],"sourcesContent":["import { Component } from '@combos-fun/engine';\nimport { type, step } from '@combos-fun/inspector-decorator';\nimport { NinePatch as NinePatchSprite } from \"@combos-fun/renderer-adapter\";\n\nexport interface NinePatchParams {\n resource: string;\n spriteName?: string;\n leftWidth?: number;\n topHeight?: number;\n rightWidth?: number;\n bottomHeight?: number;\n}\n\nexport default class NinePatch extends Component<NinePatchParams> {\n static componentName: string = 'NinePatch';\n ninePatch: NinePatchSprite;\n @type('string') resource: string = '';\n @type('string') spriteName: string = '';\n\n @type('number') @step(1) leftWidth: number = 0;\n @type('number') @step(1) topHeight: number = 0;\n @type('number') @step(1) rightWidth: number = 0;\n @type('number') @step(1) bottomHeight: number = 0;\n init(obj?: NinePatchParams) {\n this.resource = obj.resource;\n this.spriteName = obj.spriteName;\n this.leftWidth = obj.leftWidth;\n this.topHeight = obj.topHeight;\n this.rightWidth = obj.rightWidth;\n this.bottomHeight = obj.bottomHeight;\n }\n}\n","import { GameObject, decorators, resource, ComponentChanged, RESOURCE_TYPE, OBSERVER_TYPE } from '@combos-fun/engine';\nimport { RendererManager, ContainerManager, RendererSystem, Renderer } from '@combos-fun/plugin-renderer';\nimport { NinePatch as NinePatchSprite } from '@combos-fun/renderer-adapter';\nimport NinePatchComponent from './component';\nimport { Texture } from 'pixi.js';\n\nconst resourceKeySplit = '_s|r|c_'; // Notice: This key be created by sprite system.\n\n@decorators.componentObserver({\n NinePatch: ['resource', 'spriteName', 'leftWidth', 'topHeight', 'rightWidth', 'bottomHeight'],\n})\nexport default class NinePatch extends Renderer {\n static systemName: string = 'NinePatch';\n name: string = 'NinePatch';\n ninePatch: { [propName: number]: NinePatchSprite } = {};\n renderSystem: RendererSystem;\n rendererManager: RendererManager;\n containerManager: ContainerManager;\n init() {\n this.renderSystem = this.game.getSystem(RendererSystem) as RendererSystem;\n this.renderSystem.rendererManager.register(this);\n }\n rendererUpdate(gameObject: GameObject) {\n const { width, height } = gameObject.transform.size;\n if (this.ninePatch[gameObject.id]) {\n this.ninePatch[gameObject.id].width = width;\n this.ninePatch[gameObject.id].height = height;\n }\n }\n async componentChanged(changed: ComponentChanged) {\n if (changed.componentName === 'NinePatch') {\n if (changed.type === OBSERVER_TYPE.ADD) {\n this.add(changed);\n } else if (changed.type === OBSERVER_TYPE.REMOVE) {\n this.remove(changed);\n } else {\n this.remove(changed);\n this.add(changed);\n }\n }\n }\n async add(changed: ComponentChanged) {\n const component = changed.component as NinePatchComponent;\n const gameObjectId = changed.gameObject.id;\n const asyncId = this.increaseAsyncId(gameObjectId);\n const { type, data } = await resource.getResource(component.resource);\n if (!this.validateAsyncId(gameObjectId, asyncId)) return;\n if (!data) {\n console.error(`GameObject:${changed.gameObject.name}'s NinePatch resource load error`);\n return\n }\n let img: string | Texture;\n if (type === RESOURCE_TYPE.SPRITE) {\n img = component.resource + resourceKeySplit + component.spriteName;\n } else {\n img = Texture.from(data.image as HTMLImageElement);\n }\n const { leftWidth, topHeight, rightWidth, bottomHeight } = component;\n const np = new NinePatchSprite(img, leftWidth, topHeight, rightWidth, bottomHeight);\n\n this.ninePatch[changed.gameObject.id] = np;\n component.ninePatch = np;\n const parent = this.containerManager.getContainer(changed.gameObject.id);\n if (!parent) {\n console.error(`GameObject:${changed.gameObject.name}'s NinePatch missing display container`);\n return;\n }\n parent.addChildAt(np, 0);\n }\n remove(changed: ComponentChanged) {\n const gameObjectId = changed.gameObject.id;\n this.increaseAsyncId(gameObjectId);\n const sprite = this.ninePatch[gameObjectId];\n if (sprite) {\n this.containerManager.getContainer(changed.gameObject.id).removeChild(sprite);\n delete this.ninePatch[changed.gameObject.id];\n sprite.destroy({ children: true });\n }\n }\n}\n"],"names":["NinePatch","NinePatchSprite"],"mappings":"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"}
package/index.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./dist/plugin-renderer-nine-patch.cjs.prod.js');
5
+ } else {
6
+ module.exports = require('./dist/plugin-renderer-nine-patch.cjs.js');
7
+ }
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@combos-fun/plugin-renderer-nine-patch",
3
+ "version": "0.0.1",
4
+ "description": "@combos-fun/plugin-renderer-nine-patch",
5
+ "main": "index.js",
6
+ "module": "dist/plugin-renderer-nine-patch.esm.js",
7
+ "bundle": "CombosFun.plugin.renderer.ninePatch",
8
+ "unpkg": "dist/CombosFun.plugin.renderer.ninePatch.min.js",
9
+ "files": [
10
+ "index.js",
11
+ "dist"
12
+ ],
13
+ "types": "dist/plugin-renderer-nine-patch.d.ts",
14
+ "keywords": [
15
+ "combos-fun",
16
+ "game"
17
+ ],
18
+ "author": "sun668 <q947692259@gmail.com>",
19
+ "dependencies": {
20
+ "pixi.js": "^8.18.1",
21
+ "@combos-fun/inspector-decorator": "0.0.1",
22
+ "@combos-fun/plugin-renderer": "0.0.1",
23
+ "@combos-fun/renderer-adapter": "0.0.1",
24
+ "@combos-fun/engine": "0.0.1"
25
+ },
26
+ "scripts": {
27
+ "build": "node ../../scripts/build-package.mjs"
28
+ }
29
+ }