39 lines
No EOL
1.1 KiB
TypeScript
39 lines
No EOL
1.1 KiB
TypeScript
import { System, Entity } from "ecsy"
|
|
import { Adventure } from "../Components/adventure"
|
|
import { InCabin } from "../Components/inCabin"
|
|
|
|
// MovableSystem
|
|
export class AdventureReturnSystem extends System {
|
|
priority = -100
|
|
// This method will get called on every frame by default
|
|
execute(delta : number) {
|
|
//TODO: consider only executing this every few seconds?
|
|
let now = Date.now()
|
|
// Iterate through all the entities on the query
|
|
this.queries.adventures.results.forEach((entity: Entity) => {
|
|
let adventure = entity.getComponent(Adventure)
|
|
if(adventure.arrivalTime.getTime() < now)
|
|
this.arriveAdventure(entity, adventure)
|
|
})
|
|
}
|
|
|
|
arriveAdventure(entity: Entity, adventure?: Adventure){
|
|
if(!adventure)
|
|
adventure = entity.getComponent(Adventure)
|
|
|
|
//TODO: resource management
|
|
|
|
adventure.members.forEach((member: Entity) => {
|
|
member.addComponent(InCabin)
|
|
});
|
|
|
|
entity.remove()
|
|
}
|
|
|
|
static queries = {
|
|
adventures: {
|
|
components: [ Adventure ]
|
|
},
|
|
}
|
|
queries: any
|
|
} |