dacha 0.15.2 → 0.16.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.
Files changed (169) hide show
  1. package/build/contrib/components/animatable/comparator-condition-component-value.d.ts +1 -1
  2. package/build/contrib/components/animatable/group-state.d.ts +1 -1
  3. package/build/contrib/components/animatable/index.d.ts +1 -1
  4. package/build/contrib/components/animatable/one-dimensional-props.d.ts +1 -1
  5. package/build/contrib/components/animatable/one-dimensional-props.js +1 -3
  6. package/build/contrib/components/animatable/state.d.ts +1 -1
  7. package/build/contrib/components/animatable/timeline.d.ts +2 -2
  8. package/build/contrib/components/animatable/transition.d.ts +1 -1
  9. package/build/contrib/components/animatable/two-dimensional-props.d.ts +1 -1
  10. package/build/contrib/components/animatable/two-dimensional-props.js +1 -3
  11. package/build/contrib/components/animatable/types.d.ts +9 -9
  12. package/build/contrib/components/bitmap-text/index.d.ts +36 -0
  13. package/build/contrib/components/bitmap-text/index.js +42 -0
  14. package/build/contrib/components/index.d.ts +3 -2
  15. package/build/contrib/components/index.js +3 -1
  16. package/build/contrib/components/keyboard-control/index.d.ts +6 -8
  17. package/build/contrib/components/keyboard-control/index.js +8 -2
  18. package/build/contrib/components/mouse-control/index.d.ts +3 -7
  19. package/build/contrib/components/mouse-control/index.js +4 -1
  20. package/build/contrib/components/pixi-view/index.d.ts +20 -0
  21. package/build/contrib/components/pixi-view/index.js +24 -0
  22. package/build/contrib/components/shape/index.d.ts +64 -0
  23. package/build/contrib/components/shape/index.js +60 -0
  24. package/build/contrib/components/sprite/index.d.ts +17 -6
  25. package/build/contrib/components/sprite/index.js +10 -4
  26. package/build/contrib/systems/animator/index.d.ts +1 -1
  27. package/build/contrib/systems/animator/index.js +9 -9
  28. package/build/contrib/systems/animator/substate-pickers/index.d.ts +2 -3
  29. package/build/contrib/systems/animator/substate-pickers/one-dimensional-picker.d.ts +1 -1
  30. package/build/contrib/systems/animator/substate-pickers/picker.d.ts +1 -1
  31. package/build/contrib/systems/animator/substate-pickers/two-dimensional-picker.d.ts +1 -1
  32. package/build/contrib/systems/animator/utils.d.ts +2 -2
  33. package/build/contrib/systems/animator/utils.js +0 -1
  34. package/build/contrib/systems/audio-system/index.d.ts +1 -1
  35. package/build/contrib/systems/audio-system/index.js +20 -18
  36. package/build/contrib/systems/audio-system/types.d.ts +6 -6
  37. package/build/contrib/systems/behavior-system/system.d.ts +2 -0
  38. package/build/contrib/systems/behavior-system/system.js +18 -5
  39. package/build/contrib/systems/camera-system/system.d.ts +1 -1
  40. package/build/contrib/systems/camera-system/system.js +16 -10
  41. package/build/contrib/systems/game-stats-meter/index.d.ts +1 -1
  42. package/build/contrib/systems/game-stats-meter/index.js +6 -6
  43. package/build/contrib/systems/index.d.ts +2 -2
  44. package/build/contrib/systems/index.js +1 -1
  45. package/build/contrib/systems/keyboard-control-system/index.d.ts +1 -1
  46. package/build/contrib/systems/keyboard-control-system/index.js +5 -7
  47. package/build/contrib/systems/keyboard-input-system/input-listener.d.ts +1 -1
  48. package/build/contrib/systems/mouse-control-system/index.d.ts +1 -1
  49. package/build/contrib/systems/mouse-control-system/index.js +5 -7
  50. package/build/contrib/systems/mouse-input-system/subsystems/input-subsystem/mouse-input-listener.d.ts +1 -1
  51. package/build/contrib/systems/physics-system/subsystems/collision-detection/index.d.ts +1 -1
  52. package/build/contrib/systems/physics-system/subsystems/collision-detection/index.js +17 -16
  53. package/build/contrib/systems/physics-system/subsystems/collision-detection/types.d.ts +9 -9
  54. package/build/contrib/systems/physics-system/subsystems/collision-detection/types.js +3 -0
  55. package/build/contrib/systems/physics-system/subsystems/constraint-solver/index.d.ts +0 -1
  56. package/build/contrib/systems/physics-system/subsystems/constraint-solver/index.js +46 -59
  57. package/build/contrib/systems/physics-system/subsystems/physics/index.d.ts +1 -1
  58. package/build/contrib/systems/physics-system/subsystems/physics/index.js +10 -14
  59. package/build/contrib/systems/renderer/builders/bitmap-text-builder/index.d.ts +8 -0
  60. package/build/contrib/systems/renderer/builders/bitmap-text-builder/index.js +115 -0
  61. package/build/contrib/systems/renderer/builders/bitmap-text-builder/utils.d.ts +2 -0
  62. package/build/contrib/systems/renderer/builders/bitmap-text-builder/utils.js +7 -0
  63. package/build/contrib/systems/renderer/builders/builder.d.ts +7 -0
  64. package/build/contrib/systems/renderer/builders/index.d.ts +5 -0
  65. package/build/contrib/systems/renderer/builders/index.js +4 -0
  66. package/build/contrib/systems/renderer/builders/pixi-view-builder/index.d.ts +8 -0
  67. package/build/contrib/systems/renderer/builders/pixi-view-builder/index.js +31 -0
  68. package/build/contrib/systems/renderer/builders/shape-builder/index.d.ts +12 -0
  69. package/build/contrib/systems/renderer/builders/shape-builder/index.js +128 -0
  70. package/build/contrib/systems/renderer/builders/shape-builder/utils.d.ts +4 -0
  71. package/build/contrib/systems/renderer/builders/shape-builder/utils.js +85 -0
  72. package/build/contrib/systems/renderer/builders/sprite-builder/index.d.ts +19 -0
  73. package/build/contrib/systems/renderer/builders/sprite-builder/index.js +166 -0
  74. package/build/contrib/systems/renderer/builders/sprite-builder/utils.d.ts +4 -0
  75. package/build/contrib/systems/renderer/builders/sprite-builder/utils.js +16 -0
  76. package/build/contrib/systems/renderer/builders/utils.d.ts +1 -0
  77. package/build/contrib/systems/renderer/builders/utils.js +4 -0
  78. package/build/contrib/systems/renderer/consts.d.ts +5 -0
  79. package/build/contrib/systems/renderer/consts.js +12 -0
  80. package/build/contrib/systems/renderer/index.d.ts +2 -0
  81. package/build/contrib/systems/renderer/index.js +2 -0
  82. package/build/contrib/systems/renderer/renderer.d.ts +31 -0
  83. package/build/contrib/systems/renderer/renderer.js +249 -0
  84. package/build/contrib/systems/renderer/service/index.d.ts +20 -0
  85. package/build/contrib/systems/renderer/service/index.js +70 -0
  86. package/build/contrib/systems/{sprite-renderer → renderer}/sort/index.d.ts +1 -3
  87. package/build/contrib/systems/{sprite-renderer → renderer}/sort/index.js +2 -4
  88. package/build/contrib/systems/renderer/sort/sort-by-layer.d.ts +2 -0
  89. package/build/contrib/systems/renderer/sort/sort-by-layer.js +13 -0
  90. package/build/contrib/systems/renderer/sort/sort-by-x-axis.d.ts +2 -0
  91. package/build/contrib/systems/renderer/sort/sort-by-x-axis.js +9 -0
  92. package/build/contrib/systems/renderer/sort/sort-by-y-axis.d.ts +2 -0
  93. package/build/contrib/systems/renderer/sort/sort-by-y-axis.js +9 -0
  94. package/build/contrib/systems/renderer/sort/types.d.ts +2 -0
  95. package/build/contrib/systems/{sprite-renderer → renderer}/sort/utils.d.ts +1 -1
  96. package/build/contrib/systems/renderer/types.d.ts +26 -0
  97. package/build/contrib/systems/renderer/types.js +1 -0
  98. package/build/contrib/systems/renderer/utils.d.ts +5 -0
  99. package/build/contrib/systems/renderer/utils.js +42 -0
  100. package/build/contrib/types/input-events.d.ts +1 -1
  101. package/build/contrib/types/view.d.ts +1 -0
  102. package/build/contrib/types/view.js +1 -0
  103. package/build/engine/actor/actor-collection.d.ts +4 -1
  104. package/build/engine/actor/actor-collection.js +4 -1
  105. package/build/engine/actor/actor-creator.d.ts +3 -3
  106. package/build/engine/actor/actor-query.d.ts +29 -0
  107. package/build/engine/actor/actor-query.js +85 -0
  108. package/build/engine/actor/actor.d.ts +3 -4
  109. package/build/engine/actor/index.d.ts +2 -0
  110. package/build/engine/actor/index.js +1 -0
  111. package/build/engine/component/component.d.ts +2 -2
  112. package/build/engine/data-lib/cache-store.d.ts +2 -1
  113. package/build/engine/data-lib/cache-store.js +7 -1
  114. package/build/engine/engine.d.ts +28 -6
  115. package/build/engine/engine.js +35 -27
  116. package/build/engine/entity/entity.d.ts +1 -1
  117. package/build/engine/event-target/event-target.d.ts +1 -1
  118. package/build/engine/math-lib/vector/ops.d.ts +4 -4
  119. package/build/engine/math-lib/vector/ops.js +2 -3
  120. package/build/engine/resource-loader/loaders/image-loader.d.ts +1 -1
  121. package/build/engine/resource-loader/loaders/index.d.ts +2 -3
  122. package/build/engine/resource-loader/loaders/json-loader.d.ts +1 -1
  123. package/build/engine/resource-loader/loaders/loader.d.ts +1 -1
  124. package/build/engine/scene/scene-manager.js +7 -1
  125. package/build/engine/template/template-collection.d.ts +2 -2
  126. package/build/engine/template/template.d.ts +2 -2
  127. package/build/index.d.ts +2 -2
  128. package/build/index.js +1 -1
  129. package/build/types/global.d.ts +20 -0
  130. package/package.json +13 -10
  131. package/build/contrib/components/light/index.d.ts +0 -20
  132. package/build/contrib/components/light/index.js +0 -18
  133. package/build/contrib/components/renderable/index.d.ts +0 -44
  134. package/build/contrib/components/renderable/index.js +0 -65
  135. package/build/contrib/components/renderable/material.d.ts +0 -16
  136. package/build/contrib/components/renderable/material.js +0 -8
  137. package/build/contrib/components/sprite/material.d.ts +0 -16
  138. package/build/contrib/components/sprite/material.js +0 -8
  139. package/build/contrib/systems/sprite-renderer/index.d.ts +0 -2
  140. package/build/contrib/systems/sprite-renderer/index.js +0 -2
  141. package/build/contrib/systems/sprite-renderer/light-subsystem/index.d.ts +0 -13
  142. package/build/contrib/systems/sprite-renderer/light-subsystem/index.js +0 -62
  143. package/build/contrib/systems/sprite-renderer/light-subsystem/light-factory.d.ts +0 -4
  144. package/build/contrib/systems/sprite-renderer/light-subsystem/light-factory.js +0 -27
  145. package/build/contrib/systems/sprite-renderer/material-factory/index.d.ts +0 -4
  146. package/build/contrib/systems/sprite-renderer/material-factory/index.js +0 -32
  147. package/build/contrib/systems/sprite-renderer/renderer.d.ts +0 -36
  148. package/build/contrib/systems/sprite-renderer/renderer.js +0 -249
  149. package/build/contrib/systems/sprite-renderer/service/index.d.ts +0 -24
  150. package/build/contrib/systems/sprite-renderer/service/index.js +0 -52
  151. package/build/contrib/systems/sprite-renderer/sort/sort-by-fit.d.ts +0 -2
  152. package/build/contrib/systems/sprite-renderer/sort/sort-by-fit.js +0 -12
  153. package/build/contrib/systems/sprite-renderer/sort/sort-by-layer.d.ts +0 -2
  154. package/build/contrib/systems/sprite-renderer/sort/sort-by-layer.js +0 -14
  155. package/build/contrib/systems/sprite-renderer/sort/sort-by-x-axis.d.ts +0 -2
  156. package/build/contrib/systems/sprite-renderer/sort/sort-by-x-axis.js +0 -15
  157. package/build/contrib/systems/sprite-renderer/sort/sort-by-y-axis.d.ts +0 -2
  158. package/build/contrib/systems/sprite-renderer/sort/sort-by-y-axis.js +0 -15
  159. package/build/contrib/systems/sprite-renderer/sort/sort-by-z-axis.d.ts +0 -2
  160. package/build/contrib/systems/sprite-renderer/sort/sort-by-z-axis.js +0 -6
  161. package/build/contrib/systems/sprite-renderer/sort/types.d.ts +0 -2
  162. package/build/contrib/systems/sprite-renderer/sprite-cropper.d.ts +0 -8
  163. package/build/contrib/systems/sprite-renderer/sprite-cropper.js +0 -30
  164. package/build/contrib/systems/sprite-renderer/types.d.ts +0 -7
  165. package/build/contrib/systems/sprite-renderer/utils.d.ts +0 -9
  166. package/build/contrib/systems/sprite-renderer/utils.js +0 -47
  167. /package/build/contrib/systems/{sprite-renderer/sort/types.js → renderer/builders/builder.js} +0 -0
  168. /package/build/contrib/systems/{sprite-renderer → renderer/sort}/types.js +0 -0
  169. /package/build/contrib/systems/{sprite-renderer → renderer}/sort/utils.js +0 -0
