private void StateBox_SelectedIndexChanged(object sender, EventArgs e) { activeState = null; if (activeStateGroup != null) { activeCondition = null; ConditionTree.SelectedNode = null; ConditionTree.Nodes.Clear(); Editor.ByteProvider = new DynamicByteProvider(new byte[] { }); TargetStateBox.Clear(); PassCmdBox.Items.Clear(); EntryCmdBox.Items.Clear(); ExitCmdBox.Items.Clear(); WhileCmdBox.Items.Clear(); if (StateBox.SelectedItem != null) { long stateKey = (long)StateBox.SelectedItem; activeState = activeStateGroup[stateKey]; foreach (var condition in activeState.Conditions) { AddConditionNode(condition); } foreach (var command in activeState.EntryCommands) { EntryCmdBox.Items.Add(command.CommandID); } foreach (var command in activeState.ExitCommands) { ExitCmdBox.Items.Add(command.CommandID); } foreach (var command in activeState.WhileCommands) { WhileCmdBox.Items.Add(command.CommandID); } } } }
private ESD.State CloneState(ESD.State orig) { var newState = new ESD.State(); foreach (var v in orig.EntryCommands) { newState.EntryCommands.Add(new CommandCall() { CommandBank = v.CommandBank, CommandID = v.CommandID, Arguments = v.Arguments, }); } foreach (var v in orig.ExitCommands) { newState.ExitCommands.Add(new CommandCall() { CommandBank = v.CommandBank, CommandID = v.CommandID, Arguments = v.Arguments, }); } foreach (var v in orig.Conditions) { var newCondition = new ESD.Condition() { Evaluator = v.Evaluator, TargetState = v.TargetState, }; foreach (var vv in v.PassCommands) { newCondition.PassCommands.Add(new CommandCall() { CommandBank = vv.CommandBank, CommandID = vv.CommandID, Arguments = vv.Arguments, }); } foreach (var vv in v.Subconditions) { var newSubCondition = new ESD.Condition() { Evaluator = vv.Evaluator, TargetState = vv.TargetState, Subconditions = vv.Subconditions, }; foreach (var vvv in vv.PassCommands) { newSubCondition.PassCommands.Add(new CommandCall() { CommandBank = vvv.CommandBank, CommandID = vvv.CommandID, Arguments = vvv.Arguments, }); } newCondition.Subconditions.Add(newSubCondition); } newState.Conditions.Add(newCondition); } return(newState); }
public StateDataEditor(ESD.State state) { InitializeComponent(); nameBox.Text = state.Name; idBox.Value = state.ID; }