|
@@ -5,6 +5,7 @@ using Fort23.Core;
|
|
|
using Fort23.Mono;
|
|
|
using Fort23.UTool;
|
|
|
using GameLogic.Combat.CombatTool;
|
|
|
+using GameLogic.Combat.Hero.Turntable;
|
|
|
using GameLogic.Combat.Skill;
|
|
|
using GameLogic.Hero;
|
|
|
using GameLogic.Player;
|
|
@@ -34,11 +35,18 @@ namespace GameLogic.Combat.Hero
|
|
|
// public float NormalAttSpeedScale;
|
|
|
|
|
|
|
|
|
- public BetterList<SkillBasic> _skillQueue = new BetterList<SkillBasic>();
|
|
|
+ // public BetterList<SkillSlots>
|
|
|
+ // public BetterList<SkillBasic> _skillQueue = new BetterList<SkillBasic>();
|
|
|
+ // public BetterList<SkillBasic> _removeSkillBasic = new BetterList<SkillBasic>();
|
|
|
|
|
|
+ // private float _removeTime;
|
|
|
+
|
|
|
+ public SkillTurntable SkillTurntable;
|
|
|
|
|
|
protected override async CTask ProInit()
|
|
|
{
|
|
|
+ SkillTurntable = new SkillTurntable();
|
|
|
+ SkillTurntable.Init(10, this, _combatHeroEntity);
|
|
|
if (_combatHeroEntity.IsEnemy)
|
|
|
{
|
|
|
await SetNewSkill(_combatHeroEntity.CurrCombatHeroInfo.unLockSkills.ToArray());
|
|
@@ -47,121 +55,18 @@ namespace GameLogic.Combat.Hero
|
|
|
{
|
|
|
await SetNewSkill(PlayerManager.Instance.GongFaControl.allUseSkill);
|
|
|
}
|
|
|
- // NormalAttSpeedScale = 2;
|
|
|
- // CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
|
|
|
- //
|
|
|
- // List<int> skillId = _combatHeroEntity.CurrCombatHeroInfo.unLockSkills;
|
|
|
- // if (skillId != null)
|
|
|
- // {
|
|
|
- // for (int i = 0; i < skillId.Count; i++)
|
|
|
- // {
|
|
|
- // SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(skillId[i]);
|
|
|
- // SkillBasic skillBasic = AddSkill(skillConfig);
|
|
|
- // if (skillBasic == null)
|
|
|
- // {
|
|
|
- // continue;
|
|
|
- // }
|
|
|
- //
|
|
|
- // skillBasic.index = i;
|
|
|
- // _skillQueue.Add(skillBasic);
|
|
|
- // if (!string.IsNullOrEmpty(skillConfig.scriptName))
|
|
|
- // {
|
|
|
- // cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<TextAsset>(
|
|
|
- // skillConfig.timelineName + ".txt",
|
|
|
- // delegate(AssetHandle handle)
|
|
|
- // {
|
|
|
- // if (handle != null)
|
|
|
- // {
|
|
|
- // TextAsset textAsset = handle.AssetObject<TextAsset>();
|
|
|
- // TimeLienData timeLienData = JsonManager.FromJson<TimeLienData>(textAsset.text);
|
|
|
- // timeLienData.DeserializeData();
|
|
|
- // handle.Release();
|
|
|
- // _combatHeroEntity.combatHeroTimeLineControl.AddTimeLienData(timeLienData);
|
|
|
- // }
|
|
|
- // }));
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // await cTaskAwaitBuffer.WaitAll();
|
|
|
- // for (int i = 0; i < _skillQueue.Count; i++)
|
|
|
- // {
|
|
|
- // SkillBasic skillBasic = _skillQueue[i];
|
|
|
- // skillBasic.ActiveSkill();
|
|
|
- // skillBasic.angle -= i * 36;
|
|
|
- // }
|
|
|
- //
|
|
|
- // CombatEventManager.Instance.Dispatch(CombatEventType.ExercisesAlter, null);
|
|
|
}
|
|
|
|
|
|
- public override async CTask SetNewSkill(SkillInfo[] allSkill)
|
|
|
+ public override async CTask SetNewSkill(SkillInfo[] allSkill)
|
|
|
{
|
|
|
- CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
|
|
|
- _skillQueue.Clear();
|
|
|
- // SkillInfo[] skillId = allSkill;
|
|
|
- int indexCount = 0;
|
|
|
- if (allSkill != null)
|
|
|
- {
|
|
|
- for (int i = 0; i < allSkill.Length; i++)
|
|
|
- {
|
|
|
- SkillInfo skillInfo = allSkill[i];
|
|
|
- if (skillInfo == null)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- SkillConfig skillConfig = skillInfo.skillConfig;
|
|
|
- SkillBasic skillBasic = AddSkill(skillInfo);
|
|
|
- if (skillBasic == null)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- skillBasic.index = indexCount;
|
|
|
- indexCount++;
|
|
|
- skillBasic.angle = i * 36;
|
|
|
- _skillQueue.Add(skillBasic);
|
|
|
- if (!string.IsNullOrEmpty(skillConfig.scriptName))
|
|
|
- {
|
|
|
- cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<TextAsset>(
|
|
|
- skillConfig.timelineName + ".txt",
|
|
|
- delegate(AssetHandle handle)
|
|
|
- {
|
|
|
- if (handle != null)
|
|
|
- {
|
|
|
- TextAsset textAsset = handle.AssetObject<TextAsset>();
|
|
|
- TimeLienData timeLienData = JsonManager.FromJson<TimeLienData>(textAsset.text);
|
|
|
- timeLienData.DeserializeData();
|
|
|
- handle.Release();
|
|
|
- _combatHeroEntity.combatHeroTimeLineControl.AddTimeLienData(timeLienData);
|
|
|
- }
|
|
|
- }));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- await cTaskAwaitBuffer.WaitAll();
|
|
|
- for (int i = 0; i < _skillQueue.Count; i++)
|
|
|
- {
|
|
|
- SkillBasic skillBasic = _skillQueue[i];
|
|
|
- skillBasic.ActiveSkill();
|
|
|
- }
|
|
|
-
|
|
|
- CombatEventManager.Instance.Dispatch(CombatEventType.ExercisesAlter, null);
|
|
|
+ await SkillTurntable.SetNewSkill(allSkill);
|
|
|
}
|
|
|
|
|
|
public SkillBasic GetSkillQueueForIndex(int index)
|
|
|
{
|
|
|
- if (index < 0 || index >= _skillQueue.Count)
|
|
|
- {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- return _skillQueue[index];
|
|
|
+ return SkillTurntable.GetSkillQueueForIndex(index);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
|
|
|
public void AddCommandSkill(SkillBasic skill)
|
|
|
{
|
|
@@ -178,6 +83,16 @@ namespace GameLogic.Combat.Hero
|
|
|
SkillCommands.Clear();
|
|
|
}
|
|
|
|
|
|
+ public void UseSkillFinish(SkillBasic skill)
|
|
|
+ {
|
|
|
+ if (skill == null)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SkillTurntable.UseSkillFinish(skill);
|
|
|
+ }
|
|
|
+
|
|
|
public void UseSkill(SkillBasic skill)
|
|
|
{
|
|
|
CombatUseSkillEventData combatUseSkillEventData = CombatUseSkillEventData.Create();
|
|
@@ -185,11 +100,6 @@ namespace GameLogic.Combat.Hero
|
|
|
CombatEventManager.Instance.Dispatch(CombatEventType.UseSkill, combatUseSkillEventData);
|
|
|
currUseSkill = skill;
|
|
|
skill.UseSkill();
|
|
|
-
|
|
|
- if (skill.SelfSkillConfig.SkillType == 1)
|
|
|
- {
|
|
|
- SetNormalAttCd();
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -223,172 +133,11 @@ namespace GameLogic.Combat.Hero
|
|
|
if (CombatController.currActiveCombat.IsFightState)
|
|
|
{
|
|
|
float speed = _combatHeroEntity.CurrCombatHeroInfo.GetAttSpeed;
|
|
|
- for (int i = 0; i < _skillQueue.Count; i++)
|
|
|
- {
|
|
|
- SkillBasic skillBasic = _skillQueue[i];
|
|
|
- skillBasic.angle += 1 * speed;
|
|
|
- if (skillBasic.SelfSkillConfig.SkillType == 2)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- float jd = skillBasic.angle % 360;
|
|
|
- if (jd > skillBasic.useAngle && skillBasic.angle > skillBasic.lasetAngle)
|
|
|
- {
|
|
|
- skillBasic.lasetAngle += 360;
|
|
|
- // if (allMagic > 30)
|
|
|
- // {
|
|
|
- // allMagic -= 30;
|
|
|
- // skillBasic.useCount++;
|
|
|
- // if (!isKuoLiQuanKai)
|
|
|
- // {
|
|
|
- // addChongNeng += 10;
|
|
|
- // if (addChongNeng >= 150)
|
|
|
- // {
|
|
|
- // isKuoLiQuanKai = true;
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
-
|
|
|
- if (skillBasic.wuXingType.HasFlag(WuXingType.Gold))
|
|
|
- {
|
|
|
- int odds = Random.Range(0, 100);
|
|
|
- if (odds < 50)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Water_Injury -= Random.Range(2, 5);
|
|
|
- if (_combatHeroEntity.CurrCombatHeroInfo.Water_Injury < 0)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Water_Injury = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (skillBasic.wuXingType.HasFlag(WuXingType.Wood))
|
|
|
- {
|
|
|
- int odds = Random.Range(0, 100);
|
|
|
- if (odds < 50)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Fire_Injury -= Random.Range(2, 5);
|
|
|
- if (_combatHeroEntity.CurrCombatHeroInfo.Fire_Injury < 0)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Fire_Injury = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (skillBasic.wuXingType.HasFlag(WuXingType.Water))
|
|
|
- {
|
|
|
- int odds = Random.Range(0, 100);
|
|
|
- if (odds < 50)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Wood_Injury -= Random.Range(2, 5);
|
|
|
- if (_combatHeroEntity.CurrCombatHeroInfo.Wood_Injury < 0)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Wood_Injury = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (skillBasic.wuXingType.HasFlag(WuXingType.Fire))
|
|
|
- {
|
|
|
- int odds = Random.Range(0, 100);
|
|
|
- if (odds < 50)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Earth_Injury -= Random.Range(2, 5);
|
|
|
- if (_combatHeroEntity.CurrCombatHeroInfo.Earth_Injury < 0)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Earth_Injury = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (skillBasic.wuXingType.HasFlag(WuXingType.Earth))
|
|
|
- {
|
|
|
- int odds = Random.Range(0, 100);
|
|
|
- if (odds < 50)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Metal_Injury -= Random.Range(2, 5);
|
|
|
- if (_combatHeroEntity.CurrCombatHeroInfo.Metal_Injury < 0)
|
|
|
- {
|
|
|
- _combatHeroEntity.CurrCombatHeroInfo.Metal_Injury = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- AddCommandSkill(skillBasic);
|
|
|
- AddUseGongFaEventData addUseGongFaEventData = AddUseGongFaEventData.Create();
|
|
|
- addUseGongFaEventData.SkillBasic = skillBasic;
|
|
|
- CombatEventManager.Instance.Dispatch(CombatEventType.AddUseGongFa, addUseGongFaEventData);
|
|
|
- // Debug.Log("旋转一圈");
|
|
|
- // }
|
|
|
- }
|
|
|
- }
|
|
|
+ SkillTurntable.Update(t, 1 * speed);
|
|
|
}
|
|
|
-
|
|
|
- // if (isKuoLiQuanKai)
|
|
|
- // {
|
|
|
- // qiankaiTime += t;
|
|
|
- // if (qiankaiTime > 3)
|
|
|
- // {
|
|
|
- // isKuoLiQuanKai = false;
|
|
|
- // qiankaiTime = 0;
|
|
|
- // addChongNeng = 0;
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // allMagic += t * addMaicSpeed;
|
|
|
- // if (allMagic > 500)
|
|
|
- // {
|
|
|
- // allMagic = 500;
|
|
|
- // }
|
|
|
-
|
|
|
- // if (currUseSkill == null && SkillCommands.Count <= 0)
|
|
|
- // {
|
|
|
- // while (_currUseQueueIndex < _skillQueue.Count && SkillCommands.Count <= 0)
|
|
|
- // {
|
|
|
- // SkillBasic skillBasic = _skillQueue[_currUseQueueIndex];
|
|
|
- // if (skillBasic.SelfSkillConfig.SkillType == 1)
|
|
|
- // {
|
|
|
- // if (skillBasic.IsCanUse())
|
|
|
- // {
|
|
|
- // AddCommandSkill(skillBasic);
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // _currUseQueueIndex++;
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // if (_currUseQueueIndex >= _skillQueue.Count)
|
|
|
- // {
|
|
|
- // StartPolling();
|
|
|
- // }
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void SetNormalAttCd()
|
|
|
- {
|
|
|
- // if (NormalAttack == null)
|
|
|
- // {
|
|
|
- // return;
|
|
|
- // }
|
|
|
- //
|
|
|
- // string timeLineName = "attack";
|
|
|
- // float maxTime = _combatHeroEntity.combatHeroTimeLineControl.TimeLineData.GetTimeLineEventLogicGroupForTime(
|
|
|
- // timeLineName, null);
|
|
|
- // float attackSpeed = _combatHeroEntity.CurrCombatHeroInfo.attSpeed.Value;
|
|
|
- // float cd = 1.0f / attackSpeed;
|
|
|
- // float attSpeed = (float)1;
|
|
|
- // if (cd < maxTime)
|
|
|
- // {
|
|
|
- // attSpeed = maxTime / cd;
|
|
|
- // }
|
|
|
- //
|
|
|
- // NormalAttSpeedScale = attSpeed;
|
|
|
- // // Debug.Log(NormalAttSpeedScale);
|
|
|
- // NormalAttCd = cd;
|
|
|
- }
|
|
|
-
|
|
|
public virtual void Dispose()
|
|
|
{
|
|
|
_combatHeroEntity = null;
|