Vehicle.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { Vec3, Node, MeshRenderer, RenderableComponent, Color } 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 { VehicleModelComp } from "./model/VehicleModelComp";
  5. import { VehicleViewComp } from "./view/VehicleViewComp";
  6. import { VehicleSitSystem } from "./bll/VehicleCheck";
  7. import { VehicleType } from "./model/VehicleEnum";
  8. /**
  9. * 车辆实体
  10. * 1、生成车辆关卡初始数据
  11. */
  12. @ecs.register('Vehicle')
  13. export class Vehicle extends ecs.Entity {
  14. VehicleModel!: VehicleModelComp;
  15. VehicleView!: VehicleViewComp;
  16. protected init() {
  17. // 添加关卡数据组件
  18. this.addComponents<ecs.Comp>(VehicleModelComp);
  19. }
  20. destroy(): void {
  21. // 如果该组件对象是由ecs系统外部创建的,则不可回收,需要用户自己手动进行回收。
  22. this.remove(VehicleViewComp);
  23. super.destroy();
  24. }
  25. /** 加载车辆显示对象(cc.Component在创建后,添加到ECS框架中,使实体上任何一个ECS组件都可以通过 ECS API 获取到视图层对象 */
  26. load(parent: Node, color: string, pos: Vec3 = Vec3.ZERO,type=VehicleType.BUS) {
  27. const node = ViewUtil.createPrefabNode(this.getVehicleModelPath(type));
  28. var mv = node.getComponent(VehicleViewComp)!;
  29. this.add(mv);
  30. this.VehicleView.changeColor(color)
  31. node.parent = parent;
  32. node.setPosition(pos);
  33. }
  34. getVehicleModelPath(type:VehicleType){
  35. switch (type) {
  36. case VehicleType.CAR:
  37. return 'game/prefab/car2'
  38. case VehicleType.BUS:
  39. return 'game/prefab/car1'
  40. case VehicleType.AIRPLANT:
  41. return 'game/prefab/airplane'
  42. default:
  43. return 'game/prefab/car1'
  44. }
  45. }
  46. }
  47. export class EcsVehicleSystem extends ecs.System {
  48. constructor() {
  49. super();
  50. // this.add(new VehicleSitSystem());
  51. }
  52. }