CheckpointUpgrade.ts 2.2 KB

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