SkillControl.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { BattleBase } from "../base/BattleBase";
  2. import { SkillConf } from "../conf/SkillConf";
  3. import { BattleUtil } from "../data/BattleUtil";
  4. import { BuffData } from "../data/BuffData";
  5. import { BulletData } from "../data/BulletData";
  6. import { EnemyData } from "../data/EnemyData";
  7. import { HeroData } from "../data/HeroData";
  8. import { MapData } from "../data/MapData";
  9. import { BuffControl } from "./BuffControl";
  10. //子弹控制类
  11. export class SkillControl extends BattleBase{
  12. protected static instance:SkillControl;
  13. map:MapData = null
  14. static GetInstance():SkillControl{
  15. if(!SkillControl.instance){
  16. SkillControl.instance = new SkillControl();
  17. }
  18. return SkillControl.instance;
  19. }
  20. init(){
  21. this.map = MapData.GetInstance()
  22. }
  23. //技能释放
  24. useSkill(hero: HeroData, enemy: EnemyData, skillID: number) :Array<BuffData>{
  25. let skillData = SkillConf.data[skillID]
  26. let addBuffData:BuffData[] = []
  27. if(skillData == null) return [];
  28. //效果计算
  29. let effectList = skillData.EffectObjArr
  30. effectList.forEach((effectObj)=>{
  31. switch(effectObj.effectType){
  32. case "add_buff":{
  33. let valueList:Array<number> = []
  34. if(effectObj.eParam2){
  35. valueList.push(effectObj.eParam2)
  36. } else if(effectObj.eParam3){
  37. valueList.push(effectObj.eParam3)
  38. } else if(effectObj.eParam4){
  39. valueList.push(effectObj.eParam4)
  40. } else if(effectObj.eParam5){
  41. valueList.push(effectObj.eParam5)
  42. }
  43. let buffData = this.map.addBuff(effectObj.buffID, effectObj.eParam, valueList, hero, enemy)
  44. if(buffData){
  45. addBuffData.push(buffData)
  46. }
  47. }
  48. break;
  49. }
  50. })
  51. return addBuffData
  52. }
  53. }