internal void LoadInfo(StateComponentInfo componentInfo)
{
foreach (var stateInfo in componentInfo.States)
{
var state = new State() { Name = stateInfo.Name };
foreach (var trigger in stateInfo.Triggers)
{
state.AddTrigger(ParseTrigger(trigger));
}
state.SetInitial(EffectParser.LoadTriggerEffect(stateInfo.Initializer));
state.SetLogic(EffectParser.LoadTriggerEffect(stateInfo.Logic));
states[state.Name] = state;
}
foreach (var triggerInfo in componentInfo.Triggers)
{
var trigger = ParseTrigger(triggerInfo.Trigger);
if (triggerInfo.States != null)
{
foreach (var stateName in triggerInfo.States)
{
if (!states.ContainsKey(stateName))
{
State state = new State {Name = stateName};
states.Add(stateName, state);
}
states[stateName].AddTrigger(trigger);
}
}
else
{
foreach (var state in states.Values)
{
state.AddTrigger(trigger);
}
}
}
}