/// <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); }
/// <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; } }