@@ -1,5 +1,5 @@
1
1
  export declare class ComparatorConditionComponentValue {
2
2
  type: string;
3
- value: string | Array<string>;
3
+ value: string | string[];
4
4
  constructor(config: unknown);
5
5
  }
@@ -4,7 +4,7 @@ import { OneDimensionalProps } from './one-dimensional-props';
4
4
  import { TwoDimensionalProps } from './two-dimensional-props';
5
5
  import type { GroupStateConfig } from './types';
6
6
  export declare class GroupState extends State {
7
- substates: Array<Substate>;
7
+ substates: Substate[];
8
8
  pickMode: '1D' | '2D';
9
9
  pickProps: OneDimensionalProps | TwoDimensionalProps;
10
10
  constructor(config: GroupStateConfig);
@@ -4,7 +4,7 @@ import { GroupState } from './group-state';
4
4
  import type { AnimatableConfig } from './types';
5
5
  export type { AnimatableConfig };
6
6
  export declare class Animatable extends Component {
7
- states: Array<IndividualState | GroupState>;
7
+ states: (IndividualState | GroupState)[];
8
8
  initialState: string;
9
9
  currentState?: IndividualState | GroupState;
10
10
  duration: number;
@@ -1,4 +1,4 @@
1
1
  export declare class OneDimensionalProps {
2
- x: string | Array<string>;
2
+ x: string | string[];
3
3
  constructor(config: unknown);
4
4
  }
@@ -3,8 +3,6 @@ export class OneDimensionalProps {
3
3
  x;
4
4
  constructor(config) {
5
5
  const { x = '' } = config;
6
- this.x = Array.isArray(x)
7
- ? x.slice(0)
8
- : x.split(SEPARATOR);
6
+ this.x = Array.isArray(x) ? x.slice(0) : x.split(SEPARATOR);
9
7
  }
10
8
  }
@@ -5,6 +5,6 @@ export declare class State {
5
5
  name: string;
6
6
  speed: number;
7
7
  type: 'individual' | 'group';
8
- transitions: Array<Transition>;
8
+ transitions: Transition[];
9
9
  constructor(config: StateConfig);
10
10
  }
@@ -1,11 +1,11 @@
1
1
  import type { TimelineConfig } from './types';
2
2
  export interface FrameField {
3
- path: Array<string>;
3
+ path: string[];
4
4
  value: string | number | boolean;
5
5
  }
6
6
  export type Frame = Record<string, FrameField>;
7
7
  export declare class Timeline {
8
- frames: Array<Frame>;
8
+ frames: Frame[];
9
9
  looped: boolean;
10
10
  constructor(config: TimelineConfig);
11
11
  }
@@ -4,6 +4,6 @@ export declare class Transition {
4
4
  id: string;
5
5
  state: string;
6
6
  time: number;
7
- conditions: Array<Condition>;
7
+ conditions: Condition[];
8
8
  constructor(config: TransitionConfig);
9
9
  }
@@ -1,5 +1,5 @@
1
1
  import { OneDimensionalProps } from './one-dimensional-props';
2
2
  export declare class TwoDimensionalProps extends OneDimensionalProps {
3
- y: string | Array<string>;
3
+ y: string | string[];
4
4
  constructor(config: unknown);
5
5
  }
@@ -5,8 +5,6 @@ export class TwoDimensionalProps extends OneDimensionalProps {
5
5
  constructor(config) {
6
6
  super(config);
7
7
  const { y = '' } = config;
8
- this.y = Array.isArray(y)
9
- ? y.slice(0)
10
- : y.split(SEPARATOR);
8
+ this.y = Array.isArray(y) ? y.slice(0) : y.split(SEPARATOR);
11
9
  }
12
10
  }
@@ -6,15 +6,15 @@ export interface FrameFieldConfig {
6
6
  }
7
7
  export interface FrameConfig {
8
8
  id: string;
9
- fields: Array<FrameFieldConfig>;
9
+ fields: FrameFieldConfig[];
10
10
  }
11
11
  export interface TimelineConfig {
12
- frames: Array<FrameConfig>;
12
+ frames: FrameConfig[];
13
13
  looped: boolean;
14
14
  }
15
15
  export interface ComparatorConditionComponentValueConfig {
16
16
  type: string;
17
- value: string | Array<string>;
17
+ value: string | string[];
18
18
  }
19
19
  export interface ComparatorConditionSimpleValueConfig {
20
20
  type: string;
@@ -42,14 +42,14 @@ export interface TransitionConfig {
42
42
  id: string;
43
43
  state: string;
44
44
  time: number;
45
- conditions: Array<ConditionConfig>;
45
+ conditions: ConditionConfig[];
46
46
  }
47
47
  export interface StateConfig {
48
48
  id: string;
49
49
  name: string;
50
50
  speed: number;
51
51
  type: 'individual' | 'group';
52
- transitions: Array<TransitionConfig>;
52
+ transitions: TransitionConfig[];
53
53
  }
54
54
  export interface IndividualStateConfig extends StateConfig {
55
55
  timeline: TimelineConfig;
@@ -62,17 +62,17 @@ export interface SubstateConfig {
62
62
  y: number;
63
63
  }
64
64
  export interface OneDimensionalPropsConfig {
65
- x: string | Array<string>;
65
+ x: string | string[];
66
66
  }
67
67
  export interface TwoDimensionalPropsConfig extends OneDimensionalPropsConfig {
68
- y: string | Array<string>;
68
+ y: string | string[];
69
69
  }
70
70
  export interface GroupStateConfig extends StateConfig {
71
- substates: Array<SubstateConfig>;
71
+ substates: SubstateConfig[];
72
72
  pickMode: '1D' | '2D';
73
73
  pickProps: OneDimensionalPropsConfig | TwoDimensionalPropsConfig;
74
74
  }
75
75
  export interface AnimatableConfig extends Record<string, unknown> {
76
- states: Array<unknown>;
76
+ states: unknown[];
77
77
  initialState: string;
78
78
  }
@@ -0,0 +1,36 @@
1
+ import type { BitmapText as PixiBitmapText } from 'pixi.js';
2
+ import { Component } from '../../../engine/component';
3
+ import { type BlendingMode } from '../../types/view';
4
+ interface RenderData {
5
+ view: PixiBitmapText;
6
+ graphicsContextKey?: string;
7
+ }
8
+ type TextAlign = 'left' | 'center' | 'right';
9
+ export interface BitmapTextConfig {
10
+ text: string;
11
+ font: string;
12
+ fontSize: number;
13
+ align: TextAlign;
14
+ color: string;
15
+ opacity: number;
16
+ blending: BlendingMode;
17
+ disabled: boolean;
18
+ sortingLayer: string;
19
+ sortCenter: [number, number];
20
+ }
21
+ export declare class BitmapText extends Component {
22
+ text: string;
23
+ font: string;
24
+ fontSize: number;
25
+ align: TextAlign;
26
+ color: string;
27
+ opacity: number;
28
+ blending: BlendingMode;
29
+ disabled: boolean;
30
+ sortingLayer: string;
31
+ sortCenter: [number, number];
32
+ renderData?: RenderData;
33
+ constructor(config: BitmapTextConfig);
34
+ clone(): BitmapText;
35
+ }
36
+ export {};
@@ -0,0 +1,42 @@
1
+ import { Component } from '../../../engine/component';
2
+ export class BitmapText extends Component {
3
+ text;
4
+ font;
5
+ fontSize;
6
+ align;
7
+ color;
8
+ opacity;
9
+ blending;
10
+ disabled;
11
+ sortingLayer;
12
+ sortCenter;
13
+ renderData;
14
+ constructor(config) {
15
+ super();
16
+ this.text = config.text;
17
+ this.font = config.font;
18
+ this.fontSize = config.fontSize;
19
+ this.align = config.align;
20
+ this.color = config.color;
21
+ this.opacity = config.opacity;
22
+ this.blending = config.blending;
23
+ this.disabled = config.disabled;
24
+ this.sortingLayer = config.sortingLayer;
25
+ this.sortCenter = config.sortCenter;
26
+ }
27
+ clone() {
28
+ return new BitmapText({
29
+ text: this.text,
30
+ font: this.font,
31
+ fontSize: this.fontSize,
32
+ align: this.align,
33
+ color: this.color,
34
+ opacity: this.opacity,
35
+ blending: this.blending,
36
+ disabled: this.disabled,
37
+ sortingLayer: this.sortingLayer,
38
+ sortCenter: this.sortCenter.slice(0),
39
+ });
40
+ }
41
+ }
42
+ BitmapText.componentName = 'BitmapText';
@@ -16,7 +16,8 @@ export { MouseControl } from './mouse-control';
16
16
  export type { MouseControlConfig } from './mouse-control';
17
17
  export { Behaviors } from './behaviors';
18
18
  export type { BehaviorsConfig } from './behaviors';
19
- export { Light } from './light';
20
- export type { LightConfig } from './light';
21
19
  export { AudioSource } from './audio-source';
22
20
  export type { AudioSourceConfig } from './audio-source';
21
+ export { Shape, type ShapeConfig } from './shape';
22
+ export { PixiView } from './pixi-view';
23
+ export { BitmapText, type BitmapTextConfig } from './bitmap-text';
@@ -7,5 +7,7 @@ export { Sprite } from './sprite';
7
7
  export { Transform } from './transform';
8
8
  export { MouseControl } from './mouse-control';
9
9
  export { Behaviors } from './behaviors';
10
- export { Light } from './light';
11
10
  export { AudioSource } from './audio-source';
11
+ export { Shape } from './shape';
12
+ export { PixiView } from './pixi-view';
13
+ export { BitmapText } from './bitmap-text';
@@ -5,21 +5,19 @@ export interface KeyboardEventBind {
5
5
  attrs: InputEventAttributes;
6
6
  keepEmit: boolean;
7
7
  }
8
- export interface InputEventBindings {
9
- [key: string]: {
10
- pressed?: KeyboardEventBind;
11
- released?: KeyboardEventBind;
12
- };
13
- }
8
+ export type InputEventBindings = Record<string, {
9
+ pressed?: KeyboardEventBind;
10
+ released?: KeyboardEventBind;
11
+ }>;
14
12
  export interface KeyboardEventBindConfig {
15
13
  key: string;
16
14
  pressed: boolean;
17
15
  keepEmit?: boolean;
18
16
  eventType: string;
19
- attrs: Array<InputEventAttributeConfig>;
17
+ attrs: InputEventAttributeConfig[];
20
18
  }
21
19
  export interface KeyboardControlConfig extends Record<string, unknown> {
22
- inputEventBindings: Array<KeyboardEventBindConfig>;
20
+ inputEventBindings: KeyboardEventBindConfig[];
23
21
  }
24
22
  export declare class KeyboardControl extends Component {
25
23
  inputEventBindings: InputEventBindings;
@@ -27,7 +27,10 @@ export class KeyboardControl extends Component {
27
27
  eventType: pressed.eventType,
28
28
  pressed: true,
29
29
  keepEmit: pressed.keepEmit,
30
- attrs: Object.keys(pressed.attrs).map((name) => ({ name, value: pressed.attrs[name] })),
30
+ attrs: Object.keys(pressed.attrs).map((name) => ({
31
+ name,
32
+ value: pressed.attrs[name],
33
+ })),
31
34
  });
32
35
  }
33
36
  if (released !== undefined) {
@@ -35,7 +38,10 @@ export class KeyboardControl extends Component {
35
38
  key: inputEvent,
36
39
  eventType: released.eventType,
37
40
  pressed: false,
38
- attrs: Object.keys(released.attrs).map((name) => ({ name, value: released.attrs[name] })),
41
+ attrs: Object.keys(released.attrs).map((name) => ({
42
+ name,
43
+ value: released.attrs[name],
44
+ })),
39
45
  });
40
46
  }
41
47
  return acc;
@@ -4,19 +4,15 @@ export interface MouseEventBind {
4
4
  eventType: string;
5
5
  attrs: InputEventAttributes;
6
6
  }
7
- export interface InputEventBindings {
8
- [key: string]: {
9
- [button: string]: MouseEventBind;
10
- };
11
- }
7
+ export type InputEventBindings = Record<string, Record<string, MouseEventBind>>;
12
8
  export interface MouseEventBindConfig {
13
9
  event: string;
14
10
  button?: number;
15
11
  eventType: string;
16
- attrs: Array<InputEventAttributeConfig>;
12
+ attrs: InputEventAttributeConfig[];
17
13
  }
18
14
  export interface MouseControlConfig {
19
- inputEventBindings: Array<MouseEventBindConfig>;
15
+ inputEventBindings: MouseEventBindConfig[];
20
16
  }
21
17
  export declare class MouseControl extends Component {
22
18
  inputEventBindings: InputEventBindings;
@@ -35,7 +35,10 @@ export class MouseControl extends Component {
35
35
  event: inputEvent,
36
36
  button: Number(button),
37
37
  eventType: buttonBinds[button].eventType,
38
- attrs: Object.keys(buttonBinds[button].attrs).map((name) => ({ name, value: buttonBinds[button].attrs[name] })),
38
+ attrs: Object.keys(buttonBinds[button].attrs).map((name) => ({
39
+ name,
40
+ value: buttonBinds[button].attrs[name],
41
+ })),
39
42
  });
40
43
  });
