using System.Linq; using Wizard.Battle.UI; using Wizard.Battle.View.Vfx; public class Skill_cant_evolution : SkillBase { public static readonly int BIT_FLAG_NULL = 0; public static readonly int BIT_FLAG_EPUSE = 1; public static readonly int BIT_FLAG_SKILL = 2; public Skill_cant_evolution(SkillParameter skillPrm, string option) : base(skillPrm, option) { } public override VfxWithLoading Start(CallParameter parameter) { int num = BIT_FLAG_NULL; string text = base.OptionValue.GetString(SkillFilterCreator.ContentKeyword.type); if (text == "ep_use") { num = BIT_FLAG_EPUSE; } else if (text == "skill") { num = BIT_FLAG_SKILL; } ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create(); foreach (BattleCardBase targetCard in parameter.targetCards) { VfxBase vfx = targetCard.SkillApplyInformation.GiveCantEvolution(num); BattleCardBase battleCardBase = targetCard; BuffInfo buffInfo = AddBuffInfoIfNeeded(targetCard); BuffInfoContainer buffInfoContainer = new BuffInfoContainer(battleCardBase, buffInfo, num, "", null, 0L); base.buffInfoContainer.Add(buffInfoContainer); SetOnLoseEvent(battleCardBase, buffInfo, buffInfoContainer); parallelVfxPlayer.Register(vfx); } if (IsBattleLog && parameter.targetCards.Count() > 0) { BattleLogManager.GetInstance().AddLogSkillGain(parameter.targetCards.ToList(), this, SkillGainType.Guard); } VfxWithLoadingSequential vfxWithLoadingSequential = VfxWithLoadingSequential.Create(); vfxWithLoadingSequential.RegisterVfxWithLoading(CreateSkillEffect(base.SkillPrm.resourceMgr, parameter.targetCards)); vfxWithLoadingSequential.RegisterToMainVfx(parallelVfxPlayer); return vfxWithLoadingSequential; } public override VfxWithLoading Stop(SkillProcessor skillProcessor) { base.Stop(skillProcessor); ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create(); foreach (BuffInfoContainer item in buffInfoContainer) { VfxBase vfx = item._targetCard.SkillApplyInformation.DepriveCantEvolution(item._intValue); item._targetCard.RemoveBuffInfo(item._buffInfo); parallelVfxPlayer.Register(vfx); } buffInfoContainer.Clear(); return VfxWithLoading.Create(parallelVfxPlayer); } public override void SetOnLoseEvent(BattleCardBase targetCard, BuffInfo buff, BuffInfoContainer container) { targetCard.OnLoseSkillOneTime += delegate(SkillBase loseSkill, SkillProcessor skillProcessor, BattleCardBase card) { card.RemoveBuffInfo(buff); buffInfoContainer.Remove(container); return card.SkillApplyInformation.ForceDepriveCantEvolution(); }; } }