CabinGame/Program/src/Systems/AdventureReturnSystem.ts

39 lines
1.1 KiB
TypeScript
Raw Normal View History

2020-02-17 11:56:41 +00:00
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
}