SubwayViewComp.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { Color, MeshRenderer, RenderableComponent, SkeletalAnimation, _decorator } from "cc";
  2. import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
  3. import { CCComp } from "../../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
  4. import { Subway } from "../Subway";
  5. import { SubwayViewAnimator } from "./SubwayViewAnimator";
  6. import { SubwayViewController } from "./SubwayViewController";
  7. import { smc } from "../../common/SingletonModuleComp";
  8. import { Puppet } from "../../puppet/puppet";
  9. import { PuppetModelComp } from "../../puppet/model/PuppetModelComp";
  10. import { PuppetAnimatorType } from "../../puppet/model/PuppetEnum";
  11. const { ccclass, property } = _decorator;
  12. /** 地铁显示组件 */
  13. @ccclass('SubwayViewComp') // 定义为 Cocos Creator 组件
  14. @ecs.register('SubwayView', false) // 定义为 ECS 组件
  15. export class SubwayViewComp extends CCComp {
  16. @property({ type: SkeletalAnimation, tooltip: '角色动画' })
  17. ske: SkeletalAnimation = null!;
  18. /** 地铁动画规则管理 */
  19. animator: SubwayViewAnimator = null!;
  20. /** 地铁控制器 */
  21. controller: SubwayViewController = null!;
  22. /** 视图层逻辑代码分离演示 */
  23. onLoad() {
  24. const subway = this.ent as Subway;
  25. this.animator = this.ske.getComponent(SubwayViewAnimator)!;
  26. this.animator.subway = subway;
  27. this.controller = this.node.addComponent(SubwayViewController);
  28. this.controller.subway = subway;
  29. }
  30. createPuppet() {
  31. const v = this.ent as Subway;
  32. const account = smc.initialize.account
  33. const puppet = ecs.getEntity<Puppet>(Puppet)
  34. const puppetModel = puppet.get(PuppetModelComp)
  35. puppetModel.color = v.SubwayModel.color
  36. puppetModel.withColider = true
  37. puppet.load(this.node, v.SubwayModel.color, this.node.position.clone(),account.AccountModel.skin);
  38. v.addChild(puppet)
  39. puppet.PuppetView.animator.toRight()
  40. puppet.PuppetView.animator.playAni(PuppetAnimatorType.Run)
  41. puppet.PuppetView.animator.scale()
  42. }
  43. reset() {
  44. this.node.destroy();
  45. }
  46. }