| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 | 
							- using Common.Utility.CombatEvent;
 
- using GameLogic.Combat.Buff;
 
- using GameLogic.Combat.Skill;
 
- using GameLogic.Player;
 
- namespace GameLogic.Combat.Hero.Turntable
 
- {
 
-     public class SkillSlots
 
-     {
 
-         public SkillBasic SkillBasic;
 
-         public int index;
 
-         public float angle;
 
-         public int useCount;
 
-         public int useTriggerType;
 
-         private int triggerType = -1;
 
-         /// <summary>
 
-         /// 触发的次数
 
-         /// </summary>
 
-         public int triggerCount;
 
-         // public int useCount;
 
-         /// <summary>
 
-         /// 金、水、木、火、土
 
-         /// </summary>
 
-         private int[] triggerAngle = new[] { 0, 72, 144, 216, 288 };
 
-         private SkillTurntable skillTurntable;
 
-         private int currTriggerTypeIndex;
 
-         public void Init(int index, SkillTurntable skillTurntable)
 
-         {
 
-             this.index = index;
 
-             angle = index * 36;
 
-             this.skillTurntable = skillTurntable;
 
-         }
 
-         public void SetSkill(SkillBasic SkillBasic)
 
-         {
 
-             triggerCount = 0;
 
-             this.SkillBasic = SkillBasic;
 
-             if (SkillBasic != null)
 
-             {
 
-                 SkillBasic.index = index;
 
-                 SkillBasic.AddToSkillSlots();
 
-             }
 
-             if (SkillBasic != null)
 
-             {
 
-                 switch (SkillBasic.wuXingType)
 
-                 {
 
-                     case WuXingType.Gold:
 
-                         currTriggerTypeIndex = 0;
 
-                         break;
 
-                     case WuXingType.Water:
 
-                         currTriggerTypeIndex = 1;
 
-                         break;
 
-                     case WuXingType.Wood:
 
-                         currTriggerTypeIndex = 2;
 
-                         break;
 
-                     case WuXingType.Fire:
 
-                         currTriggerTypeIndex = 3;
 
-                         break;
 
-                     case WuXingType.Earth:
 
-                         currTriggerTypeIndex = 4;
 
-                         break;
 
-                 }
 
-             }
 
-             SkillSlotsAlterEventData skillSlotsAlterEventData = SkillSlotsAlterEventData.Create();
 
-             skillSlotsAlterEventData.SkillSlots = this;
 
-             skillSlotsAlterEventData.SkillBasic = SkillBasic;
 
-             CombatEventManager.Instance.Dispatch(CombatEventType.SkillSlotsAlter, skillSlotsAlterEventData);
 
-         }
 
-         public void AddAngle(float addAngle)
 
-         {
 
-             int c = (int)(addAngle / 2);
 
-             float d = addAngle % 2;
 
-             for (int i = 0; i < c; i++)
 
-             {
 
-                 Angle(2);
 
-             }
 
-             Angle(d);
 
-         }
 
-         public float GetFinishBl()
 
-         {
 
-             if (!SkillBasic.isActive)
 
-             {
 
-                 return 0;
 
-             }
 
-             float v = angle % 360;
 
-             int targetAngle = triggerAngle[currTriggerTypeIndex];
 
-             float jd = v;
 
-             if (targetAngle == 0)
 
-             {
 
-                 targetAngle = 360;
 
-             }
 
-             float finishAngle = 0;
 
-             if (jd < targetAngle)
 
-             {
 
-                 finishAngle = 360 - (targetAngle - jd);
 
-             }
 
-             else
 
-             {
 
-                 finishAngle = (jd - targetAngle);
 
-             }
 
-             float allT = SkillBasic.SelfSkillConfig.cd * 360;
 
-             return (finishAngle + triggerCount * 360) / allT;
 
-         }
 
-         public float GetFinishAngle()
 
-         {
 
-             if (SkillBasic == null || !SkillBasic.isActive)
 
-             {
 
-                 return int.MaxValue;
 
-             }
 
-             float v = angle % 360;
 
-             int targetAngle = triggerAngle[currTriggerTypeIndex];
 
-             float jd = v;
 
-             if (targetAngle == 0)
 
-             {
 
-                 targetAngle = 360;
 
-             }
 
-             float finishAngle = 0;
 
-             if (jd < targetAngle)
 
-             {
 
-                 finishAngle = 360 - (targetAngle - jd);
 
-             }
 
-             else
 
-             {
 
-                 finishAngle = (jd - targetAngle);
 
-             }
 
-             float allT = SkillBasic.SelfSkillConfig.cd * 360;
 
-             return allT - (finishAngle + triggerCount * 360);
 
-         }
 
-         private void Angle(float addAngle)
 
-         {
 
-             angle += addAngle;
 
-             float v = angle % 360;
 
-             for (int i = 0; i < triggerAngle.Length; i++)
 
-             {
 
-                 if (triggerType == i)
 
-                 {
 
-                     continue;
 
-                 }
 
-                 float jd = v;
 
-                 int a = triggerAngle[i];
 
-                 int max = a + 2;
 
-                 int min = a - 2;
 
-                 if (min < 0)
 
-                 {
 
-                     jd -= 360;
 
-                 }
 
-                 if (jd <= max && jd >= min)
 
-                 {
 
-                     triggerType = i;
 
-                     Trigger(triggerType);
 
-                     break;
 
-                 }
 
-             }
 
-         }
 
-         private void Trigger(int triggerType)
 
-         {
 
-             switch (triggerType)
 
-             {
 
-                 case 0:
 
-                     b_1019 b1019 = skillTurntable.CombatHeroEntity.BuffControl.GetBuffBasicForType<b_1019>();
 
-                     if (b1019 != null)
 
-                     {
 
-                         return;
 
-                     }
 
-                     break;
 
-                 case 1:
 
-                     b_1021 b_1021 = skillTurntable.CombatHeroEntity.BuffControl.GetBuffBasicForType<b_1021>();
 
-                     if (b_1021 != null)
 
-                     {
 
-                         return;
 
-                     }
 
-                     break;
 
-                 case 2:
 
-                     b_1020 b1020 = skillTurntable.CombatHeroEntity.BuffControl.GetBuffBasicForType<b_1020>();
 
-                     if (b1020 != null)
 
-                     {
 
-                         return;
 
-                     }
 
-                     break;
 
-                 case 3:
 
-                     b_1022 b_1022 = skillTurntable.CombatHeroEntity.BuffControl.GetBuffBasicForType<b_1022>();
 
-                     if (b_1022 != null)
 
-                     {
 
-                         return;
 
-                     }
 
-                     break;
 
-                 case 4:
 
-                     b_1023 b_1023 = skillTurntable.CombatHeroEntity.BuffControl.GetBuffBasicForType<b_1023>();
 
-                     if (b_1023 != null)
 
-                     {
 
-                         return;
 
-                     }
 
-                     break;
 
-             }
 
-             if (SkillBasic != null)
 
-             {
 
-                 if (!SkillBasic.IsCanTriggerSkillSlots())
 
-                 {
 
-                     return;
 
-                 }
 
-                 switch (SkillBasic.wuXingType)
 
-                 {
 
-                     case WuXingType.Gold:
 
-                         if (triggerType != 0)
 
-                         {
 
-                             return;
 
-                         }
 
-                         break;
 
-                     case WuXingType.Water:
 
-                         if (triggerType != 1)
 
-                         {
 
-                             return;
 
-                         }
 
-                         break;
 
-                     case WuXingType.Wood:
 
-                         if (triggerType != 2)
 
-                         {
 
-                             return;
 
-                         }
 
-                         break;
 
-                     case WuXingType.Fire:
 
-                         if (triggerType != 3)
 
-                         {
 
-                             return;
 
-                         }
 
-                         break;
 
-                     case WuXingType.Earth:
 
-                         if (triggerType != 4)
 
-                         {
 
-                             return;
 
-                         }
 
-                         break;
 
-                 }
 
-                 triggerCount++;
 
-                 if (triggerCount < SkillBasic.SelfSkillConfig.cd)
 
-                 {
 
-                     return;
 
-                 }
 
-                 triggerCount = 0;
 
-                 TriggerSkillSlotsEventData triggerSkillSlotsEventData = TriggerSkillSlotsEventData.Create();
 
-                 triggerSkillSlotsEventData.SkillBasic = SkillBasic;
 
-                 triggerSkillSlotsEventData.SkillSlots = this;
 
-                 triggerSkillSlotsEventData.triggerType = triggerType;
 
-                 CombatEventManager.Instance.Dispatch(CombatEventType.TriggerSkillSlots, triggerSkillSlotsEventData,
 
-                     false);
 
-                 if (triggerSkillSlotsEventData.isNotUseSkill)
 
-                 {
 
-                     triggerSkillSlotsEventData.Recycle();
 
-                     return;
 
-                 }
 
-                 triggerSkillSlotsEventData.Recycle();
 
-             }
 
-             useTriggerType = triggerType;
 
-             skillTurntable.TriggerSlots(this, triggerType);
 
-         }
 
-         public void Replace()
 
-         {
 
-             if (SkillBasic != null)
 
-             {
 
-                 SkillBasic.Replace();
 
-             }
 
-             SkillBasic = null;
 
-         }
 
-         public void ActiveSkill()
 
-         {
 
-             if (SkillBasic != null)
 
-             {
 
-                 SkillBasic.ActiveSkill();
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |