Esempio n. 1
0
    //-------------------------------------------------------------------------
    //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]);
        }
    }
Esempio n. 2
0
    //-------------------------------------------------------------------------
    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();
    }
Esempio n. 3
0
    //-------------------------------------------------------------------------
    //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];
        }
    }
Esempio n. 4
0
    //-------------------------------------------------------------------------
    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);
        }
    }
Esempio n. 5
0
    List <_tTriggerMsg> mListTriggerMsg = new List <_tTriggerMsg>(); // 存贮自定义触发器消息注册信息

    //-------------------------------------------------------------------------
    public CMsgMgr(CNodeSys node_sys, CNodeMgr node_mgr)
    {
        mNodeSys = node_sys;
        mNodeMgr = node_mgr;
    }
Esempio n. 6
0
    //-------------------------------------------------------------------------
    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();
    }