示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
 public StateDataEditor(ESD.State state)
 {
     InitializeComponent();
     nameBox.Text = state.Name;
     idBox.Value  = state.ID;
 }