Ejemplo n.º 1
0
        /// <summary>
        /// 接受逻辑层数据
        /// </summary>
        /// <param name="ptr"></param>
        /// <param name="nLen"></param>
        /// <param name="utn">头顶信息实例</param>
        private void SetNameInfo(IntPtr ptr, int nLen, UTopName utn)
        {
            if (null == utn)
            {
                return;
            }
            utn.ClearName();
            IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptr, nLen);
            cmd_count cmdCount            = helper.get <cmd_count>();

            for (int i = 0; i < cmdCount.nCount; ++i)
            {
                cmd_entity_show_title_node node = helper.get <cmd_entity_show_title_node>();
                switch (node.nTitleID)
                {
                case 0:
                    utn.SetRoleName(node.szTitleName);
                    break;

                case 1:
                    utn.SetKinName(node.szTitleName);
                    break;

                case 2:
                    utn.SetClanName(node.szTitleName);
                    break;

                default:
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 销毁实例
        /// </summary>
        /// <param name="instance"></param>
        private void DestroyTopName(UTopName instance)
        {
            if (null == instance)
            {
                return;
            }

            int id = instance.ID;

            if (instance.CanvasNode.isValid)
            {
                m_UnUseCanvasNodeList.Enqueue(instance.CanvasNode);
            }

            var temp = instance.gameObject;

            instance.resNode.DestroyInstanceRes(ref temp);
            instance.Clear(true);

            if (m_TopNameMap.ContainsKey(id))
            {
                m_TopNameMap[id] = null;
                m_TopNameMap.Remove(id);
            }
        }
Ejemplo n.º 3
0
 public void SetPKMode(int entityID, bool bIsPK)
 {
     if (m_TopNameMap.ContainsKey(entityID))
     {
         UTopName ut = m_TopNameMap[entityID];
         ut.SetPKMode(bIsPK);
     }
 }
Ejemplo n.º 4
0
 public UTopName FindTopName(int entityID)
 {
     if (m_TopNameMap.ContainsKey(entityID))
     {
         UTopName ut = m_TopNameMap[entityID];
         return(ut);
     }
     return(null);
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 创建头顶信息实例
        /// </summary>
        /// <param name="objev"></param>
        /// <param name="entityID"></param>
        /// <param name="host"></param>
        /// <param name="ptr"></param>
        /// <param name="nLen"></param>
        /// <returns></returns>
        public UTopName CreateTopName(EntityView objev, IntPtr ptr, int nLen)
        {
            if (!bInit)
            {
                Trace.LogError("UTopNameManager必须初始化!");
                return(null);
            }
            if (EntityView.isNullOrEmpty(objev))
            {
                Trace.LogWarning("TopName--实体视图无效!");
                return(null);
            }
            int entityID = objev.ID;

            //如果表里面已含,则更新信息并返回
            if (m_TopNameMap.ContainsKey(entityID))
            {
                Trace.LogWarning(entityID + "已经有TopName,返回已有的实例");
                UTopName ut = m_TopNameMap[entityID];
                //接受逻辑层信息并更新
                SetNameInfo(ptr, nLen, ut);
                return(ut);
            }
            //分配一个节点
            TopNameNode bcn = new TopNameNode();
            UTopName    utn = GetTopName(ref bcn);

            if (null == utn)
            {
                return(null);
            }
            utn.CreatBillBoard();
            utn.ChangeCanvasNode(bcn);
            utn.Init(objev);

            m_TopNameMap.Add(entityID, utn);

            SetNameInfo(ptr, nLen, utn);

            if (objev.Property)
            {
                int nMatchType = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MATCHTYPE);
                int nRankScore = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_RANKSCORE);
                int nRankGrade = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_RANKGRADE);
                int nRankIcon  = GameLogicAPI.getRankIconIDByGrade(nMatchType, nRankGrade);
                if (nRankIcon > 0)
                {
                    utn.SetRankLv(nRankIcon);
                }
                int nSex = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SEX);
                utn.SetSex(nSex);
            }

            return(utn);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 实例化创建头顶称号
        /// </summary>
        /// <param name="bcn">节点信息</param>
        /// <returns></returns>
        private UTopName InstanceUTopName(TopNameNode bcn)
        {
            GameObject go = TopNamePrefabRes.InstanceMainRes();

            if (RectPosition(go, bcn))
            {
                UTopName ut = go.GetComponent <UTopName>();
                ut.resNode = TopNamePrefabRes;
                return(ut);
            }
            return(null);
        }
Ejemplo n.º 7
0
 private void CacheTopName(UTopName ut)
 {
     if (null == ut)
     {
         return;
     }
     if (m_TopNameMap.ContainsKey(ut.ID))
     {
         ut.SetEnable(false);
         ut.Reset();
         ut.ChangeParent(CacheTopNameRoot.transform);
         m_CacheTopName.Enqueue(ut);
         m_TopNameMap.Remove(ut.ID);
     }
 }
Ejemplo n.º 8
0
        public void UpdateTopName(EntityView ev, IntPtr ptr, int nLen)
        {
            int entityID = -1;

            if (!EntityView.isNullOrEmpty(ev))
            {
                entityID = ev.ID;
            }
            if (m_TopNameMap.ContainsKey(entityID))
            {
                UTopName ut = m_TopNameMap[entityID];
                ut.Entity = ev;
                SetNameInfo(ptr, nLen, ut);
            }
        }
