SkillMgr.ts 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { PREVIEW } from "cc/env";
  2. import { CfgItem } from "../config/CfgItem";
  3. import { DtoItem } from "../dto/DtoItem";
  4. import { EventType } from "../enum/EventType";
  5. import { SkillName, SkillType } from "../enum/SkillType";
  6. import { EventMgr } from "./EventMgr";
  7. import { ItemMgr } from "./ItemMgr";
  8. /**
  9. * 道具管理
  10. */
  11. export class SkillMgr {
  12. /**
  13. * 使用道具
  14. * @param skill
  15. */
  16. public static useSkill(skill: SkillType): void {
  17. console.log(`zh:使用道具 ${SkillName[skill]}`)
  18. const skillId: number = this.getSkillId(skill)
  19. const cnt: number = ItemMgr.updateItem(skillId, -1)
  20. EventMgr.emit(EventType.UpdateSkillCnt, skill, cnt)
  21. switch (skill) {
  22. case SkillType.FreezeTime:
  23. EventMgr.emit(EventType.UseSkillFreezeTime)
  24. break
  25. case SkillType.EraseGroup:
  26. EventMgr.emit(EventType.UseSkillEraseGroup)
  27. break
  28. case SkillType.RefreshPosition:
  29. EventMgr.emit(EventType.UseSkillRefreshPosition)
  30. break
  31. case SkillType.DoubleCoin:
  32. EventMgr.emit(EventType.UseSkillDoubleCoin)
  33. break
  34. }
  35. console.log('zh:使用技能', skill)
  36. }
  37. /**
  38. * 发放道具
  39. * @param skill
  40. * @param cnt
  41. */
  42. public static addSkill(skill: SkillType, cnt: number = 1): void {
  43. console.log(`zh:add skill ${SkillName[skill]} x${cnt}`)
  44. const skillId: number = this.getSkillId(skill)
  45. const curCnt: number = ItemMgr.updateItem(skillId, cnt)
  46. EventMgr.emit(EventType.UpdateSkillCnt, skill, curCnt)
  47. EventMgr.emit(EventType.AddSkill, skill)
  48. switch (skill) {
  49. case SkillType.FreezeTime:
  50. EventMgr.emit(EventType.AddSkillFreezeTime)
  51. break
  52. case SkillType.EraseGroup:
  53. EventMgr.emit(EventType.AddSkillEraseOneGroup)
  54. break
  55. case SkillType.RefreshPosition:
  56. EventMgr.emit(EventType.AddSkillRefreshPosition)
  57. break
  58. case SkillType.DoubleCoin:
  59. EventMgr.emit(EventType.AddSkillDoubleCoin)
  60. break
  61. }
  62. console.log('zh:发放技能end ', skill)
  63. }
  64. public static hasSkill(skill: SkillType): boolean {
  65. const skillId: number = this.getSkillId(skill)
  66. const cnt: number = ItemMgr.getCnt(skillId)
  67. return cnt > 0
  68. }
  69. public static skillCnt(skill: SkillType): number {
  70. const skillId: number = this.getSkillId(skill)
  71. const cnt: number = ItemMgr.getCnt(skillId)
  72. return cnt
  73. }
  74. public static getSkillId(skill: SkillType): number {
  75. for (let i = 0; i < CfgItem.length; i++) {
  76. const itemData: DtoItem = CfgItem[i];
  77. if (itemData?.skillType === skill) return itemData.id
  78. }
  79. return -1
  80. }
  81. }
  82. if (PREVIEW) {
  83. globalThis.SkillMgr = SkillMgr
  84. }