/// <summary>
        /// 复制图元
        /// </summary>
        /// <returns>复制的图元</returns>
        public override SlotContainer Clone()
        {
            InterfaceGraphElement interfaceGraphElement = new InterfaceGraphElement(location, elementSize);

            CopyData(this, interfaceGraphElement);

            return(interfaceGraphElement);
        }
Beispiel #2
0
        /// <summary>
        /// 创建缩略的图元
        /// </summary>
        /// <param name="graphType">图元类型</param>
        /// <param name="centerLocation">图元中心位置</param>
        /// <param name="elementSize">图元大小</param>
        /// <param name="moveSize">图元的移动大小</param>
        /// <returns>图元对象</returns>
        private GraphElement CreateAbbreviateGraphElement(GraphType graphType, Point centerLocation)
        {
            GraphElement abbreviateGraphElement = null;

            switch (graphType)
            {
                case GraphType.ConditionNode: // 条件结点
                    {
                        abbreviateGraphElement = new ConditionGraphElement(centerLocation - graphSetting.ConditionNodeMoveOffset, graphSetting.ConditionNodeElementSize);
                        moveOffset = graphSetting.ConditionNodeMoveOffset;

                        break;
                    }
                case GraphType.ActionNode: // 动作结点
                    {
                        abbreviateGraphElement = new ActionGraphElement(centerLocation - graphSetting.ActionNodeMoveOffset, graphSetting.ActionNodeElementSize);
                        moveOffset = graphSetting.ActionNodeMoveOffset;

                        break;
                    }
                case GraphType.EventNode: // 事件结点
                    {
                        abbreviateGraphElement = new EventGraphElement(centerLocation - graphSetting.EventNodeMoveOffset, graphSetting.EventNodeElementSize);
                        moveOffset = graphSetting.EventNodeMoveOffset;

                        break;
                    }
                case GraphType.AIStateNode: // AI状态结点
                    {
                        abbreviateGraphElement = new AIStateGraphElement(centerLocation - graphSetting.AIStateNodeMoveOffset, graphSetting.AIStateNodeElementSize);
                        moveOffset = graphSetting.AIStateNodeMoveOffset;

                        break;
                    }
                case GraphType.AIActionNode: // AI动作结点
                    {
                        abbreviateGraphElement = new AIActionGraphElement(centerLocation - graphSetting.AIActionNodeMoveOffset, graphSetting.AIActionsNodeElementSize);
                        moveOffset = graphSetting.AIActionNodeMoveOffset;

                        break;
                    }
                case GraphType.AIActionsNode: // AI动作组结点
                    {
                        abbreviateGraphElement = new AIActionsGraphElement(centerLocation - graphSetting.AIActionsNodeMoveOffset, graphSetting.AIActionsNodeElementSize);
                        moveOffset = graphSetting.AIActionsNodeMoveOffset;

                        break;
                    }
                case GraphType.InnerChart: // 子绘图结点
                    {
                        abbreviateGraphElement = new InnerChart(centerLocation - graphSetting.InnerChartMoveOffset, graphSetting.InnerChartElementSize);
                        moveOffset = graphSetting.InnerChartMoveOffset;

                        break;
                    }
                case GraphType.InterfaceNode: // 接口结点
                    {
                        abbreviateGraphElement = new InterfaceGraphElement(centerLocation - graphSetting.InterfaceNodeMoveOffset, graphSetting.InterfaceNodeElementSize);
                        moveOffset = graphSetting.InterfaceNodeMoveOffset;

                        break;
                    }
            }

            if (abbreviateGraphElement != null)
            {
                abbreviateGraphElement.Refresh();
            }

            return abbreviateGraphElement;
        }
Beispiel #3
0
        /// <summary>
        /// 执行命令
        /// </summary>
        /// <param name="o">当前对象</param>
        /// <returns>是否执行成功</returns>
        public override bool Execute(object o)
        {
            bool success = true;
            object[] args = o as object[];
            int id = graphManager.AllocateGraphElementID();
            Point p = (Point)args[0];
            string typeString = args[1] as string;
            GraphSetting graphSetting = GraphSetting.GetGraphSetting();

            // 保存命令执行前的数据
            if (firstCommand) // 只有第一条命令保存执行前的数据
            {
                SaveBeforeExecute(flowChartManager.GetArguments());
            }   

            switch (typeString)
            {
                case "ConditionNode": // 条件结点
                    {
                        ConditionGraphElement conditionGraphElement = new ConditionGraphElement(p, graphSetting.ConditionNodeElementSize);                        
                        InitSlotContainer(conditionGraphElement, id, "条件结点");

                        break;
                    }
                case "ActionNode": // 动作结点
                    {
                        ActionGraphElement actionGraphElement = new ActionGraphElement(p, graphSetting.ActionNodeElementSize);
                        InitSlotContainer(actionGraphElement, id, "动作结点");

                        break;
                    }
                case "EventNode": // 事件结点
                    {
                        EventGraphElement eventGraphElement = new EventGraphElement(p, graphSetting.EventNodeElementSize);                        
                        InitSlotContainer(eventGraphElement, id, "事件结点");

                        break;
                    }
                case "AIStateNode": // ai状态结点
                    {
                        AIStateGraphElement aiStateGraphElement = new AIStateGraphElement(p, graphSetting.AIStateNodeElementSize);                        
                        InitSlotContainer(aiStateGraphElement, id, "AI状态结点");

                        break;
                    }
                case "AIActionNode": // ai动作结点
                    {
                        AIActionGraphElement aiActionGraphElement = new AIActionGraphElement(p, graphSetting.AIActionNodeElementSize);                        
                        InitSlotContainer(aiActionGraphElement, id, "AI动作结点");

                        break;
                    }
                case "AIActionsNode": // ai动作组结点
                    {
                        AIActionsGraphElement aiActionsGraphElement = new AIActionsGraphElement(p, graphSetting.AIActionsNodeElementSize);                        
                        InitSlotContainer(aiActionsGraphElement, id, "AI动作组结点");

                        break;
                    }
                case "InnerChart": // 子绘图结点
                    {
                        InnerChart innerChart = new InnerChart(p, graphSetting.InnerChartElementSize);                        
                        InitSlotContainer(innerChart, id, "子绘图结点");

                        break;
                    }
                case "InterfaceNode": // 接口结点
                    {
                        InterfaceGraphElement interfaceGraphElement = new InterfaceGraphElement(p, graphSetting.InterfaceNodeElementSize);                        
                        InitSlotContainer(interfaceGraphElement, id, "接口结点");

                        break;
                    }
            }
            
            if (success) // 保存命令执行后的数据
            {
                flowChartManager.ContentChanged = true;                
                SaveAfterExecute(flowChartManager.GetArguments());
            }

            return success;
        }
Beispiel #4
0
        /// <summary>
        /// 复制图元
        /// </summary>
        /// <returns>复制的图元</returns>
        public override SlotContainer Clone()
        {
            InterfaceGraphElement interfaceGraphElement = new InterfaceGraphElement(location, elementSize);
            CopyData(this, interfaceGraphElement);

            return interfaceGraphElement;
        }