diff options
Diffstat (limited to 'src/engine/components')
-rw-r--r-- | src/engine/components/Colliding.ts | 7 | ||||
-rw-r--r-- | src/engine/components/ComponentNames.ts | 2 | ||||
-rw-r--r-- | src/engine/components/Grid.ts | 5 | ||||
-rw-r--r-- | src/engine/components/Highlight.ts | 28 | ||||
-rw-r--r-- | src/engine/components/Pushable.ts | 11 | ||||
-rw-r--r-- | src/engine/components/index.ts | 2 |
6 files changed, 50 insertions, 5 deletions
diff --git a/src/engine/components/Colliding.ts b/src/engine/components/Colliding.ts new file mode 100644 index 0000000..4027c3d --- /dev/null +++ b/src/engine/components/Colliding.ts @@ -0,0 +1,7 @@ +import { Component, ComponentNames } from "."; + +export class Colliding extends Component { + constructor() { + super(ComponentNames.Colliding); + } +} diff --git a/src/engine/components/ComponentNames.ts b/src/engine/components/ComponentNames.ts index da6c37a..5e9b589 100644 --- a/src/engine/components/ComponentNames.ts +++ b/src/engine/components/ComponentNames.ts @@ -6,4 +6,6 @@ export namespace ComponentNames { export const Control = "Control"; export const Highlight = "Highlight"; export const Interactable = "Interactable"; + export const Pushable = "Pushable"; + export const Colliding = "Colliding"; } diff --git a/src/engine/components/Grid.ts b/src/engine/components/Grid.ts index 0c18a65..a62cc7b 100644 --- a/src/engine/components/Grid.ts +++ b/src/engine/components/Grid.ts @@ -6,15 +6,12 @@ export class Grid extends Component { public gridPosition: Coord2D; public movingDirection: Direction; - public pushable: boolean = false; - constructor(pushable: boolean = false, position: Coord2D = { x: 0, y: 0 }) { + constructor(position: Coord2D = { x: 0, y: 0 }) { super(ComponentNames.Grid); this.initialized = false; - this.gridPosition = position; this.movingDirection = Direction.NONE; - this.pushable = pushable; } } diff --git a/src/engine/components/Highlight.ts b/src/engine/components/Highlight.ts index 49d9f96..5875057 100644 --- a/src/engine/components/Highlight.ts +++ b/src/engine/components/Highlight.ts @@ -1,7 +1,33 @@ import { Component, ComponentNames } from "."; export class Highlight extends Component { - constructor() { + public isHighlighted: boolean; + private onHighlight: Function; + private onUnhighlight: Function; + + constructor( + onHighlight: Function, + onUnhighlight: Function, + isHighlighted: boolean = false, + ) { super(ComponentNames.Highlight); + + this.isHighlighted = isHighlighted; + this.onHighlight = onHighlight; + this.onUnhighlight = onUnhighlight; + } + + public highlight() { + if (!this.isHighlighted) { + this.isHighlighted = true; + this.onHighlight(); + } + } + + public unhighlight() { + if (this.isHighlighted) { + this.isHighlighted = false; + this.onUnhighlight(); + } } } diff --git a/src/engine/components/Pushable.ts b/src/engine/components/Pushable.ts new file mode 100644 index 0000000..b3d0dc4 --- /dev/null +++ b/src/engine/components/Pushable.ts @@ -0,0 +1,11 @@ +import { Component, ComponentNames } from "."; + +export class Pushable extends Component { + public pushable: boolean; + + constructor(pushable = false) { + super(ComponentNames.Pushable); + + this.pushable = pushable; + } +} diff --git a/src/engine/components/index.ts b/src/engine/components/index.ts index c470eff..4ae886a 100644 --- a/src/engine/components/index.ts +++ b/src/engine/components/index.ts @@ -7,3 +7,5 @@ export * from "./BoundingBox"; export * from "./Control"; export * from "./Highlight"; export * from "./Interactable"; +export * from "./Pushable"; +export * from "./Colliding"; |