41
44
  return acc;
@@ -0,0 +1,20 @@
1
+ import type { ViewContainer } from 'pixi.js';
2
+ import { Component } from '../../../engine/component';
3
+ interface RenderData {
4
+ view: ViewContainer;
5
+ }
6
+ export interface PixiViewConfig {
7
+ createView: () => ViewContainer;
8
+ sortingLayer: string;
9
+ sortCenter: [number, number];
10
+ }
11
+ export declare class PixiView extends Component {
12
+ createView: () => ViewContainer;
13
+ sortingLayer: string;
14
+ sortCenter: [number, number];
15
+ renderData?: RenderData;
16
+ constructor(config: PixiViewConfig);
17
+ get view(): ViewContainer | undefined;
18
+ clone(): PixiView;
19
+ }
20
+ export {};
@@ -0,0 +1,24 @@
1
+ import { Component } from '../../../engine/component';
2
+ export class PixiView extends Component {
3
+ createView;
4
+ sortingLayer;
5
+ sortCenter;
6
+ renderData;
7
+ constructor(config) {
8
+ super();
9
+ this.createView = config.createView;
10
+ this.sortingLayer = config.sortingLayer;
11
+ this.sortCenter = config.sortCenter;
12
+ }
13
+ get view() {
14
+ return this.renderData?.view;
15
+ }
16
+ clone() {
17
+ return new PixiView({
18
+ createView: this.createView,
19
+ sortingLayer: this.sortingLayer,
20
+ sortCenter: this.sortCenter.slice(0),
21
+ });
22
+ }
23
+ }
24
+ PixiView.componentName = 'PixiView';
@@ -0,0 +1,64 @@
1
+ import type { Graphics } from 'pixi.js';
2
+ import { Component } from '../../../engine/component';
3
+ import { type BlendingMode } from '../../types/view';
4
+ interface RenderData {
5
+ view: Graphics;
6
+ graphicsContextKey?: string;
7
+ }
8
+ export type ShapeType = 'rectangle' | 'roundRectangle' | 'circle' | 'ellipse';
9
+ export interface BaseShape {
10
+ type: ShapeType;
11
+ strokeColor?: string;
12
+ strokeWidth: number;
13
+ strokeAlignment: number;
14
+ pixelLine: boolean;
15
+ fill?: string;
16
+ opacity: number;
17
+ blending: BlendingMode;
18
+ disabled: boolean;
19
+ sortingLayer: string;
20
+ sortCenter: [number, number];
21
+ }
22
+ export interface Rectangle extends BaseShape {
23
+ type: 'rectangle';
24
+ width: number;
25
+ height: number;
26
+ }
27
+ export interface RoundRectangle extends BaseShape {
28
+ type: 'roundRectangle';
29
+ width: number;
30
+ height: number;
31
+ radius: number;
32
+ }
33
+ export interface Circle extends BaseShape {
34
+ type: 'circle';
35
+ radius: number;
36
+ }
37
+ export interface Ellipse extends BaseShape {
38
+ type: 'ellipse';
39
+ radiusX: number;
40
+ radiusY: number;
41
+ }
42
+ export type ShapeConfig = BaseShape & Partial<Rectangle | RoundRectangle | Circle | Ellipse>;
43
+ export declare class Shape extends Component {
44
+ type: ShapeType;
45
+ strokeColor?: string;
46
+ strokeWidth: number;
47
+ strokeAlignment: number;
48
+ pixelLine: boolean;
49
+ fill?: string;
50
+ opacity: number;
51
+ blending: BlendingMode;
52
+ disabled: boolean;
53
+ sortingLayer: string;
54
+ sortCenter: [number, number];
55
+ width?: number;
56
+ height?: number;
57
+ radius?: number;
58
+ radiusX?: number;
59
+ radiusY?: number;
60
+ renderData?: RenderData;
61
+ constructor(config: ShapeConfig);
62
+ clone(): Shape;
63
+ }
64
+ export {};
@@ -0,0 +1,60 @@
1
+ import { Component } from '../../../engine/component';
2
+ export class Shape extends Component {
3
+ type;
4
+ strokeColor;
5
+ strokeWidth;
6
+ strokeAlignment;
7
+ pixelLine;
8
+ fill;
9
+ opacity;
10
+ blending;
11
+ disabled;
12
+ sortingLayer;
13
+ sortCenter;
14
+ width;
15
+ height;
16
+ radius;
17
+ radiusX;
18
+ radiusY;
19
+ renderData;
20
+ constructor(config) {
21
+ super();
22
+ this.type = config.type;
23
+ this.strokeColor = config.strokeColor;
24
+ this.strokeWidth = config.strokeWidth;
25
+ this.strokeAlignment = config.strokeAlignment;
26
+ this.pixelLine = config.pixelLine;
27
+ this.fill = config.fill;
28
+ this.opacity = config.opacity;
29
+ this.blending = config.blending;
30
+ this.disabled = config.disabled;
31
+ this.sortingLayer = config.sortingLayer;
32
+ this.sortCenter = config.sortCenter;
33
+ this.width = config.width;
34
+ this.height = config.height;
35
+ this.radius = config.radius;
36
+ this.radiusX = config.radiusX;
37
+ this.radiusY = config.radiusY;
38
+ }
39
+ clone() {
40
+ return new Shape({
41
+ type: this.type,
42
+ strokeColor: this.strokeColor,
43
+ strokeWidth: this.strokeWidth,
44
+ strokeAlignment: this.strokeAlignment,
45
+ pixelLine: this.pixelLine,
46
+ opacity: this.opacity,
47
+ blending: this.blending,
48
+ disabled: this.disabled,
49
+ sortingLayer: this.sortingLayer,
50
+ sortCenter: this.sortCenter.slice(0),
51
+ width: this.width,
52
+ height: this.height,
53
+ radius: this.radius,
54
+ radiusX: this.radiusX,
55
+ radiusY: this.radiusY,
56
+ fill: this.fill,
57
+ });
58
+ }
59
+ }
60
+ Shape.componentName = 'Shape';
@@ -1,7 +1,13 @@
1
+ import type { Sprite as PixiSprite, TilingSprite } from 'pixi.js';
1
2
  import { Component } from '../../../engine/component';
