//------------------------------------------------------------------------- //public void update(float elapsed_tm) //{ // foreach (var it in mMapNodeMgr) // { // it.Value._update(elapsed_tm); // } //} //------------------------------------------------------------------------- public CNodeMgr createNodeMgr(string player_guid, INodeServerListener server_listener, INodeClientListener client_listener, Entity et_player) { if (!mMapNodeMgr.ContainsKey(player_guid)) { CNodeMgr entity_mgr = new CNodeMgr(); entity_mgr._create(this, server_listener, client_listener, et_player); mMapNodeMgr.Add(player_guid, entity_mgr); return(entity_mgr); } else { return(mMapNodeMgr[player_guid]); } }
//------------------------------------------------------------------------- public void create(int node_id, _eNodeState state, List <_tNodeParamPair> list_param, INodeServerListener server_listener, INodeClientListener client_listener, CNodeSys node_sys, CNodeMgr node_mgr) { mNodeServerListener = server_listener; mNodeClientListener = client_listener; mNodeSys = node_sys; mNodeMgr = node_mgr; // 初始化NodeInfo mNodeId = node_id; mNodeState = state; if (list_param != null) { foreach (var i in list_param) { if (i.k == (byte)_eNodeParam.PreNodeId || i.k == (byte)_eNodeParam.ExitId) { mMapParam[i.k] = int.Parse(i.v.ToString()); } else { mMapParam[i.k] = i.v; } } } // 加载DefXml数据 _loadDefXml(); // 设置该Node的父Node string str_parent_node_id = getDefXml().GetValue("Parent").Value; if (str_parent_node_id != string.Empty && str_parent_node_id != "0") { int parent_node_id = Convert.ToInt32(str_parent_node_id); CNode node_parent = getNodeMgr().findNode(parent_node_id); if (node_parent != null) { mParentNode = node_parent; node_parent._addChildNode(this); } } // 从xml中解析所有trigger _parseTriggerXml(); // 初始化脚本 if (mNodeSys.isClient()) { INodeClientScriptFactory factory = mNodeSys.getNodeClientScriptFactory(getNodeType()); if (factory != null) { mNodeClientScript = factory.createScript(this); } } else { INodeServerScriptFactory factory = mNodeSys.getNodeServerScriptFactory(getNodeType()); if (factory != null) { mNodeServerScript = factory.createScript(this, getEtPlayer()); } } // 创建Fsm addState(new CNodeStateInit(this)); addState(new CNodeStateStart(this)); addState(new CNodeStateRun(this)); addState(new CNodeStateStop(this)); addState(new CNodeStateRelease(this)); setupFsm(); }
//------------------------------------------------------------------------- //public void update(float elapsed_tm) //{ // foreach (var it in mMapNodeMgr) // { // it.Value._update(elapsed_tm); // } //} //------------------------------------------------------------------------- public CNodeMgr createNodeMgr(string player_guid, INodeServerListener server_listener, INodeClientListener client_listener, Entity et_player) { if (!mMapNodeMgr.ContainsKey(player_guid)) { CNodeMgr entity_mgr = new CNodeMgr(); entity_mgr._create(this, server_listener, client_listener, et_player); mMapNodeMgr.Add(player_guid, entity_mgr); return entity_mgr; } else { return mMapNodeMgr[player_guid]; } }
//------------------------------------------------------------------------- public override void enter() { if (mNode.getNodeMgr().EnableLog) { StringBuilder sb = new StringBuilder(512); sb.Append("EtPlayer et_guid="); sb.Append(mNode.getNodeMgr().EtPlayer.Guid); sb.Append(" NodeType="); sb.Append(mNode.getNodeType()); sb.Append(" NodeId="); sb.Append(mNode.getNodeId()); sb.Append(" Run"); EbLog.Note(sb.ToString()); } mNodeServerScript = mNode._getNodeServerScript(); mNodeClientScript = mNode._getNodeClientScript(); mNode._setNodeState(_eNodeState.Run); // 生成NodeOp if (!mNode.getNodeSys().isClient()) { mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState()); } // 决策是否需要创建子Node { CNodeMgr node_mgr = mNode.getNodeMgr(); int node_id = mNode.getNodeId(); EventDef node_def = mNode.getDefXml(); if (mNode.hasChildNodeDef() && mNode._getChildNodeCount() == 0) { bool ok = false; var group = node_def.GetGroup("LinkedToChild"); if (group != null) { ok = true; Property p_entity_def_uid = group.GetValue("UID"); int this_child_entity_id = int.Parse(p_entity_def_uid.Value); if (this_child_entity_id != 0) { node_mgr._opCreateNode(this_child_entity_id, _eNodeState.Init, node_id); } } if (!ok) { var groups = node_def.GetGroupArray("LinkedToChild"); if (groups != null) { foreach (int i in groups.Keys) { Property p_entity_def_uid = groups[i].GetValue("UID"); int this_child_entity_id = int.Parse(p_entity_def_uid.Value); if (this_child_entity_id != 0) { node_mgr._opCreateNode(this_child_entity_id, _eNodeState.Init, node_id); } } } } } } // 广播NodeRun消息 if (!mNode.getNodeSys().isClient()) { List <object> list_param = new List <object>(); list_param.Add(mNode.getNodeType()); list_param.Add(mNode.getNodeId()); mNode._getNodeServerListener().nodeSendMsg((int)_eNodeMsg.NodeEnterRun, list_param); } // 执行脚本函数 if (mNodeServerScript != null) { mNodeServerScript.onEnterRunState(mNode); } else if (mNodeClientScript != null) { mNodeClientScript.onEnterRunState(mNode); } }
List <_tTriggerMsg> mListTriggerMsg = new List <_tTriggerMsg>(); // 存贮自定义触发器消息注册信息 //------------------------------------------------------------------------- public CMsgMgr(CNodeSys node_sys, CNodeMgr node_mgr) { mNodeSys = node_sys; mNodeMgr = node_mgr; }
//------------------------------------------------------------------------- public void create(int node_id, _eNodeState state, List<_tNodeParamPair> list_param, INodeServerListener server_listener, INodeClientListener client_listener, CNodeSys node_sys, CNodeMgr node_mgr) { mNodeServerListener = server_listener; mNodeClientListener = client_listener; mNodeSys = node_sys; mNodeMgr = node_mgr; // 初始化NodeInfo mNodeId = node_id; mNodeState = state; if (list_param != null) { foreach (var i in list_param) { if (i.k == (byte)_eNodeParam.PreNodeId || i.k == (byte)_eNodeParam.ExitId) { mMapParam[i.k] = int.Parse(i.v.ToString()); } else { mMapParam[i.k] = i.v; } } } // 加载DefXml数据 _loadDefXml(); // 设置该Node的父Node string str_parent_node_id = getDefXml().GetValue("Parent").Value; if (str_parent_node_id != string.Empty && str_parent_node_id != "0") { int parent_node_id = Convert.ToInt32(str_parent_node_id); CNode node_parent = getNodeMgr().findNode(parent_node_id); if (node_parent != null) { mParentNode = node_parent; node_parent._addChildNode(this); } } // 从xml中解析所有trigger _parseTriggerXml(); // 初始化脚本 if (mNodeSys.isClient()) { INodeClientScriptFactory factory = mNodeSys.getNodeClientScriptFactory(getNodeType()); if (factory != null) { mNodeClientScript = factory.createScript(this); } } else { INodeServerScriptFactory factory = mNodeSys.getNodeServerScriptFactory(getNodeType()); if (factory != null) { mNodeServerScript = factory.createScript(this, getEtPlayer()); } } // 创建Fsm addState(new CNodeStateInit(this)); addState(new CNodeStateStart(this)); addState(new CNodeStateRun(this)); addState(new CNodeStateStop(this)); addState(new CNodeStateRelease(this)); setupFsm(); }