示例#1
0
        public void UpdateLogic(int inDelta)
        {
            PoolObjHandle <ActorRoot> poolObjHandle = new PoolObjHandle <ActorRoot>(null);
            ulong num = (ulong)((long)this.EffectRadius * (long)this.EffectRadius);
            List <PoolObjHandle <ActorRoot> > gameActors = Singleton <GameObjMgr> .GetInstance().GameActors;

            int count = gameActors.get_Count();

            for (int i = 0; i < count; i++)
            {
                PoolObjHandle <ActorRoot> poolObjHandle2 = gameActors.get_Item(i);
                if (poolObjHandle2 && !poolObjHandle2.handle.ActorControl.IsDeadState)
                {
                    if (this.SrcActorCond != null)
                    {
                        bool flag = true;
                        STriggerCondActor[] srcActorCond = this.SrcActorCond;
                        for (int j = 0; j < srcActorCond.Length; j++)
                        {
                            STriggerCondActor sTriggerCondActor = srcActorCond[j];
                            flag &= sTriggerCondActor.FilterMatch(ref poolObjHandle2);
                        }
                        if (!flag)
                        {
                            goto IL_E9;
                        }
                    }
                    ulong sqrMagnitudeLong2D = (ulong)(poolObjHandle2.handle.location - this.InitLoc).sqrMagnitudeLong2D;
                    if (sqrMagnitudeLong2D < num)
                    {
                        poolObjHandle = poolObjHandle2;
                        break;
                    }
                }
                IL_E9 :;
            }
            if (poolObjHandle)
            {
                this.SetMyselfOnFire(poolObjHandle);
            }
        }
        public bool FilterMatch(EGlobalGameEvent inEventType, PoolObjHandle <ActorRoot> src, PoolObjHandle <ActorRoot> atker, ref SFilterMatchParam param, CTriggerMatch match, int inMatchIndex)
        {
            if (!this.CheckDifficulty())
            {
                return(false);
            }
            if (this.GlobalVariable != 0 && Singleton <BattleLogic> .instance.m_globalTrigger != null && this.GlobalVariable != Singleton <BattleLogic> .instance.m_globalTrigger.CurGlobalVariable)
            {
                return(false);
            }
            if (this.bCaptainSrc && (!src || src != Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer().Captain))
            {
                return(false);
            }
            if (this.bCaptainAtker && (!atker || atker != Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer().Captain))
            {
                return(false);
            }
            if (this.SrcActorCond != null)
            {
                STriggerCondActor[] srcActorCond = this.SrcActorCond;
                for (int i = 0; i < srcActorCond.Length; i++)
                {
                    STriggerCondActor sTriggerCondActor = srcActorCond[i];
                    if (!sTriggerCondActor.FilterMatch(ref src))
                    {
                        return(false);
                    }
                }
            }
            if (this.AtkerActorCond != null)
            {
                STriggerCondActor[] atkerActorCond = this.AtkerActorCond;
                for (int j = 0; j < atkerActorCond.Length; j++)
                {
                    STriggerCondActor sTriggerCondActor2 = atkerActorCond[j];
                    if (!sTriggerCondActor2.FilterMatch(ref atker))
                    {
                        return(false);
                    }
                }
            }
            switch (inEventType)
            {
            case EGlobalGameEvent.SpawnGroupDead:
                if (match.Originator != null)
                {
                    CommonSpawnGroup component  = match.Originator.GetComponent <CommonSpawnGroup>();
                    SpawnGroup       component2 = match.Originator.GetComponent <SpawnGroup>();
                    if (component != null && component != param.csg)
                    {
                        return(false);
                    }
                    if (component2 != null && component2 != param.sg)
                    {
                        return(false);
                    }
                }
                break;

            case EGlobalGameEvent.ActorDead:
            {
                PoolObjHandle <ActorRoot> actorRoot = ActorHelper.GetActorRoot(match.Originator);
                if (actorRoot && actorRoot != src)
                {
                    return(false);
                }
                break;
            }

            case EGlobalGameEvent.ActorDamage:
                if (!this.FilterMatchDamage(ref param.hurtInfo))
                {
                    return(false);
                }
                break;

            case EGlobalGameEvent.UseSkill:
                if (param.slot != (SkillSlotType)this.skillSlot)
                {
                    return(false);
                }
                break;

            case EGlobalGameEvent.TalentLevelChange:
                if (match.Condition.TalentLevel != param.intParam)
                {
                    return(false);
                }
                break;

            case EGlobalGameEvent.BattleGoldChange:
            {
                if (!src || !ActorHelper.IsHostCtrlActor(ref src))
                {
                    return(false);
                }
                int intParam = param.intParam;
                if (!this.FilterBattleGoldNum(intParam))
                {
                    return(false);
                }
                break;
            }

            case EGlobalGameEvent.SkillUseCanceled:
                if (param.slot != (SkillSlotType)this.skillSlot)
                {
                    return(false);
                }
                break;
            }
            return(true);
        }