Checkpoint.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. /**
  10. * 关卡实体
  11. * 1、生成关卡初始话数据
  12. */
  13. @ecs.register('Checkpoint')
  14. export class Checkpoint extends ecs.Entity {
  15. CheckpointModelLevel!: CheckpointModelLevelComp;
  16. CheckpointModel!: CheckpointModelComp;
  17. // 业务层
  18. CheckpointUpgrade!: CheckpointUpgradeComp;
  19. protected init() {
  20. // 添加关卡数据组件
  21. this.addComponents<ecs.Comp>(CheckpointModelComp,CheckpointModelLevelComp);
  22. }
  23. /** 关卡升级(升级只修改数据) */
  24. upgrade(lv: number = 0) {
  25. var ru = this.add(CheckpointUpgradeComp);
  26. ru.lv = lv;
  27. }
  28. destroy(): void {
  29. // 如果该组件对象是由ecs系统外部创建的,则不可回收,需要用户自己手动进行回收。
  30. this.remove(CheckpointViewComp);
  31. super.destroy();
  32. }
  33. /** 加载关卡显示对象(cc.Component在创建后,添加到ECS框架中,使实体上任何一个ECS组件都可以通过 ECS API 获取到视图层对象 */
  34. load(parent: Node, pos: Vec3 = Vec3.ZERO) {
  35. var node = ViewUtil.createPrefabNode("game/prefab/level");
  36. var mv = node.getComponent(CheckpointViewComp)!;
  37. this.add(mv);
  38. node.parent = parent;
  39. node.setPosition(pos);
  40. }
  41. }
  42. export class EcsCheckpointSystem extends ecs.System {
  43. constructor() {
  44. super();
  45. this.add(new InitCheckpointSystem());
  46. this.add(new CheckpointUpgradeSystem());
  47. }
  48. }