FullVehicleOperation.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
  2. import { SingletonModuleComp, smc } from "../../common/SingletonModuleComp";
  3. import { Puppet } from "../../puppet/puppet";
  4. import { PuppetViewComp } from "../../puppet/view/PuppetViewComp";
  5. import { Checkpoint } from "../Checkpoint";
  6. import { CheckpointModelComp } from "../model/CheckpointModel";
  7. /**
  8. * 站台人员进车
  9. */
  10. @ecs.register('FullVehicleOperation')
  11. export class FullVehicleOperationComp extends ecs.Comp {
  12. reset() {
  13. }
  14. }
  15. export class FullVehicleOperationSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
  16. filter(): ecs.IMatcher {
  17. return ecs.allOf(CheckpointModelComp, FullVehicleOperationComp);
  18. }
  19. entityEnter(e: Checkpoint): void {
  20. const curVehicleModel = e.CheckpointModel.curVehicle.VehicleModel
  21. const needCount = curVehicleModel.capcity - curVehicleModel.useSit
  22. const color = curVehicleModel.color
  23. const puppets = e.CheckpointModel.puppets
  24. let count = 0
  25. for (let index = 0; index < puppets.length; index++) {
  26. const element = puppets[index];
  27. if(element.PuppetModel.color===color){
  28. count+=1
  29. element.PuppetView.animator.onRunComplete = () => {
  30. e.CheckpointModel.curVehicle.VehicleView.createPuppet()
  31. e.removeChild(element)
  32. element.destroy()
  33. e.CheckpointModel.peopleCount-=1
  34. }
  35. const cell = e.CheckpointModel.cells
  36. cell[element.PuppetModel.x][element.PuppetModel.y] = null
  37. e.CheckpointModel.curVehicle.VehicleModel.useSit += 1
  38. element.PuppetView.animator.moveToTarget(e.CheckpointModel.curVehicle.VehicleView.node.position.clone())
  39. }
  40. if(count>=needCount){
  41. break
  42. }
  43. }
  44. e.remove(FullVehicleOperationComp)
  45. }
  46. }