Пример #1
0
        //预热血条
        public void PreWarmBlood()
        {
            if (bPreWarmBlood)
            {
                return;
            }

            bPreWarmBlood = true;

            for (int i = 0; i < (int)BloodStyleType.Boss; i++)
            {
                BloodStyleType eType = (BloodStyleType)i;

                if (!m_CacheBloodMap.ContainsKey(eType))
                {
                    m_CacheBloodMap.Add(eType, new Queue <UBlood>());
                }

                Queue <UBlood> BloodList = m_CacheBloodMap[eType];
                BloodList.Clear();

                for (int n = 0; n < CacheCountArry[i]; n++)
                {
                    BloodCanvasNode canvNode = new BloodCanvasNode();
                    if (!AllocBloodPos(eType, ref canvNode))
                    {
                        continue;
                    }
                    UBlood ub = InstanceUBlood(eType, canvNode);
                    if (null != ub)
                    {
                        ub.Init(null, 0, eType, canvNode);
                        ub.ChangeParent(CacheBloodRoot.transform);
                        ub.SetEnable(false);
                        BloodList.Enqueue(ub);
                    }
                }
            }

            if (EntityFactory.MainHero != null)
            {
                bossBloodTarget = EntityFactory.MainHero.transform;
            }
        }
Пример #2
0
        /// <summary>
        /// 血条创建
        /// </summary>
        /// <param name="objev">实体View</param>
        /// <param name="entityID">实体ID</param>
        /// <param name="host">实体Object</param>
        /// <param name="camType">阵营</param>
        /// <returns></returns>
        public UBlood CreatBlood(EntityView objev, int campType)
        {
            if (!bInit)
            {
                Trace.LogError("UBloodManager必须初始化!");
                return(null);
            }
            if (null == objev || !objev.IsValid || null == objev.Property)
            {
                Trace.LogWarning("Blood--EntityView无效!");
                return(null);
            }

            CreateBossBlood();
            int entityID = objev.ID;

            if (m_BloodMap.ContainsKey(entityID))
            {
                Trace.LogWarning(entityID + "已经有血条,返回已有的实例");
                UBlood ub = m_BloodMap[entityID];
                return(ub);
            }

            //按照策划要求,目前不创建己方小兵血条,其他己方物体不变
            //if (objev.Flag == (int)MONSTER_SUB_TYPE.MONSTER_SUB_TYPE_SOLDIER && campType == (int)GFxCampTpye.CT_Friend && objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASTER_UID) <= 0)
            //{
            //    return null;
            //}

            int hideFlag = (int)ENTITY_MASKFLAG.MASKFLAG_PROPCHANGE_HIDE_SAME_CAMP;

            if (campType == (int)GFxCampTpye.CT_Friend && (objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASK) & hideFlag) == hideFlag)
            {
                return(null);
            }

            BloodStyleType bloodType = BloodStyleType.Player;

            if (objev.Type == ENTITY_TYPE.TYPE_PLAYER_ROLE)
            {
                bloodType = BloodStyleType.Player;
            }
            else if (objev.Type == ENTITY_TYPE.TYPE_MONSTER && objev.createinfo.nBloodStyle < (int)BloodStyleType.Boss)
            {
                bloodType = (BloodStyleType)objev.createinfo.nBloodStyle;
            }

            BloodCanvasNode bcn   = new BloodCanvasNode();
            UBlood          blood = GetBlood(bloodType, ref bcn);

            if (null == blood)
            {
                return(null);
            }

            blood.Init(objev, campType, bloodType, bcn);
            m_BloodMap.Add(entityID, blood);
            ChangeMask(objev, true);
            SetProperty(objev, blood);

            return(blood);
        }