engine decorator references
parent
69a6a8d2bf
commit
d9c9008cf4
|
@ -40,8 +40,6 @@ import { World } from "lua-lib/bump";
|
||||||
|
|
||||||
@Reads(BallSpawnMessage)
|
@Reads(BallSpawnMessage)
|
||||||
export class BallSpawner extends Spawner {
|
export class BallSpawner extends Spawner {
|
||||||
public spawn_message_type = BallSpawnMessage;
|
|
||||||
|
|
||||||
public collision_world: World;
|
public collision_world: World;
|
||||||
|
|
||||||
public initialize(collision_world: World) {
|
public initialize(collision_world: World) {
|
||||||
|
@ -110,8 +108,6 @@ import { World } from "lua-lib/bump";
|
||||||
|
|
||||||
@Reads(GameBoundarySpawnMessage)
|
@Reads(GameBoundarySpawnMessage)
|
||||||
export class GameBoundarySpawner extends Spawner {
|
export class GameBoundarySpawner extends Spawner {
|
||||||
public spawn_message_type = GameBoundarySpawnMessage;
|
|
||||||
|
|
||||||
private collision_world: World;
|
private collision_world: World;
|
||||||
|
|
||||||
public initialize(collision_world: World) {
|
public initialize(collision_world: World) {
|
||||||
|
@ -174,8 +170,6 @@ import { World } from "lua-lib/bump";
|
||||||
|
|
||||||
@Reads(PaddleSpawnMessage)
|
@Reads(PaddleSpawnMessage)
|
||||||
export class PaddleSpawner extends Spawner {
|
export class PaddleSpawner extends Spawner {
|
||||||
public spawn_message_type = PaddleSpawnMessage;
|
|
||||||
|
|
||||||
private collision_world: World;
|
private collision_world: World;
|
||||||
|
|
||||||
public initialize(collision_world: World) {
|
public initialize(collision_world: World) {
|
||||||
|
|
|
@ -36,9 +36,8 @@ import { VelocityComponent } from "game/components/velocity";
|
||||||
import { MotionMessage } from "game/messages/component/motion";
|
import { MotionMessage } from "game/messages/component/motion";
|
||||||
|
|
||||||
@Emits(MotionMessage)
|
@Emits(MotionMessage)
|
||||||
|
@Detects(PositionComponent, VelocityComponent)
|
||||||
export class VelocityEngine extends Detector {
|
export class VelocityEngine extends Detector {
|
||||||
public component_types = [ PositionComponent, VelocityComponent ];
|
|
||||||
|
|
||||||
protected detect(entity: Entity) {
|
protected detect(entity: Entity) {
|
||||||
const position_component = entity.get_component(PositionComponent);
|
const position_component = entity.get_component(PositionComponent);
|
||||||
const velocity_component = entity.get_component(VelocityComponent);
|
const velocity_component = entity.get_component(VelocityComponent);
|
||||||
|
@ -50,9 +49,9 @@ export class VelocityEngine extends Detector {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
A Detector, like a Spawner, is an engine with one required property and method: *component_types* and *detect*.
|
A Detector, like a Spawner, is an engine with one required method: *detect*.
|
||||||
|
|
||||||
When an Entity has all of the components specified in *component_types*, it begins to track the Entity. Each frame, it calls its *detect* method on that Entity.
|
When an Entity has all of the components specified in **@Detects**, it begins to track the Entity. Each frame, it calls its *detect* method on that Entity.
|
||||||
|
|
||||||
So, our VelocityEngine will track everything with a PositionComponent and VelocityComponent and create a MotionMessage every frame.
|
So, our VelocityEngine will track everything with a PositionComponent and VelocityComponent and create a MotionMessage every frame.
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,6 @@ import { BallSpawnMessage } from "game/messages/ball_spawn";
|
||||||
|
|
||||||
@Reads(BallSpawnMessage)
|
@Reads(BallSpawnMessage)
|
||||||
export class BallSpawner extends Spawner {
|
export class BallSpawner extends Spawner {
|
||||||
public spawn_message_type = BallSpawnMessage;
|
|
||||||
|
|
||||||
public spawn(message: BallSpawnMessage) {
|
public spawn(message: BallSpawnMessage) {
|
||||||
const ball_entity = this.create_entity();
|
const ball_entity = this.create_entity();
|
||||||
|
|
||||||
|
@ -65,9 +63,10 @@ export class BallSpawner extends Spawner {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Spawners aren't very complicated. They have one required property and method: *spawn_message_type* and *spawn*.
|
Spawners aren't very complicated. They have one required method: *spawn*.
|
||||||
|
The first Message type given to **@Reads** is assumed to be the spawn message type.
|
||||||
|
|
||||||
When the Spawner reads a message of *spawn_message_type*, it runs its spawn method once. Simple as that.
|
When the Spawner reads a message of the spawn message type, it runs its spawn method once. Simple as that.
|
||||||
|
|
||||||
Now let's actually send out the BallSpawnMessage.
|
Now let's actually send out the BallSpawnMessage.
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ It's also very expensive to create a new LOVE Font every frame. Like the Text ob
|
||||||
Let's add our ScoreRenderer to the WorldBuilder.
|
Let's add our ScoreRenderer to the WorldBuilder.
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
world_builder.add_renderer(ScoreRenderer);
|
world_builder.add_renderer(ScoreRenderer).initialize(play_area_width * 0.5);
|
||||||
```
|
```
|
||||||
|
|
||||||
<video width="75%" autoplay="autoplay" muted="muted" loop="loop" style="display: block; margin: 0 auto;">
|
<video width="75%" autoplay="autoplay" muted="muted" loop="loop" style="display: block; margin: 0 auto;">
|
||||||
|
|
Loading…
Reference in New Issue