Checkpoint.ts 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. import { FullVehicleOperationSystem } from "./bll/FullVehicleOperation";
  17. import { AddCellOperationSystem } from "./bll/AddCellOperation";
  18. import { ClearCellOperationSystem } from "./bll/ClearCellOperation";
  19. import { CheckpointPathTriggerSystem } from "./bll/CheckpointPathTrigger";
  20. /**
  21. * 关卡实体
  22. * 1、生成关卡初始话数据
  23. */
  24. @ecs.register('Checkpoint')
  25. export class Checkpoint extends ecs.Entity {
  26. CheckpointModelLevel!: CheckpointModelLevelComp;
  27. CheckpointModel!: CheckpointModelComp;
  28. CheckpointModelBase!: CheckpointModelBaseComp;
  29. // 业务层
  30. CheckpointUpgrade!: CheckpointUpgradeComp;
  31. // 视图层
  32. CheckpointView!:CheckpointViewComp;
  33. protected init() {
  34. // 添加关卡数据组件
  35. this.addComponents<ecs.Comp>(CheckpointModelComp, CheckpointModelLevelComp,CheckpointModelBaseComp);
  36. oops.audio.volumeMusic = 0
  37. oops.audio.playerMusicLoop("common/audio/bgm");
  38. }
  39. /** 关卡升级(升级只修改数据) */
  40. upgrade(lv: number = 0) {
  41. var ru = this.add(CheckpointUpgradeComp);
  42. ru.lv = lv;
  43. }
  44. destroy(): void {
  45. // 如果该组件对象是由ecs系统外部创建的,则不可回收,需要用户自己手动进行回收。
  46. this.remove(CheckpointViewComp);
  47. super.destroy();
  48. }
  49. /** 加载关卡显示对象(cc.Component在创建后,添加到ECS框架中,使实体上任何一个ECS组件都可以通过 ECS API 获取到视图层对象 */
  50. load(parent: Node, pos: Vec3 = Vec3.ZERO, cb: () => void = () => { }) {
  51. var node = ViewUtil.createPrefabNode("game/prefab/level");
  52. var mv = node.getComponent(CheckpointViewComp)!;
  53. this.add(mv);
  54. node.parent = parent;
  55. node.setPosition(pos);
  56. cb && cb()
  57. }
  58. }
  59. export class EcsCheckpointSystem extends ecs.System {
  60. constructor() {
  61. super();
  62. this.add(new InitCheckpointSystem());
  63. this.add(new CheckpointUpgradeSystem());
  64. this.add(new CheckpointPathTriggerSystem())
  65. this.add(new VehicleOperationSystem());
  66. this.add(new StationOperationSystem());
  67. this.add(new CheckpointCheckSystem());
  68. this.add(new SkinChangeSystem())
  69. this.add(new FullVehicleOperationSystem())
  70. this.add(new AddCellOperationSystem())
  71. this.add(new ClearCellOperationSystem())
  72. }
  73. }