CheckpointUpgrade.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 { SingletonModuleComp } from "../../common/SingletonModuleComp";
  4. import { GameEvent } from "../../common/config/GameEvent";
  5. import { Checkpoint } from "../Checkpoint";
  6. import { CheckpointModelLevelComp } from "../model/CheckpointModelLevel";
  7. import { InitCheckpointComp } from "./InitCheckpoint";
  8. /**
  9. * 关卡升级
  10. */
  11. @ecs.register('CheckpointUpgrade')
  12. export class CheckpointUpgradeComp extends ecs.Comp {
  13. /** 当前等级 */
  14. lv: number = 0;
  15. reset() {
  16. this.lv = 0;
  17. }
  18. }
  19. export class CheckpointUpgradeSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
  20. filter(): ecs.IMatcher {
  21. return ecs.allOf(CheckpointUpgradeComp, CheckpointModelLevelComp);
  22. }
  23. entityEnter(e: Checkpoint): void {
  24. let rlm = e.CheckpointModelLevel;
  25. let ru = e.CheckpointUpgrade;
  26. if (ru.lv == 0)
  27. rlm.vm.lv++; // 提升一级
  28. else
  29. rlm.vm.lv = ru.lv; // 设置等级
  30. const rnd = Math.floor(Math.random() * 3)
  31. // 当前等级配置
  32. rlm.rtluCurrent.init(rlm.vm.lv);
  33. if (rlm.rtluCurrent.vehicleType == null) {
  34. if (rlm.vm.vehicleType == null) { // 没有下一关信息用随机
  35. rlm.rtluCurrent.vehicleType = rnd
  36. } else { // 用下一关信息
  37. rlm.rtluCurrent.vehicleType = rlm.vm.vehicleType
  38. }
  39. }
  40. ecs.getSingleton(SingletonModuleComp).account.AccountModel.lv = rlm.vm.lv
  41. // 下个关卡配置
  42. rlm.rtluNext.init(rlm.vm.lv + 1);
  43. rlm.vm.stationCount = rlm.rtluNext.stationCount;
  44. rlm.vm.gridRowCount = rlm.rtluNext.gridRowCount;
  45. rlm.vm.gridColCount = rlm.rtluNext.gridColCount;
  46. rlm.vm.peopleCount = rlm.rtluNext.peopleCount;
  47. if (rlm.rtluNext.vehicleType == null) {
  48. rlm.rtluNext.vehicleType = rnd
  49. rlm.vm.vehicleType = rnd
  50. } else {
  51. rlm.vm.vehicleType = rlm.rtluNext.vehicleType
  52. }
  53. oops.message.dispatchEvent(GameEvent.LevelPass)
  54. e.remove(CheckpointUpgradeComp);
  55. e.add(InitCheckpointComp)
  56. }
  57. }