Exemplo n.º 1
0
Arquivo: Room.cs Projeto: radtek/SCM2
        // 销毁房间内所有对象
        public virtual void Clear()
        {
            if (Map != null)
            {
                foreach (var u in AllUnits)
                {
                    smm.Del(u.UID);
                    u.Room = null;
                }

                Map.Clear();
            }

            if (BuffRunner != null)
            {
                BuffRunner.Clear();
            }

            if (TBRunner != null)
            {
                TBRunner.Clear();
            }

            UsrsID     = null;
            Players    = null;
            frameSeqNo = 0;
            rand       = null;
            idSeq      = 0;
        }
Exemplo n.º 2
0
Arquivo: Room.cs Projeto: radtek/SCM2
        public const int MaxFrameNum = 9000; // 最多 15 分钟一局
        public virtual void MoveOneStep()
        {
            if (frameSeqNo >= MaxFrameNum)
            {
                BattleEnd(null);
                return;
            }

            frameSeqNo++;

            // 目标已死亡就从地图移除
            foreach (var u in AllUnits)
            {
                if (u.Hp <= 0)
                {
                    RemoveUnit(u.UID);
                    foreach (var acc in u.Accessories.ToArray())
                    {
                        RemoveUnit(acc.UID);
                    }
                }
            }

            smm.OnTimeElapsed(FrameInterval);

            Map.DoOneStep(FrameInterval);

            // 宝箱和 buff

            if (TBRunner != null)
            {
                TBRunner.OnTimeElapsed(FrameInterval);
            }

            if (BuffRunner != null)
            {
                BuffRunner.OnTimeElapsed(FrameInterval);
            }
        }