VehicleOperation.ts 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops";
  2. import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
  3. import { ECSEntity } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECSEntity";
  4. import { smc } from "../../common/SingletonModuleComp";
  5. import { UIID } from "../../common/config/GameUIConfig";
  6. import { MoveToComp } from "../../common/ecs/position/MoveTo";
  7. import { VehicleState } from "../../vehicle/model/VehicleModelComp";
  8. import { Checkpoint } from "../Checkpoint";
  9. import { CheckpointModelComp } from "../model/CheckpointModel";
  10. import { CheckpointLevelPassViewComp } from "../view/CheckpointLevelPassViewComp";
  11. import { CheckpointCheckPassComp } from "./CheckpointCheck";
  12. import { StationOperationComp } from "./StationOperation";
  13. /**
  14. * 车辆调度
  15. */
  16. @ecs.register('VehicleOperation')
  17. export class VehicleOperationComp extends ecs.Comp {
  18. isRun: boolean = false
  19. reset() {
  20. this.isRun = false
  21. }
  22. }
  23. export class VehicleOperationSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem, ecs.ISystemUpdate {
  24. filter(): ecs.IMatcher {
  25. return ecs.allOf(CheckpointModelComp, VehicleOperationComp);
  26. }
  27. entityEnter(e: Checkpoint): void {
  28. e.CheckpointModel.curVehicle = null
  29. this.initCar(e)
  30. }
  31. initCar(e: Checkpoint) {
  32. const vehicles = e.CheckpointModel.vehicles
  33. for (let index = 0; index < vehicles.length; index++) {
  34. const vehicle = vehicles[index];
  35. if (index == 0) {
  36. e.CheckpointModel.curVehicle = vehicle
  37. vehicle.VehicleView.animator.onStationComplete = () => {
  38. // vehicle.remove(MoveToComp)
  39. oops.audio.playEffect("common/audio/bus_horn");
  40. e.add(StationOperationComp)
  41. // const checkpoint = smc.initialize.account.checkpoint
  42. // console.log('puppet', !checkpoint.CheckpointModel.puppets.some(val => val.PuppetModel?.color === vehicle.VehicleModel.color))
  43. // console.log('stations', !checkpoint.CheckpointModel.stations.some(val => val.StationModel.puppet && val.StationModel.puppet.PuppetModel?.color === vehicle.VehicleModel?.color))
  44. // if (!checkpoint.CheckpointModel.puppets.some(val => val.PuppetModel?.color === vehicle.VehicleModel.color)
  45. // && !checkpoint.CheckpointModel.stations.some(val => val.StationModel.puppet && val.StationModel.puppet.PuppetModel?.color === vehicle.VehicleModel?.color)) {
  46. // vehicle.VehicleModel.ready = true
  47. // }
  48. }
  49. vehicle.VehicleView?.animator.moveToStation()
  50. }
  51. if (index == 1) {
  52. vehicle.VehicleView?.animator.moveToWait()
  53. break
  54. }
  55. }
  56. }
  57. update(e: Checkpoint): void {
  58. const vehicles = e.CheckpointModel.vehicles
  59. const vehicle = e.CheckpointModel.curVehicle
  60. if (e.CheckpointModel.peopleCount <= 0) {
  61. // console.log('过关了')
  62. e.add(CheckpointCheckPassComp)
  63. return
  64. }
  65. if (vehicle && vehicle.VehicleModel?.ready) {
  66. vehicles.shift()
  67. vehicle.VehicleView.animator.onLeaveComplete = () => {
  68. vehicle.destroy()
  69. }
  70. vehicle.VehicleView.animator.moveToLeave()
  71. this.initCar(e)
  72. }
  73. }
  74. }