import modelDtlManager from "../dataManager/modelDtlManager"; import npcHelper from "../dataManager/npcHelper"; import Utils from "../framework/utils/utils"; import gameData from "../gameLogic/utrl/gameData"; const { ccclass, property } = cc._decorator; @ccclass /**僵尸动作类 */ class zombieActionMgr { /** * * @param spine 目标spine * @param modelID 模型ID * @param loop 是否循环 * @param cb 播放完回调 */ public playAttackAnim(spine: sp.Skeleton, modelID: number, loop: boolean, cb?) { let modelDt = modelDtlManager.getDataByID(modelID); let animName = modelDt.attAct; let newAnimName = this.getAnimName(animName, modelID); let trackIndex = spine.setAnimation(0, newAnimName, loop); if (cb) { spine.setTrackCompleteListener(trackIndex, cb); } } // animComplete(track, loopCount) { // if (track.animation.name.indexOf('attack') >= 0) { // this.playGunAnim('stand', true, 1); // } else if (track.animation.name.indexOf('switch') >= 0) { // this.playGunAnim('stand', true, 1); // } // } /** * * @param spine 目标spine * @param modelID 模型ID * @param loop 是否循环 */ public playHitAnim(spine: sp.Skeleton, modelID: number, loop: boolean) { let modelDt = modelDtlManager.getDataByID(modelID); let animName = modelDt.hitAct; let newAnimName = this.getAnimName(animName, modelID); spine.setAnimation(0, newAnimName, loop); } /** * * @param spine 目标spine * @param modelID 模型ID * @param loop 是否循环 */ public playStandAnim(spine: sp.Skeleton, modelID: number, loop: boolean) { let modelDt = modelDtlManager.getDataByID(modelID); let animName = modelDt.idleAct; let newAnimName = this.getAnimName(animName, modelID); spine.setAnimation(0, newAnimName, loop); } /** * * @param spine 目标spine * @param modelID 模型ID * @param loop 是否循环 */ public playWallAnim(spine: sp.Skeleton, modelID: number, loop: boolean) { let modelDt = modelDtlManager.getDataByID(modelID); let animName = modelDt.moveAct; let newAnimName = this.getAnimName(animName, modelID); spine.setAnimation(0, newAnimName, loop); } public setSkin(spine, modelID: number) { let modelDt = modelDtlManager.getDataByID(modelID); let skinName = modelDt.modelname; spine.setSkin(skinName); } /** * * @param animName 动作名称 * @returns */ private getAnimName(animName: string, modelID?) { let nameArr = animName.split(","); //切割动作名称 if (modelID) { if (npcHelper.isBoss(modelID)) { //boss return nameArr[0]; } } let dayTimeName = '' let nightTimeName = ''; nameArr.forEach((name) => { if (name.indexOf("1") >= 0) { dayTimeName = name; } else { nightTimeName = name; } }) if (gameData.isDayTime) { return dayTimeName; } else { return nightTimeName; } } } export default new zombieActionMgr();