StationOperation.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { v3 } from "cc";
  2. import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
  3. import { MoveToComp } from "../../common/ecs/position/MoveTo";
  4. import { Checkpoint } from "../Checkpoint";
  5. import { CheckpointModelComp } from "../model/CheckpointModel";
  6. /**
  7. * 站台人员进车
  8. */
  9. @ecs.register('StationOperation')
  10. export class StationOperationComp extends ecs.Comp {
  11. reset() {
  12. }
  13. }
  14. export class StationOperationSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
  15. filter(): ecs.IMatcher {
  16. return ecs.allOf(CheckpointModelComp, StationOperationComp);
  17. }
  18. entityEnter(e: Checkpoint): void {
  19. e.CheckpointModel.stations.forEach(val => {
  20. if (val.StationModel.puppet && val.StationModel.puppet.PuppetModel.color === e.CheckpointModel.curVehicle.VehicleModel.color) {
  21. if (!e.CheckpointModel.curVehicle.VehicleModel.isFull) {
  22. e.CheckpointModel.curVehicle.VehicleModel.useSit += 1
  23. val.StationModel.puppet.PuppetView.animator.onRunComplete = () => {
  24. e.CheckpointModel.curVehicle.VehicleView.createPuppet()
  25. e.removeChild(val.StationModel.puppet)
  26. val.StationModel.puppet.destroy()
  27. val.StationModel.puppet = null
  28. e.CheckpointModel.peopleCount-=1
  29. }
  30. val.StationModel.puppet.PuppetView.animator.moveToTarget()
  31. }
  32. }
  33. })
  34. e.remove(StationOperationComp)
  35. }
  36. }