public void DefinirAccionSalida(string estado, Action accion, string descripcion) { Valida.TextoNoNuloVacio(descripcion, "Descripción"); int i = IndiceEstado(estado); if (_accionesSalida[i] == null) { _accionesSalida[i] = new List <Accion>(); } _accionesSalida[i].Add(new Accion(accion, descripcion)); }
private int IndiceTransicion(string transicion) { Valida.TextoNoNuloVacio(transicion, "Transición"); int i = _transiciones.IndexOf(transicion); if (i == -1) { throw new TransicionNoDefinidaException( string.Format("Transición [{0}] no definida.", transicion)); } return(i); }
private int IndiceEstado(string estado) { Valida.TextoNoNuloVacio(estado, "Estado"); int i = _estados.IndexOf(estado); if (i == -1) { throw new EstadoNoDefinidoException( string.Format("Estado {0} no definido.", estado)); } return(i); }
public void DefinirAccionEntrada(string estado, Action accion, string descripcion) { Valida.TextoNoNuloVacio(descripcion, "Descripción"); int i = IndiceEstado(estado); // Estado inicial no permite acciones de entrada. if (estado.Equals(_estadoInicial)) { throw new ArgumentException("Estado inicial no permite definición de acciones de entrada."); } if (_accionesEntrada[i] == null) { _accionesEntrada[i] = new List <Accion>(); } _accionesEntrada[i].Add(new Accion(accion, descripcion)); }
public void DefinirCondicion(string estado, string transicion, Func <bool> condicion, string descripcion) { Valida.TextoNoNuloVacio(descripcion, "Descripción"); int indiceEstado = IndiceEstado(estado); int indiceTransicion = IndiceTransicion(transicion); if (_matrizTransiciones[indiceEstado, indiceTransicion].IndiceEstado == NO_DEFINIDO) { throw new TransicionNoDefinidaException( string.Format("Estado {0} no contiene transición {1}.", estado, transicion)); } if (_matrizTransiciones[indiceEstado, indiceTransicion].Condiciones == null) { _matrizTransiciones[indiceEstado, indiceTransicion].Condiciones = new List <Condicion>(); } _matrizTransiciones[indiceEstado, indiceTransicion].Condiciones.Add(new Condicion(condicion, descripcion)); }