2
- import { Material, MaterialConfig } from './material';
3
+ import { type BlendingMode } from '../../types/view';
4
+ interface RenderData {
5
+ view: PixiSprite | TilingSprite;
6
+ textureSourceKey?: string;
7
+ textureArrayKey?: string;
8
+ }
3
9
  type FitType = 'stretch' | 'repeat';
4
- export type { MaterialType, BasicMaterialOptions, BlendingMode } from './material';
10
+ export { type BlendingMode } from '../../types/view';
5
11
  export interface SpriteConfig {
6
12
  src: string;
7
13
  width: number;
@@ -10,11 +16,13 @@ export interface SpriteConfig {
10
16
  rotation: number;
11
17
  flipX: boolean;
12
18
  flipY: boolean;
13
- disabled: boolean;
14
19
  sortingLayer: string;
15
20
  sortCenter: [number, number];
16
21
  fit: FitType;
17
- material: MaterialConfig;
22
+ color: string;
23
+ blending: BlendingMode;
24
+ opacity: number;
25
+ disabled: boolean;
18
26
  }
19
27
  export declare class Sprite extends Component {
20
28
  src: string;
@@ -28,8 +36,11 @@ export declare class Sprite extends Component {
28
36
  sortingLayer: string;
29
37
  sortCenter: [number, number];
30
38
  currentFrame?: number;
31
- fit: FitType;
32
- material: Material;
39
+ readonly fit: FitType;
40
+ color: string;
41
+ blending: BlendingMode;
42
+ opacity: number;
43
+ renderData?: RenderData;
33
44
  constructor(config: SpriteConfig);
34
45
  clone(): Sprite;
35
46
  }
@@ -1,5 +1,4 @@
1
1
  import { Component } from '../../../engine/component';
2
- import { Material } from './material';
3
2
  export class Sprite extends Component {
4
3
  src;
5
4
  width;
@@ -13,7 +12,10 @@ export class Sprite extends Component {
13
12
  sortCenter;
14
13
  currentFrame;
15
14
  fit;
16
- material;
15
+ color;
16
+ blending;
17
+ opacity;
18
+ renderData;
17
19
  constructor(config) {
18
20
  super();
19
21
  this.src = config.src;
@@ -28,7 +30,9 @@ export class Sprite extends Component {
28
30
  this.sortingLayer = config.sortingLayer;
29
31
  this.sortCenter = config.sortCenter;
30
32
  this.fit = config.fit;
31
- this.material = new Material(config.material);
33
+ this.color = config.color ?? '#ffffff';
34
+ this.blending = config.blending ?? 'normal';
35
+ this.opacity = config.opacity ?? 1;
32
36
  }
33
37
  clone() {
34
38
  return new Sprite({
@@ -43,7 +47,9 @@ export class Sprite extends Component {
43
47
  sortingLayer: this.sortingLayer,
44
48
  sortCenter: this.sortCenter.slice(0),
45
49
  fit: this.fit,
46
- material: this.material,
50
+ color: this.color,
51
+ blending: this.blending,
52
+ opacity: this.opacity,
47
53
  });
48
54
  }
49
55
  }
@@ -1,7 +1,7 @@
1
1
  import { SceneSystem } from '../../../engine/system';
2
2
  import type { UpdateOptions, SceneSystemOptions } from '../../../engine/system';
3
3
  export declare class Animator extends SceneSystem {
4
- private actorCollection;
4
+ private actorQuery;
5
5
  private substatePickers;
6
6
  private actorConditions;
7
7
  constructor(options: SceneSystemOptions);
@@ -1,5 +1,5 @@
1
1
  import { SceneSystem } from '../../../engine/system';
2
- import { ActorCollection } from '../../../engine/actor';
2
+ import { ActorQuery } from '../../../engine/actor';
3
3
  import { Animatable } from '../../components/animatable';
4
4
  import { RemoveActor } from '../../../engine/events';
5
5
  import { conditionControllers } from './condition-controllers';
@@ -7,25 +7,25 @@ import { substatePickers } from './substate-pickers';
7
7
  import { setValue } from './utils';
8
8
  const FRAME_RATE = 100;
9
9
  export class Animator extends SceneSystem {
10
- actorCollection;
10
+ actorQuery;
11
11
  substatePickers;
12
12
  actorConditions;
13
13
  constructor(options) {
14
14
  super();
15
- this.actorCollection = new ActorCollection(options.scene, {
16
- components: [Animatable],
15
+ this.actorQuery = new ActorQuery({
16
+ scene: options.scene,
17
+ filter: [Animatable],
17
18
  });
18
- this.substatePickers = Object.keys(substatePickers)
19
- .reduce((storage, key) => {
19
+ this.substatePickers = Object.keys(substatePickers).reduce((storage, key) => {
20
20
  const SubstatePicker = substatePickers[key];
21
21
  storage[key] = new SubstatePicker();
22
22
  return storage;
23
23
  }, {});
24
24
  this.actorConditions = {};
25
- this.actorCollection.addEventListener(RemoveActor, this.handleActorRemove);
25
+ this.actorQuery.addEventListener(RemoveActor, this.handleActorRemove);
26
26
  }
27
27
  onSceneDestroy() {
28
- this.actorCollection.removeEventListener(RemoveActor, this.handleActorRemove);
28
+ this.actorQuery.removeEventListener(RemoveActor, this.handleActorRemove);
29
29
  Object.values(this.actorConditions).forEach((transitions) => {
30
30
  Object.values(transitions).forEach((conditions) => {
31
31
  Object.values(conditions).forEach((controller) => {
@@ -58,7 +58,7 @@ export class Animator extends SceneSystem {
58
58
  }
59
59
  update(options) {
60
60
  const { deltaTime } = options;
61
- this.actorCollection.forEach((actor) => {
61
+ this.actorQuery.getActors().forEach((actor) => {
62
62
  const animatable = actor.getComponent(Animatable);
63
63
  if (animatable.currentState === void 0) {
64
64
  return;