Ejemplo n.º 9
0
        private UTopName GetTopName(ref TopNameNode canvNode)
        {
            UTopName ut = null;

            if (m_CacheTopName.Count > 0)
            {
                ut       = m_CacheTopName.Dequeue();
                canvNode = ut.CanvasNode;
                ut.RefreshTexture();
            }
            else
            {
                if (!AllocTopNamePos(ref canvNode))
                {
                    return(null);
                }
                ut = InstanceUTopName(canvNode);
            }
            return(ut);
        }
Ejemplo n.º 10
0
 private void NormalUpdate()
 {
     m_InvalidList.Clear();
     if (null != m_TopNameMap)
     {
         foreach (UTopName var in m_TopNameMap.Values)
         {
             UTopName   utn  = var;
             EntityView view = utn.Entity;
             if (EntityView.isNullOrEmpty(view))
             {
                 m_InvalidList.Enqueue(utn);
                 continue;
             }
             //如果实体未激活则隐藏头顶称号
             if (!view.gameObject.activeSelf || !view.StateMachine.GetVisible())
             {
                 if (utn.GetEnable())
                 {
                     utn.SetEnable(false);
                 }
             }
             else
             {
                 if (!utn.GetEnable())
                 {
                     utn.SetEnable(true);
                 }
                 //需要更新的头顶称号进行正常更新
                 utn.OnUpdate();
             }
         }
     }
     //把无效的头顶称号缓存起来
     while (m_InvalidList.Count > 0)
     {
         UTopName ut = m_InvalidList.Dequeue();
         CacheTopName(ut);
     }
     m_InvalidList.Clear();
 }
Ejemplo n.º 11
0
        /// <summary>
        /// 销毁所有头顶信息实例
        /// </summary>
        public void DestroyALL()
        {
            ClearCache();
            if (null != m_TopNameMap)
            {
                foreach (KeyValuePair <int, UTopName> var in m_TopNameMap)
                {
                    UTopName utn = var.Value;
                    if (utn != null)
                    {
                        var temp = utn.gameObject;
                        utn.resNode.DestroyInstanceRes(ref temp);
                        utn.Clear(true);
                    }
                }
                currentColIndex = 0;
                currentRowIndex = 0;

                m_UnUseCanvasNodeList.Clear();
                m_TopNameMap.Clear();
            }
        }
Ejemplo n.º 12
0
 //预加载
 public void PreWarmTopName()
 {
     if (bPreWarmTopName)
     {
         return;
     }
     bPreWarmTopName = true;
     for (int i = 0; i < TopNameCacheCount; i++)
     {
         TopNameNode canvNode = new TopNameNode();
         if (!AllocTopNamePos(ref canvNode))
         {
             continue;
         }
         UTopName utn = InstanceUTopName(canvNode);
         utn.CreatBillBoard();
         utn.ChangeParent(CacheTopNameRoot.transform);
         utn.Init(null);
         utn.ChangeParent(CacheTopNameRoot.transform);
         utn.SetEnable(false);
         utn.ChangeCanvasNode(canvNode);
         m_CacheTopName.Enqueue(utn);
     }
 }
Ejemplo n.º 13
0
        /// <summary>
        /// 数值属性回调
        /// </summary>
        /// <param name="e"></param>
        private void ResponseEntityNumPropEvent(EntityNumPropEventArgs e)
        {
            switch (e.data.nPropID)
            {
            case (int)ENTITY_PROPERTY.PROPERTY_RANKGRADE:
            {
                if (EntityView.isNullOrEmpty(e.objev) || null == e.objev.Property)
                {
                    return;
                }

                UTopName ut = FindTopName(e.data.nEntityID);
                if (ut != null)
                {
                    int nMatchType = e.objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MATCHTYPE);
                    int nRankGrade = e.data.nValue;
                    int nRankIcon  = GameLogicAPI.getRankIconIDByGrade(nMatchType, nRankGrade);
                    if (nRankIcon > 0)
                    {
                        ut.SetRankLv(nRankIcon);
                    }
                }
            }
            break;

            case (int)ENTITY_PROPERTY.PROPERTY_RANKSCORE:
            {
                if (EntityView.isNullOrEmpty(e.objev) || null == e.objev.Property)
                {
                    return;
                }

                UTopName ut = FindTopName(e.data.nEntityID);
                if (ut != null)
                {
                    int nMatchType = e.objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MATCHTYPE);
                    int nRankScore = e.objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_RANKGRADE);
                    int nRankIcon  = GameLogicAPI.getRankIconIDByGrade(nMatchType, nRankScore);
                    if (nRankIcon > 0)
                    {
                        ut.SetRankLv(nRankIcon);
                    }
                }
            }
            break;

            case (int)ENTITY_PROPERTY.PROPERTY_SEX:
            {
                if (EntityView.isNullOrEmpty(e.objev) || null == e.objev.Property)
                {
                    return;
                }

                UTopName ut = FindTopName(e.data.nEntityID);
                if (ut != null)
                {
                    ut.SetSex(e.data.nValue);
                }
            }
            break;

            default:
                break;
            }
        }