public SEBaseEffectNode() : base() { this.m_NodeType = EEffectNodeType.None; this.m_ID = string.Empty; }
private SEBaseEffectNode ReadNode(Dictionary <string, object> nodeData, bool firstNode = false) { m_NodeCount++; EEffectNodeType type = EEffectNodeType.None; if (nodeData.ContainsKey("Method")) { type = EEffectNodeType.YesNoCondition; } else { type = EEffectNodeType.ExcuteEffectNode; } var id = type.ToString() + m_NodeCount; switch (type) { case EEffectNodeType.YesNoCondition: { SEYesNoNode yesNo = null; if (firstNode) { m_CurrentNode = new SEYesNoNode(); yesNo = m_CurrentNode as SEYesNoNode; } else { yesNo = new SEYesNoNode(); } yesNo.ID = id; yesNo.NodeType = type; var methodName = string.Empty; var pars = ParseStringToObjects(nodeData["Method"].ToString(), out methodName); yesNo.EffectParam.Method = methodName; yesNo.EffectParam.Params = pars; var yesMethods = nodeData["YesMethods"] as List <object>; var noMethods = nodeData["NoMethods"] as List <object>; for (int i = 0; i < yesMethods.Count; i++) { var yesData = yesMethods[i] as Dictionary <string, object>; yesNo.YesMethods.Add(ReadNode(yesData)); } for (int i = 0; i < noMethods.Count; i++) { var noData = noMethods[i] as Dictionary <string, object>; yesNo.NoMethods.Add(ReadNode(noData)); } return(yesNo); } default: case EEffectNodeType.ExcuteEffectNode: { SEExcuteEffectNode excuteMethod = null; if (firstNode) { m_CurrentNode = new SEExcuteEffectNode(); excuteMethod = m_CurrentNode as SEExcuteEffectNode; } else { excuteMethod = new SEExcuteEffectNode(); } excuteMethod.ID = id; excuteMethod.NodeType = type; var pars = nodeData["ExcuteMethods"] as List <object>; for (int i = 0; i < pars.Count; i++) { var methodName = string.Empty; var par = ParseStringToObjects(pars[i].ToString(), out methodName); excuteMethod.ExcuteMethods.Add(new SEEffectParam() { Method = methodName, Params = par }); } return(excuteMethod); } } return(null); }