Checkpoint.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { Vec3, Node } from "cc";
  2. import { ViewUtil } from "../../../../extensions/oops-plugin-framework/assets/core/utils/ViewUtil";
  3. import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
  4. import { CheckpointUpgradeComp, CheckpointUpgradeSystem } from "./bll/CheckpointUpgrade";
  5. import { InitCheckpointSystem } from "./bll/InitCheckpoint";
  6. import { CheckpointModelLevelComp } from "./model/CheckpointModelLevel";
  7. import { CheckpointViewComp } from "./view/CheckpointViewComp";
  8. import { CheckpointModelComp } from "./model/CheckpointModel";
  9. import { VehicleOperationSystem } from "./bll/VehicleOperation";
  10. import { StationOperationSystem } from "./bll/StationOperation";
  11. import { CheckpointCheckSystem } from "./bll/CheckpointCheck";
  12. import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
  13. import { UIID } from "../common/config/GameUIConfig";
  14. import { CheckpointModelBaseComp } from "./model/CheckpointModelBase";
  15. import { SkinChangeSystem } from "./bll/SkinChange";
  16. /**
  17. * 关卡实体
  18. * 1、生成关卡初始话数据
  19. */
  20. @ecs.register('Checkpoint')
  21. export class Checkpoint extends ecs.Entity {
  22. CheckpointModelLevel!: CheckpointModelLevelComp;
  23. CheckpointModel!: CheckpointModelComp;
  24. CheckpointModelBase!: CheckpointModelBaseComp;
  25. // 业务层
  26. CheckpointUpgrade!: CheckpointUpgradeComp;
  27. // 视图层
  28. CheckpointView!:CheckpointViewComp;
  29. protected init() {
  30. // 添加关卡数据组件
  31. this.addComponents<ecs.Comp>(CheckpointModelComp, CheckpointModelLevelComp,CheckpointModelBaseComp);
  32. }
  33. /** 关卡升级(升级只修改数据) */
  34. upgrade(lv: number = 0) {
  35. var ru = this.add(CheckpointUpgradeComp);
  36. ru.lv = lv;
  37. }
  38. destroy(): void {
  39. // 如果该组件对象是由ecs系统外部创建的,则不可回收,需要用户自己手动进行回收。
  40. this.remove(CheckpointViewComp);
  41. super.destroy();
  42. }
  43. /** 加载关卡显示对象(cc.Component在创建后,添加到ECS框架中,使实体上任何一个ECS组件都可以通过 ECS API 获取到视图层对象 */
  44. load(parent: Node, pos: Vec3 = Vec3.ZERO, cb: () => void = () => { }) {
  45. var node = ViewUtil.createPrefabNode("game/prefab/level");
  46. var mv = node.getComponent(CheckpointViewComp)!;
  47. this.add(mv);
  48. node.parent = parent;
  49. node.setPosition(pos);
  50. cb && cb()
  51. }
  52. }
  53. export class EcsCheckpointSystem extends ecs.System {
  54. constructor() {
  55. super();
  56. this.add(new InitCheckpointSystem());
  57. this.add(new CheckpointUpgradeSystem());
  58. this.add(new VehicleOperationSystem());
  59. this.add(new StationOperationSystem());
  60. this.add(new CheckpointCheckSystem());
  61. this.add(new SkinChangeSystem())
  62. }
  63. }