public Baby Translate(BabyElement babyElement) { var stateSymbolTable = babyElement.StateElements.ToDictionary(s => s.Name, s => new State(s.Name)); var baby = new Baby(_scheduler, babyElement.Name) { State = stateSymbolTable[babyElement.InitialStateName] }; foreach (var scheduledEventElement in babyElement.ScheduledEventElements) { var scheduledEvent = new ScheduledEvent(scheduledEventElement.Event, scheduledEventElement.Interval); baby.Schedule(scheduledEvent); } foreach (var stateElement in babyElement.StateElements) { var state = stateSymbolTable[stateElement.Name]; foreach (var transitionElement in stateElement.TransitionElements) { var targetState = stateSymbolTable[transitionElement.StateName]; var transition = new Transition(transitionElement.Event, targetState); state.AddTransition(transition); } } return baby; }
public void AddTransition(Transition transition) { _transitions.Add(transition.Event, transition.State); }