zombieActionMgr.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import modelDtlManager from "../dataManager/modelDtlManager";
  2. import npcHelper from "../dataManager/npcHelper";
  3. import Utils from "../framework/utils/utils";
  4. import gameData from "../gameLogic/utrl/gameData";
  5. const { ccclass, property } = cc._decorator;
  6. @ccclass
  7. /**僵尸动作类 */
  8. class zombieActionMgr {
  9. /**
  10. *
  11. * @param spine 目标spine
  12. * @param modelID 模型ID
  13. * @param loop 是否循环
  14. * @param cb 播放完回调
  15. */
  16. public playAttackAnim(spine: sp.Skeleton, modelID: number, loop: boolean, cb?) {
  17. let modelDt = modelDtlManager.getDataByID(modelID);
  18. let animName = modelDt.attAct;
  19. let newAnimName = this.getAnimName(animName, modelID);
  20. let trackIndex = spine.setAnimation(0, newAnimName, loop);
  21. if (cb) {
  22. spine.setTrackCompleteListener(trackIndex, cb);
  23. }
  24. }
  25. // animComplete(track, loopCount) {
  26. // if (track.animation.name.indexOf('attack') >= 0) {
  27. // this.playGunAnim('stand', true, 1);
  28. // } else if (track.animation.name.indexOf('switch') >= 0) {
  29. // this.playGunAnim('stand', true, 1);
  30. // }
  31. // }
  32. /**
  33. *
  34. * @param spine 目标spine
  35. * @param modelID 模型ID
  36. * @param loop 是否循环
  37. */
  38. public playHitAnim(spine: sp.Skeleton, modelID: number, loop: boolean) {
  39. let modelDt = modelDtlManager.getDataByID(modelID);
  40. let animName = modelDt.hitAct;
  41. let newAnimName = this.getAnimName(animName, modelID);
  42. spine.setAnimation(0, newAnimName, loop);
  43. }
  44. /**
  45. *
  46. * @param spine 目标spine
  47. * @param modelID 模型ID
  48. * @param loop 是否循环
  49. */
  50. public playStandAnim(spine: sp.Skeleton, modelID: number, loop: boolean) {
  51. let modelDt = modelDtlManager.getDataByID(modelID);
  52. let animName = modelDt.idleAct;
  53. let newAnimName = this.getAnimName(animName, modelID);
  54. spine.setAnimation(0, newAnimName, loop);
  55. }
  56. /**
  57. *
  58. * @param spine 目标spine
  59. * @param modelID 模型ID
  60. * @param loop 是否循环
  61. */
  62. public playWallAnim(spine: sp.Skeleton, modelID: number, loop: boolean) {
  63. let modelDt = modelDtlManager.getDataByID(modelID);
  64. let animName = modelDt.moveAct;
  65. let newAnimName = this.getAnimName(animName, modelID);
  66. spine.setAnimation(0, newAnimName, loop);
  67. }
  68. public setSkin(spine, modelID: number) {
  69. let modelDt = modelDtlManager.getDataByID(modelID);
  70. let skinName = modelDt.modelname;
  71. spine.setSkin(skinName);
  72. }
  73. /**
  74. *
  75. * @param animName 动作名称
  76. * @returns
  77. */
  78. private getAnimName(animName: string, modelID?) {
  79. let nameArr = animName.split(","); //切割动作名称
  80. if (modelID) {
  81. if (npcHelper.isBoss(modelID)) { //boss
  82. return nameArr[0];
  83. }
  84. }
  85. let dayTimeName = ''
  86. let nightTimeName = '';
  87. nameArr.forEach((name) => {
  88. if (name.indexOf("1") >= 0) {
  89. dayTimeName = name;
  90. } else {
  91. nightTimeName = name;
  92. }
  93. })
  94. if (gameData.isDayTime) {
  95. return dayTimeName;
  96. } else {
  97. return nightTimeName;
  98. }
  99. }
  100. }
  101. export default new zombieActionMgr();