123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import { Node, NodePool, sp, Vec3 } from "cc";
- import { cocosUtil } from "../../utils/cocosUtil";
- import { constants } from "../data/constants";
- import { designManager } from "./designManager";
- import { resManager } from "./resManager";
- export class skillManager {
- private static _instance: skillManager;
- private constructor() { }
- public static get instance(): skillManager {
- if (!this._instance) {
- this._instance = new skillManager();
- }
- return this._instance;
- }
- skeletonDatasObj: any = {};
- namePoolObj: any = {};
- loadAllSkillEffect(onProgress?: Function, onComplete?: Function) {
- resManager.instance.loadAssetByBundleDir(constants.bundles.common.name,
- constants.bundles.common.spine.skillDir, sp.SkeletonData, onProgress, (skeletonDataArr) => {
- for (let i in skeletonDataArr) {
- let skeletonData = skeletonDataArr[i];
- this.skeletonDatasObj[skeletonData.name] = skeletonData;
- }
- });
- }
- showSkillEffect(id: number, worldPos: Vec3, parent: Node, cb?: Function) {
- let row = designManager.instance.getRowById(constants.tableName.skill, id);
- if (!row || !row.name) {
- if (cb) {
- cb();
- }
- return;
- }
- let name = row.body;
- let skeletonData = this.skeletonDatasObj[name];
- let tmpFunc = () => {
- let node = this.getPoolByName(name).get();
- let skeleton = null;
- if (!node) {
- node = new Node();
- skeleton = node.addComponent(sp.Skeleton);
- skeleton.premultipliedAlpha = false;
- skeleton.skeletonData = skeletonData;
- } else {
- skeleton = node.getComponent(sp.Skeleton);
- }
- if (name == "ljf") {
- node.setScale(1.3, 1.3);
- }
- skeleton.setAnimation(0, "animation", false);
- node.parent = parent;
- let pos = cocosUtil.convertToNodeSpace(node, worldPos);
- node.position = pos;
- skeleton.setCompleteListener(() => {
- this.getPoolByName(name).put(node);
- if (cb) {
- cb();
- }
- });
- };
- if (!skeletonData) {
- let path = constants.bundles.common.spine.skillDir + "/" + name + "/" + name;
- resManager.instance.loadAsset(constants.bundles.common.name, path, sp.SkeletonData, () => { }, (err, sd) => {
- if (err) {
- return;
- }
- skeletonData = sd;
- this.skeletonDatasObj[name] = skeletonData;
- tmpFunc();
- });
- return;
- }
- tmpFunc();
- }
- getPoolByName(name: string): NodePool {
- let pool = this.namePoolObj[name];
- if (!pool) {
- pool = new NodePool();
- this.namePoolObj[name] = pool;
- }
- return pool;
- }
- }
|