ComboNode.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { _decorator, Component, Node, sp } from 'cc';
  2. import { DataSystem } from '../core/data/DataSystem';
  3. import { ResourceLoader } from '../core/resourceManager/ResourceLoader';
  4. import { ConfigData } from '../data/ConfigData';
  5. import { HitData } from './HitData';
  6. import { Monster } from './Monster';
  7. const { ccclass, property } = _decorator;
  8. @ccclass('ComboNode')
  9. export class ComboNode extends Component {
  10. @property({ type: sp.Skeleton, tooltip: "spine组件" }) effect: sp.Skeleton;
  11. @property({ type: ResourceLoader, tooltip: "资源加载组件" }) res: ResourceLoader;
  12. public async setData(monsters: Array<Monster>, time: number) {
  13. let skillID = DataSystem.getData(ConfigData)["fetter"]["5"]["specificSkill"];
  14. let value = DataSystem.getData(ConfigData)["skill"][skillID]["skillValue"].split(",");
  15. let spData = await this.res.load<sp.SkeletonData>("spine/effect/wanjianqifa", sp.SkeletonData);
  16. this.effect.skeletonData = spData;
  17. let track = this.effect.addAnimation(0, "animation", false);
  18. this.effect.setTrackEventListener(track, () => {
  19. for (let i = 0; i < monsters.length; i++) {
  20. let hit = new HitData();
  21. hit.from = "万箭齐发";
  22. hit.isSkill = true;
  23. hit.hit = DataSystem.getData(ConfigData)["monster"][monsters[i].data.id]["hp"] * (parseInt(value[time - 1]) / 10000);
  24. hit.hit = Math.floor(hit.hit);
  25. monsters[i].data._hit.push(hit);
  26. }
  27. });
  28. this.effect.setTrackCompleteListener(track, () => {
  29. this.node.destroy();
  30. });
  31. }
  32. }