예제 #1
0
        public bool ChangeToNextStatus(out AngelTempleStatus newStatus)
        {
            bool changed = false;
            long ticks   = TimeUtil.NOW();

            lock (m_AngelTempleScene)
            {
                if (m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_NULL)
                {
                    if (CanEnterAngelTempleOnTime())
                    {
                        //准备时间,开始入场
                        m_AngelTempleScene.m_eStatus        = AngelTempleStatus.FIGHT_STATUS_PREPARE;
                        m_AngelTempleScene.m_lPrepareTime   = ticks;
                        m_AngelTempleScene.m_lStatusEndTime = ticks + m_AngelTempleData.PrepareTime * 1000;
                        changed = true;
                    }
                }
                else if (m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_PREPARE)
                {
                    if (ticks >= m_AngelTempleScene.m_lStatusEndTime)
                    {
                        // 开始战斗
                        m_AngelTempleScene.m_eStatus        = AngelTempleStatus.FIGHT_STATUS_BEGIN;
                        m_AngelTempleScene.m_lBeginTime     = ticks;
                        m_AngelTempleScene.m_lStatusEndTime = ticks + m_AngelTempleData.DurationTime * 1000;
                        changed = true;
                    }
                }
                else if (m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_BEGIN)
                {
                    if (ticks >= m_AngelTempleScene.m_lStatusEndTime || m_AngelTempleScene.m_bEndFlag != 0)
                    {
                        // 战斗结束,准备清场
                        m_AngelTempleScene.m_eStatus        = AngelTempleStatus.FIGHT_STATUS_END;
                        m_AngelTempleScene.m_lEndTime       = ticks;
                        m_AngelTempleScene.m_lStatusEndTime = ticks + m_AngelTempleData.LeaveTime * 1000;
                        changed = true;
                    }
                }
                else if (m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_END)
                {
                    if (ticks >= m_AngelTempleScene.m_lStatusEndTime)
                    {
                        // 清场时间,所有玩家应清出场景
                        m_AngelTempleScene.m_eStatus = AngelTempleStatus.FIGHT_STATUS_NULL;
                        changed = true;
                    }
                }

                newStatus = m_AngelTempleScene.m_eStatus;
            }

            return(changed);
        }
예제 #2
0
 public void CleanAll()
 {
     m_NotifyInfoTick  = 0;
     m_bEndFlag        = 0;
     m_nPlarerCount    = 0;
     m_nKillBossRole   = 0;
     m_nAngelMonsterID = 0;
     m_lPrepareTime    = 0;
     m_lBeginTime      = 0;
     m_lEndTime        = 0;
     m_eStatus         = AngelTempleStatus.FIGHT_STATUS_NULL;
 }
예제 #3
0
        public bool ChangeToNextStatus(out AngelTempleStatus newStatus)
        {
            bool changed = false;
            long ticks   = TimeUtil.NOW();

            lock (this.m_AngelTempleScene)
            {
                if (this.m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_NULL)
                {
                    if (this.CanEnterAngelTempleOnTime())
                    {
                        this.m_AngelTempleScene.m_eStatus        = AngelTempleStatus.FIGHT_STATUS_PREPARE;
                        this.m_AngelTempleScene.m_lPrepareTime   = ticks;
                        this.m_AngelTempleScene.m_lStatusEndTime = ticks + (long)(this.m_AngelTempleData.PrepareTime * 1000);
                        changed = true;
                    }
                }
                else if (this.m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_PREPARE)
                {
                    if (ticks >= this.m_AngelTempleScene.m_lStatusEndTime)
                    {
                        this.m_AngelTempleScene.m_eStatus        = AngelTempleStatus.FIGHT_STATUS_BEGIN;
                        this.m_AngelTempleScene.m_lBeginTime     = ticks;
                        this.m_AngelTempleScene.m_lStatusEndTime = ticks + (long)(this.m_AngelTempleData.DurationTime * 1000);
                        changed = true;
                    }
                }
                else if (this.m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_BEGIN)
                {
                    if (ticks >= this.m_AngelTempleScene.m_lStatusEndTime || this.m_AngelTempleScene.m_bEndFlag != 0)
                    {
                        this.m_AngelTempleScene.m_eStatus        = AngelTempleStatus.FIGHT_STATUS_END;
                        this.m_AngelTempleScene.m_lEndTime       = ticks;
                        this.m_AngelTempleScene.m_lStatusEndTime = ticks + (long)(this.m_AngelTempleData.LeaveTime * 1000);
                        changed = true;
                    }
                }
                else if (this.m_AngelTempleScene.m_eStatus == AngelTempleStatus.FIGHT_STATUS_END)
                {
                    if (ticks >= this.m_AngelTempleScene.m_lStatusEndTime)
                    {
                        this.m_AngelTempleScene.m_eStatus = AngelTempleStatus.FIGHT_STATUS_NULL;
                        changed = true;
                    }
                }
                newStatus = this.m_AngelTempleScene.m_eStatus;
            }
            return(changed);
        }