SkillMgr.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. export class SkillMgr {
  9. public static useSkill(skill: SkillType): void {
  10. const skillId: number = this.getSkillId(skill)
  11. const cnt: number = ItemMgr.updateItem(skillId, -1)
  12. EventMgr.emit(EventType.UpdateSkillCnt, skill, cnt)
  13. switch (skill) {
  14. case SkillType.FreezeTime:
  15. EventMgr.emit(EventType.UseSkillFreezeTime)
  16. break
  17. case SkillType.EraseGroup:
  18. EventMgr.emit(EventType.UseSkillEraseGroup)
  19. break
  20. case SkillType.RefreshPosition:
  21. EventMgr.emit(EventType.UseSkillRefreshPosition)
  22. break
  23. case SkillType.DoubleCoin:
  24. EventMgr.emit(EventType.UseSkillDoubleCoin)
  25. break
  26. }
  27. }
  28. public static addSkill(skill: SkillType, cnt: number = 1): void {
  29. const skillId: number = this.getSkillId(skill)
  30. const curCnt: number = ItemMgr.updateItem(skillId, cnt)
  31. EventMgr.emit(EventType.UpdateSkillCnt, skill, curCnt)
  32. EventMgr.emit(EventType.AddSkill, skill)
  33. switch (skill) {
  34. case SkillType.FreezeTime:
  35. EventMgr.emit(EventType.AddSkillFreezeTime)
  36. break
  37. case SkillType.EraseGroup:
  38. EventMgr.emit(EventType.AddSkillEraseOneGroup)
  39. break
  40. case SkillType.RefreshPosition:
  41. EventMgr.emit(EventType.AddSkillRefreshPosition) //刷新元素
  42. break
  43. case SkillType.DoubleCoin:
  44. EventMgr.emit(EventType.AddSkillDoubleCoin)
  45. break
  46. }
  47. }
  48. public static hasSkill(skill: SkillType): boolean {
  49. const skillId: number = this.getSkillId(skill)
  50. const cnt: number = ItemMgr.getCnt(skillId)
  51. return cnt > 0
  52. }
  53. public static skillCnt(skill: SkillType): number {
  54. const skillId: number = this.getSkillId(skill)
  55. const cnt: number = ItemMgr.getCnt(skillId)
  56. return cnt
  57. }
  58. public static getSkillId(skill: SkillType): number {
  59. for (let i = 0; i < CfgItem.length; i++) {
  60. const itemData: DtoItem = CfgItem[i];
  61. if (itemData?.skillType === skill) return itemData.id
  62. }
  63. return -1
  64. }
  65. }
  66. if (PREVIEW) {
  67. globalThis.SkillMgr = SkillMgr
  68. }