using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
using Excel2Json;
using GameLogic.Combat.CombatTool;
using GameLogic.Combat.Hero;
using UnityEngine;
using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
namespace GameLogic.Combat.Skill
{
///
/// 弓箭发射多个见
///
public class S40001 : SkillBasic
{
private float _harm;
protected int _count;
protected int _currCount;
private int _gongJianCount;
private SkillConfig _skillBasic4005;
protected override void ProInitSkillConfig()
{
_harm = SelfSkillConfig.effectValue[0];
_count = 1;
_gongJianCount = 5;
AddTriggerCallBack("sk1_fashe", Sk1_fasheTrigger);
}
protected override void ProInitSkill()
{
SkillConfig skillBasic = CombatHeroEntity.CurrCombatHeroInfo.GetGroupSkillConfig(40004);
if (skillBasic.ID > 0)
{
_gongJianCount += (int)skillBasic.effectValue[0];
}
_skillBasic4005 = CombatHeroEntity.CurrCombatHeroInfo.GetGroupSkillConfig(40005);
}
protected override void ProUseSkill()
{
_finishTimeLineGroupName = "-1";
_currCount = 0;
ActiveSk1();
}
protected void ActiveSk1()
{
if (_currCount >= _count)
{
SkillPlayFinish();
return;
}
_currCount++;
TimeLineEventLogicGroupBasic currMyLoopGroupBasic = ActivationTimeLineData("sk1");
currMyLoopGroupBasic.TimeLineUpdateEnd += ActiveSk1;
}
protected override ILifetCycleHitPoint[] ProGetTineLineTargetEntity(
TimeLineEventLogicBasic timeLineEventLogicBasic)
{
if (CombatHeroEntity.CombatAIBasic.currFocusTarget == null)
{
return null;
}
return new[]
{
CombatHeroEntity.CombatAIBasic.currFocusTarget.GetThis()
.GetMainHotPoin()
};
}
protected void Sk1_fasheTrigger(string groupName, CombatHeroHitPoint targetEntity,
ITimelineFxLogic timelineFxLogic,
TriggerData triggerData)
{
float harm = _harm;
if (_skillBasic4005.ID>0)
{
if (targetEntity.combatHeroEntity.HpBl < _skillBasic4005.effectValue[0])
{
harm += _skillBasic4005.effectValue[1];
}
}
long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
harm);
HarmReturnInfo harmReturnInfo = Harm(CombatHeroEntity, targetEntity,
v, AttType.Skill, triggerData);
}
protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
ITimelineFxLogic timelineFxLogic,
TriggerData triggerData)
{
int minC = _gongJianCount / 2;
int startAngle = minC * -5;
for (int i = 0; i < _gongJianCount; i++)
{
Vector3 forward = CombatHeroEntity.combatHeroGameObject.transform.forward;
Quaternion quaternion = Quaternion.AngleAxis(i * 5 + startAngle, Vector3.up);
// quaternion = quaternion + CombatHeroEntity.combatHeroGameObject.transform.rotation;
// Vector3 newAngle = new Vector3(eulerAngles.x, eulerAngles.y + i * 15+180, eulerAngles.z);
// Quaternion quaternion = Quaternion.Euler(newAngle);
forward = quaternion * forward;
Vector3 targetPos = CombatHeroEntity.combatHeroGameObject.transform.position + forward;
ActivationTimeLineData("sk1_fashe", null, new Vector3[] { targetPos });
}
}
}
}