From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/Buff/XBuffReduceSkillCD.cs | 183 +++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/Buff/XBuffReduceSkillCD.cs (limited to 'Client/Assets/Scripts/XMainClient/Buff/XBuffReduceSkillCD.cs') diff --git a/Client/Assets/Scripts/XMainClient/Buff/XBuffReduceSkillCD.cs b/Client/Assets/Scripts/XMainClient/Buff/XBuffReduceSkillCD.cs new file mode 100644 index 00000000..194f058f --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/Buff/XBuffReduceSkillCD.cs @@ -0,0 +1,183 @@ +using System; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class XBuffReduceSkillCD : BuffEffect + { + private XBuff _buff = null; + + private SequenceList _AllList = null; + + public static bool TryCreate(CombatEffectHelper pEffectHelper, XBuff buff) + { + bool flag = pEffectHelper.BuffInfo.ReduceSkillCD.Count == 0 && !pEffectHelper.bHasEffect(CombatEffectType.CET_Buff_ReduceCD); + bool result; + if (flag) + { + result = false; + } + else + { + buff.AddEffect(new XBuffReduceSkillCD(buff)); + result = true; + } + return result; + } + + public XBuffReduceSkillCD(XBuff buff) + { + this._buff = buff; + } + + private static void _SetSequenceList(SequenceList _AllList, CombatEffectHelper pEffectHelper) + { + _AllList.Reset(3); + bool flag = pEffectHelper.bHasEffect(CombatEffectType.CET_Buff_ReduceCD); + if (flag) + { + pEffectHelper.GetBuffReduceSkillCD(_AllList); + } + SeqListRef reduceSkillCD = pEffectHelper.BuffInfo.ReduceSkillCD; + for (int i = 0; i < reduceSkillCD.Count; i++) + { + _AllList.Append(new uint[] + { + XSingleton.singleton.XHash(reduceSkillCD[i, 0]), + uint.Parse(reduceSkillCD[i, 1]), + string.IsNullOrEmpty(reduceSkillCD[i, 2]) ? 0u : uint.Parse(reduceSkillCD[i, 2]) + }); + } + } + + public override void OnAdd(XEntity entity, CombatEffectHelper pEffectHelper) + { + bool isDummy = entity.IsDummy; + if (!isDummy) + { + this._AllList = CommonObjectPool>.Get(); + XBuffReduceSkillCD._SetSequenceList(this._AllList, pEffectHelper); + XBuffReduceSkillCD.DoReduce(this._AllList, entity); + } + } + + public override void OnRemove(XEntity entity, bool IsReplaced) + { + bool isDummy = entity.IsDummy; + if (!isDummy) + { + XBuffReduceSkillCD.UnDo(this._AllList, entity); + CommonObjectPool>.Release(this._AllList); + } + } + + public static void DoReduce(SequenceList datas, XEntity entity) + { + bool flag = entity == null; + if (!flag) + { + XSkillMgr skillMgr = entity.SkillMgr; + bool flag2 = skillMgr == null; + if (!flag2) + { + for (int i = 0; i < datas.Count; i++) + { + uint id = datas[i, 0]; + switch (datas[i, 2]) + { + case 0u: + { + float delta = datas[i, 1] * 0.001f; + skillMgr.Accelerate(id, delta, false); + break; + } + case 1u: + { + float delta2 = datas[i, 1] * 0.01f; + skillMgr.Accelerate(id, delta2, true); + break; + } + case 2u: + { + float delta3 = datas[i, 1] * 0.01f; + skillMgr.AccelerateStaticCD(id, delta3); + break; + } + } + } + } + } + } + + public static void UnDo(SequenceList datas, XEntity entity) + { + bool flag = entity == null; + if (!flag) + { + XSkillMgr skillMgr = entity.SkillMgr; + bool flag2 = skillMgr == null; + if (!flag2) + { + for (int i = 0; i < datas.Count; i++) + { + uint id = datas[i, 0]; + uint num = datas[i, 2]; + uint num2 = num; + if (num2 == 2u) + { + skillMgr.ResetStaticCD(id); + } + } + } + } + } + + public static void DoReduce(int buffID, int buffLevel, XEntity entity) + { + bool flag = entity == null; + if (!flag) + { + BuffTable.RowData buffData = XSingleton.singleton.GetBuffData(buffID, buffLevel); + bool flag2 = buffData == null; + if (flag2) + { + XSingleton.singleton.AddErrorLog(string.Format("DoReduce Buff data not found: [{0} {1}]", buffID, buffLevel), null, null, null, null, null); + } + else + { + CombatEffectHelper data = XDataPool.GetData(); + data.Set(buffData, entity); + SequenceList sequenceList = CommonObjectPool>.Get(); + XBuffReduceSkillCD._SetSequenceList(sequenceList, data); + XBuffReduceSkillCD.DoReduce(sequenceList, entity); + CommonObjectPool>.Release(sequenceList); + data.Recycle(); + } + } + } + + public static void UnDo(int buffID, int buffLevel, XEntity entity) + { + bool flag = entity == null; + if (!flag) + { + BuffTable.RowData buffData = XSingleton.singleton.GetBuffData(buffID, buffLevel); + bool flag2 = buffData == null; + if (flag2) + { + XSingleton.singleton.AddErrorLog(string.Format("UnDoReduce Buff data not found: [{0} {1}]", buffID, buffLevel), null, null, null, null, null); + } + else + { + CombatEffectHelper data = XDataPool.GetData(); + data.Set(buffData, entity); + SequenceList sequenceList = CommonObjectPool>.Get(); + XBuffReduceSkillCD._SetSequenceList(sequenceList, data); + XBuffReduceSkillCD.UnDo(sequenceList, entity); + CommonObjectPool>.Release(sequenceList); + data.Recycle(); + } + } + } + } +} -- cgit v1.1-26-g67d0