示例#1
0
        public void DestroyALL()
        {
            ClearCache();

            if (null != m_BloodMap)
            {
                foreach (KeyValuePair <int, UBlood> var in m_BloodMap)
                {
                    UBlood ub = var.Value;
                    if (ub != null)
                    {
                        var temp = ub.gameObject;
                        ub.resNode.DestroyInstanceRes(ref temp);
                        ub.Clear();
                    }
                }

                m_curIndexArry = new Vector2[3];
                m_BloodMap.Clear();
            }

            if (null != BossBlood)
            {
                var temp = BossBlood.gameObject;
                BossBlood.resNode.DestroyInstanceRes(ref temp);
                BossBlood.Clear();
                BossBlood = null;

                CurrentBossBloodHostID = -1;
            }
            BossBloodEntityTable.Clear();
            BossBloodProityList.Clear();

            m_unUseCanvasNodeMap.Clear();
        }
示例#2
0
        /// <summary>
        /// 更新大血条
        /// </summary>
        private void UpdateBossBlood()
        {
            if (null == BossBlood)
            {
                return;
            }

            JitterBossBlood();

            for (int i = 0; i < BossBloodProityList.Count; i++)
            {
                EntityView ev = BossBloodProityList[i];
                if (null == ev)
                {
                    continue;
                }
                if (!ev.gameObject)
                {
                    continue;
                }
                if (ev.BossBloodShowDistance > 0)
                {
                    if (bossBloodTarget == null && EntityFactory.MainHero != null)
                    {
                        bossBloodTarget = EntityFactory.MainHero.transform;
                    }

                    float dis = Vector3.SqrMagnitude(bossBloodTarget.position - ev.gameObject.transform.position);
                    if (dis < ev.BossBloodShowDistance * ev.BossBloodShowDistance)
                    {
                        if (ev.CampFlag != SPELL.CampFlag.CampFlag_Friend && ev.CampFlag != SPELL.CampFlag.CampFlag_Self)
                        {
                            EntityEnterBossBloodDistance(ev.ID);
                        }
                        break;
                    }
                    else
                    {
                        EntityLeaveBossBloodDistance(ev.ID);
                    }
                }
            }

            if (null != BossBlood && CurrentBossBloodHostID > 0)
            {
                EntityView ev = EntityFactory.getEntityViewByID(CurrentBossBloodHostID);
                if (ev != null && ev.StateMachine != null)
                {
                    UpdateBossBloodAndTowerSoldier(ev, ev.StateMachine.GetVisible());
                }
                else
                {
                    UpdateBossBloodAndTowerSoldier(ev, false);
                }

                BossBlood.OnUpdate();
            }
        }
示例#3
0
    /// <summary>
    /// 更新BOSS血条
    /// </summary>
    private static void UpdateBossBlood()
    {
        if (!EntityFactory.MainHero)
        {
            return;
        }


        JitterBossBlood();

        //检测是否有boss血条进入到显示范围
        for (int i = 0; i < BossBloodProityList.Count; i++)
        {
            EntityView gv = BossBloodProityList[i];
            if (null == gv)
            {
                continue;
            }
            if (!gv.gameObject)
            {
                continue;
            }
            if (gv.BossBloodShowDistance > 0)
            {
                float dis = Vector3.SqrMagnitude(EntityFactory.MainHero.transform.position - gv.gameObject.transform.position);
                if (dis < gv.BossBloodShowDistance * gv.BossBloodShowDistance)
                {
                    if (gv.CampFlag != SPELL.CampFlag.CampFlag_Friend &&
                        gv.CampFlag != SPELL.CampFlag.CampFlag_Self
                        )
                    {
                        EntityEnterBossBloodDistance(gv.ID);
                    }

                    break;
                }
                else
                {
                    EntityLeaveBossBloodDistance(gv.ID);
                }
            }
        }

        if (null != BossBlood)
        {
            BossBlood.OnUpdate();
        }
    }
