summaryrefslogtreecommitdiff
path: root/src/engine/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/components')
-rw-r--r--src/engine/components/Colliding.ts7
-rw-r--r--src/engine/components/ComponentNames.ts2
-rw-r--r--src/engine/components/Grid.ts5
-rw-r--r--src/engine/components/Highlight.ts28
-rw-r--r--src/engine/components/Pushable.ts11
-rw-r--r--src/engine/components/index.ts2
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";