Exemple #1
0
        private void Move()
        {
            if (_disposed)
                return;
            else if(firstTick && !IgnoreTick)
            {
                firstTick = false;
                return;
            }

            var cur = Current;
            var next = Current?.Next;

            if (cur == null)
            {
                _disposed = true;
                return;
            }
            else if(next != null && !next.CanEnter(this))
            {
                // Quick n' dirty
                if (next is SwitchTrack)
                    return;

                if (!next.Collides() && cur.Collides())
                    throw new GameOverException();
                else if (next.Collides())
                    throw new GameOverException();
            }
            else if (next != null && next.CanEnter(this))
            {
                _current.OnLeave();

                _current = next;
                _current.OnEnter(this);
            }
        }