示例#4
0
 /// <summary>
 /// 更新大血条数据
 /// </summary>
 /// <param name="id">实体ID</param>
 /// <param name="name">实体名称</param>
 /// <param name="maxValue">最大血量</param>
 /// <param name="curValue">当前血量</param>
 /// <param name="tempValue">临时血量</param>
 private void UpdateBossBloodData(int id, string name, int maxValue, int curValue, int tempValue)
 {
     if (null == BossBlood)
     {
         return;
     }
     if (id != CurrentBossBloodHostID || id < 0)
     {
         if (CurrentBossBloodHostID < 0)
         {
             UpdateBossBloodAndTowerSoldier(null, false);
         }
         return;
     }
     BossBlood.SetMaxValue(maxValue);
     BossBlood.SetCurValue(curValue);
     BossBlood.SetTempValue(tempValue);
     BossBlood.SetRoleName(name);
 }
示例#5
0
 /// <summary>
 /// 创建大血条
 /// </summary>
 private void CreateBossBlood()
 {
     if (null == BossBlood)
     {
         BossBlood = InstanceUBossBlood();
         if (null == BossBlood)
         {
             Trace.LogError("UGUI -- BossBlood创建失败!");
         }
         else
         {
             BloodCanvasNode bcn = new BloodCanvasNode();
             BossBlood.Init(null, 0, BloodStyleType.Boss, bcn);
             BossBlood.SetMaxValue(100);
             BossBlood.SetCurValue(100);
             UpdateBossBloodAndTowerSoldier(null, false);
             BossBlood.SetPositionDirectly_ScreenPoint(OrginalBossBloodPos);
         }
     }
 }
示例#6
0
        /// <summary>
        /// 抖动大血条
        /// </summary>
        private void JitterBossBlood()
        {
            if (!bBossBloodJitter || null == BossBlood)
            {
                return;
            }
            JitterTimer += Time.deltaTime;
            if (JitterTimer > JitterDuration)
            {
                bBossBloodJitter = false;
                JitterTimer      = 0.0f;
                BossBlood.SetPositionDirectly_ScreenPoint(OrginalBossBloodPos);
            }
            Vector3 JitterPos = new Vector3();

            JitterPos.x = UnityEngine.Random.Range(BossBloodJitterX.x, BossBloodJitterX.y) + OrginalBossBloodPos.x;
            JitterPos.y = UnityEngine.Random.Range(BossBloodJitterY.x, BossBloodJitterY.y) + OrginalBossBloodPos.y;
            JitterPos.z = 0;
            BossBlood.SetPositionDirectly_ScreenPoint(JitterPos);
        }
示例#7
0
        private void UpdateBossBloodAndTowerSoldier(EntityView TargetEv, bool bVisible)
        {
            if (bVisible)
            {
                if (TargetEv != null)
                {
                    if (BossBlood != null)
                    {
                        BossBlood.SetBossBloodVisible(bVisible);
                    }

                    if (TargetEv.CampFlag == SPELL.CampFlag.CampFlag_Enemy)
                    {
                        if (TargetEv.Property != null && TargetEv.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SEX) == (int)MONSTER_TYPE.MONSTER_TYPE_TOWER)
                        {
                            EnterTower(TargetEv);
                        }
                        else
                        {
                            ExitTower();
                        }
                    }
                    else
                    {
                        ExitTower();
                    }
                }
            }
            else
            {
                if (BossBlood != null)
                {
                    BossBlood.SetBossBloodVisible(false);
                }

                ExitTower();
            }
        }
示例#8
0
 /// <summary>
 /// 清除所有的组件
 /// </summary>
 public static void DestroyALL()
 {
     if (Movie.GetSingleton <GfxBloodMovie>() == null)
     {
         return;
     }
     ClearCache();
     if (null != m_BloodMap)
     {
         foreach (KeyValuePair <int, GfxBlood> var in m_BloodMap)
         {
             GfxBlood gba = var.Value;
             if (GfxBloodMovie.Instance != null)
             {
                 GfxBloodMovie.Instance.RemoveMovieAS3(gba.Instance);
             }
             gba.Clear();
         }
         CurrentColIndex = 0;
         CurrentRowIndex = 0;
         UnUsedMovieNodeList.Clear();
         m_BloodMap.Clear();
     }
     if (null != BossBlood)
     {
         if (GfxDynamicMovie.Instance != null)
         {
             GfxDynamicMovie.Instance.RemoveMovieAS3(BossBlood.Instance);
         }
         BossBlood.Clear();
         BossBlood             = null;
         CurrentBossBlodHostID = -1;
     }
     BossBloodEntityTable.Clear();
     BossBloodProityList.Clear();
     //GFxWarPauseMenu.BoolEvent -= ChangeBloodSetting;
 }