public SoldierSpawnResult UpdateLogicSpec(int delta)
        {
            if (!this.isStartup)
            {
                return(SoldierSpawnResult.UnStarted);
            }
            if (this.CurrentWave == null && !this.bShouldReset)
            {
                return(SoldierSpawnResult.Completed);
            }
            if (this.CurrentWave == null || this.CurrentWave.IsInIdle)
            {
                this.TrySwitch();
            }
            if (this.bShouldWait || this.bShouldReset)
            {
                this.bShouldReset = false;
                this.curTick     += delta;
                if (this.curTick <= this.waitTick)
                {
                    return(SoldierSpawnResult.ShouldWaitInterval);
                }
                this.FindNextValidWave();
                this.bShouldWait = false;
                this.curTick     = 0;
                this.waitTick    = 0;
                if (this.CurrentWave == null)
                {
                    return(SoldierSpawnResult.Completed);
                }
            }
            SoldierSpawnResult soldierSpawnResult = this.CurrentWave.Update(delta);

            if (soldierSpawnResult > SoldierSpawnResult.ThresholdShouldWait)
            {
                if (this._isInEmergency && this._emergentWaveId == 0)
                {
                    this._isInEmergency = false;
                    this.TrySwitch();
                }
                else
                {
                    this.bShouldWait = true;
                    this.curTick     = 0;
                    this.waitTick    = (int)this.CurrentWave.WaveInfo.dwIntervalTick;
                }
            }
            return(soldierSpawnResult);
        }
Пример #2
0
        public SoldierSpawnResult UpdateLogicSpec(int delta)
        {
            if (!base.isStartup)
            {
                return(SoldierSpawnResult.UnStarted);
            }
            if ((this.CurrentWave == null) && !this.bShouldReset)
            {
                return(SoldierSpawnResult.Completed);
            }
            if (((this._toSwitchWaveID > 0) && (this.CurrentWave != null)) && this.CurrentWave.IsInIdle)
            {
                this.SwitchWave(this._toSwitchWaveID);
            }
            if (this.bShouldWait || this.bShouldReset)
            {
                this.bShouldReset = false;
                this.curTick     += delta;
                if (this.curTick > this.waitTick)
                {
                    this.FindNextValidWave();
                    this.bShouldWait = false;
                    this.curTick     = 0;
                    this.waitTick    = 0;
                    if (this.CurrentWave == null)
                    {
                        return(SoldierSpawnResult.Completed);
                    }
                }
                else
                {
                    return(SoldierSpawnResult.ShouldWaitInterval);
                }
            }
            SoldierSpawnResult result = this.CurrentWave.Update(delta);

            if (result > SoldierSpawnResult.ThresholdShouldWait)
            {
                this.bShouldWait = true;
                this.curTick     = 0;
                this.waitTick    = (int)this.CurrentWave.WaveInfo.dwIntervalTick;
            }
            return(result);
        }
