Exemplo n.º 1
0
        /// <summary>
        /// <para>Crea una transicion para cambiar el estado.</para>
        /// </summary>
        /// <param name="newEstado">Nuevo estado.</param>
        public virtual void Transicion(Estado newEstado)        // Crea una transicion para cambiar el estado
        {
            // Si el estado dado, es igual al actual o se esta en transicion, paramos la transicion.
            if (estadoActual == newEstado || isInTransicion)
            {
                return;
            }

            // Activamos la auxiliar de la transicion en progreso
            isInTransicion = true;

            // Salimos del estado actual
            if (estadoActual != null)
            {
                estadoActual.Exit();
            }

            // Cambiamos el estado actual
            estadoActual = newEstado;

            // Entramos al estado actual
            if (estadoActual != null)
            {
                estadoActual.Enter();
            }

            // Desactivamos la auxiliar de la transicion en progreso
            isInTransicion = false;
        }