123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- using Common.Utility.CombatEvent;
- 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;
- 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();
- }
- 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);
- }
- 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)
- {
- if (SkillBasic != null)
- {
- 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;
- }
- useTriggerType = triggerType;
- skillTurntable.TriggerSlots(this, triggerType);
- }
- public void Replace()
- {
- if (SkillBasic != null)
- {
- SkillBasic.Replace();
- }
- SkillBasic = null;
- }
- public void ActiveSkill()
- {
- if (SkillBasic != null)
- {
- SkillBasic.ActiveSkill();
- }
- }
- }
- }
|