Пример #3
0
        public void UpdateLogic(int delta)
        {
            Singleton <SceneManagement> .GetInstance().UpdateDirtyNodes();

            if (!this.m_bSoldierOverNum)
            {
                bool flag  = true;
                int  count = this.soldierAreas.get_Count();
                for (int i = 0; i < count; i++)
                {
                    SoldierRegion soldierRegion = this.soldierAreas.get_Item(i);
                    if (soldierRegion.isStartup)
                    {
                        SoldierSpawnResult soldierSpawnResult = soldierRegion.UpdateLogicSpec(delta);
                        flag &= (soldierSpawnResult != SoldierSpawnResult.ShouldWaitSoldierInterval);
                    }
                }
                if (flag)
                {
                    this.CheckSoldierOverNumUpper();
                }
            }
            else
            {
                this.CheckSoldierOverNumLower();
            }
            int count2 = this.commonSpawnGroups.get_Count();

            for (int j = 0; j < count2; j++)
            {
                CommonSpawnGroup commonSpawnGroup = this.commonSpawnGroups.get_Item(j);
                if (commonSpawnGroup.isStartup)
                {
                    commonSpawnGroup.UpdateLogic(delta);
                }
            }
            for (int k = 0; k < this.spawnGroups.get_Count(); k++)
            {
                SpawnGroup spawnGroup = this.spawnGroups.get_Item(k);
                if (spawnGroup.isStartup)
                {
                    spawnGroup.UpdateLogic(delta);
                }
            }
            int count3 = this.objTriggerMultiMap.get_Count();

            for (int l = 0; l < count3; l++)
            {
                MapWrapper.ObjTriggerKeyValuePair objTriggerKeyValuePair = this.objTriggerMultiMap.get_Item(l);
                GameObject obj = objTriggerKeyValuePair.obj;
                ListView <AreaEventTrigger> triggers = objTriggerKeyValuePair.triggers;
                if (obj != null && obj.activeSelf && (ulong)(Singleton <FrameSynchr> .get_instance().CurFrameNum % 4u) == (ulong)((long)(l % 4)))
                {
                    bool flag2  = false;
                    int  count4 = triggers.get_Count();
                    for (int m = 0; m < count4; m++)
                    {
                        AreaEventTrigger areaEventTrigger = triggers.get_Item(m);
                        if (areaEventTrigger != null && areaEventTrigger.isStartup)
                        {
                            areaEventTrigger.UpdateLogic(delta * 4);
                            flag2 |= areaEventTrigger.bDoDeactivating;
                        }
                    }
                    if (flag2)
                    {
                        for (int n = 0; n < count4; n++)
                        {
                            AreaEventTrigger areaEventTrigger2 = triggers.get_Item(n);
                            if (areaEventTrigger2 != null)
                            {
                                areaEventTrigger2.DoSelfDeactivating();
                            }
                        }
                    }
                }
            }
        }
Пример #4
0
        public void UpdateLogic(int delta)
        {
            Singleton <SceneManagement> .GetInstance().UpdateDirtyNodes();

            if (!this.m_bSoldierOverNum)
            {
                bool flag = true;
                for (int m = 0; m < this.soldierAreas.Count; m++)
                {
                    SoldierRegion region = this.soldierAreas[m];
                    if (region.isStartup)
                    {
                        SoldierSpawnResult result = region.UpdateLogicSpec(delta);
                        flag &= result != SoldierSpawnResult.ShouldWaitSoldierInterval;
                    }
                }
                if (flag)
                {
                    this.CheckSoldierOverNumUpper();
                }
            }
            else
            {
                this.CheckSoldierOverNumLower();
            }
            for (int i = 0; i < this.commonSpawnGroups.Count; i++)
            {
                CommonSpawnGroup group = this.commonSpawnGroups[i];
                if (group.isStartup)
                {
                    group.UpdateLogic(delta);
                }
            }
            for (int j = 0; j < this.spawnGroups.Count; j++)
            {
                SpawnGroup group2 = this.spawnGroups[j];
                if (group2.isStartup)
                {
                    group2.UpdateLogic(delta);
                }
            }
            int count = this.objTriggerMultiMap.Count;

            for (int k = 0; k < count; k++)
            {
                ObjTriggerKeyValuePair      pair     = this.objTriggerMultiMap[k];
                GameObject                  obj2     = pair.obj;
                ListView <AreaEventTrigger> triggers = pair.triggers;
                if (((obj2 != null) && obj2.activeSelf) && ((Singleton <FrameSynchr> .instance.CurFrameNum % 4) == (k % 4)))
                {
                    bool flag2 = false;
                    for (int n = 0; n < triggers.Count; n++)
                    {
                        AreaEventTrigger trigger = triggers[n];
                        if ((trigger != null) && trigger.isStartup)
                        {
                            trigger.UpdateLogic(delta * 4);
                            flag2 |= trigger.bDoDeactivating;
                        }
                    }
                    if (flag2)
                    {
                        for (int num7 = 0; num7 < triggers.Count; num7++)
                        {
                            AreaEventTrigger trigger2 = triggers[num7];
                            if (trigger2 != null)
                            {
                                trigger2.DoSelfDeactivating();
                            }
                        }
                    }
                }
            }
        }