예제 #1
0
파일: UBlood.cs 프로젝트: zwong91/Titan
        private void ResetData()
        {
            m_MaxValue   = 100;
            m_CurValue   = 100;
            m_TempValue  = 0;
            m_MpValue    = 100;
            m_MpMaxValue = 100;
            m_CamType    = 0;
            m_Level      = 0;
            m_RoleName   = "";

            m_StyleInfo = null;
            m_Entity    = null;
            m_Sequence  = null;

            m_BloodType = BloodStyleType.Player;

            m_bDead    = false;
            m_bVisible = true;
            m_bEnable  = true;
            m_IsOutOfVisibleDistance = false;
            m_IsClosed     = false;
            m_FinalVisible = true;

            if (null != m_BloodImg)
            {
                m_BloodImg.fillAmount = 1;
            }
            if (null != m_BloodTempImg)
            {
                m_BloodTempImg.fillAmount = 0;
            }
            if (null != m_BloodShieldImg)
            {
                m_BloodShieldImg.fillAmount = 0;
            }
            if (null != m_MpImg)
            {
                m_MpImg.fillAmount = 1;
            }
            if (null != m_RoleNameTex)
            {
                m_RoleNameTex.text = "";
            }
            if (null != m_LevelTex)
            {
                m_LevelTex.text = "";
            }
            if (null != m_BloodNumTex)
            {
                m_BloodNumTex.text = "";
            }

            foreach (UBlood_DebuffProgressBar bar in DebuffList)
            {
                bar.Clear();
            }
        }
예제 #2
0
파일: UBlood.cs 프로젝트: zwong91/Titan
        public void Init(U3D_Render.EntityView ev, int cam, BloodStyleType bt, BloodCanvasNode node)
        {
            ResetData();
            m_Entity = ev;
            if (!U3D_Render.EntityView.isNullOrEmpty(ev))
            {
                m_ID = m_Entity.ID;
            }
            m_BloodType  = bt;
            m_CanvasNode = node;

            m_StyleInfo = UBloodManager.Instance.m_BloodStyleList.Find((x) => { return(x.bloodType == m_BloodType); });

            if (null == m_StyleInfo || null == m_BloodImg)
            {
                return;
            }

            bInit = true;

            m_BloodInfoVisible = UBloodManager.Instance.NumInfoVisible;


            if (null != m_BloodNumTex)
            {
                m_BloodNumTex.text = "";
                m_BloodNumTex.gameObject.SetActive(m_BloodInfoVisible);
            }

            if (m_BillBoard)
            {
                m_BillBoard.gameObject.SetActive(m_FinalVisible);
            }

            if (m_BloodType == BloodStyleType.Boss)
            {
                this.gameObject.SetActive(m_bVisible);
            }

            if (m_Sequence == null)
            {
                m_Sequence = DOTween.Sequence();
            }

            SetCampType(cam);

            if (m_Entity != null)
            {
                CreatBillBoard();
                ChangeCanvasNode();
            }
        }
예제 #3
0
        /// <summary>
        /// 实例化大血条
        /// </summary>
        /// <returns></returns>
        private UBlood InstanceUBossBlood()
        {
            BloodStyleInfo bloodInfo = m_BloodStyleList.Find((x) => { return(x.bloodType == BloodStyleType.Boss); });

            if (null != bloodInfo && null != bloodInfo.bloodRes && null != bossBloodParent)
            {
                GameObject    go = bloodInfo.bloodRes.InstanceMainRes();
                RectTransform rt = go.transform.GetComponent <RectTransform>();
                rt.SetParent(bossBloodParent, false);

                UBlood blood = go.GetComponent <UBlood>();
                blood.resNode = bloodInfo.bloodRes;
                return(blood);
            }
            return(null);
        }
예제 #4
0
        /// <summary>
        /// 实例化普通血条
        /// </summary>
        /// <param name="entityType">实体类型</param>
        /// <param name="isHero">是否主角</param>
        /// <param name="bcn">血条节点数据</param>
        /// <returns></returns>
        private UBlood InstanceUBlood(BloodStyleType type, BloodCanvasNode bcn)
        {
            //大血条返回null,这个方法只创常规血条
            if (type == BloodStyleType.Boss)
            {
                return(null);
            }

            BloodStyleInfo bloodInfo = m_BloodStyleList.Find((x) => { return(x.bloodType == type); });

            if (null != bloodInfo && null != bloodInfo.bloodRes)
            {
                GameObject go = bloodInfo.bloodRes.InstanceMainRes();
                if (RectPosition(go, bcn))
                {
                    UBlood blood = go.GetComponent <UBlood>();
                    blood.resNode = bloodInfo.bloodRes;
                    return(blood);
                }
            }
            return(null);
        }
예제 #5
0
        private Vector2[] m_curIndexArry = new Vector2[3];  //暂时只显示三种类型,Player、Buliding、Monster,大血条不用建格子

        /// <summary>
        /// 分配血条格子,同一类型放一起,左下为起点, 如:最下面3行放人物的,再依次往上4行放建筑的,最上面放怪物
        /// </summary>
        /// <param name="type"></param>
        /// <param name="bcn"></param>
        /// <returns></returns>
        private bool AllocBloodPos(BloodStyleType type, ref BloodCanvasNode bcn)
        {
            int            nTypeIndex = (int)type;
            BloodStyleInfo bloodInfo  = m_BloodStyleList.Find((x) => { return(x.bloodType == type); });

            if (null != bloodInfo)
            {
                Vector2 bloodSize = bloodInfo.bloodSize;
                bcn.isValid = false;
                //先查缓存格子列有没有
                if (m_unUseCanvasNodeMap.ContainsKey(type) && m_unUseCanvasNodeMap[type].Count > 0)
                {
                    BloodCanvasNode bc = m_unUseCanvasNodeMap[type].Dequeue();
                    bcn.RowIndex = bc.RowIndex;
                    bcn.ColIndex = bc.ColIndex;
                    bcn.start    = bc.start;
                    bcn.end      = bc.end;
                    bcn.vSize    = bc.vSize;
                    bcn.scale    = bc.scale;
                    bcn.isValid  = true;
                }
                else
                {
                    if (m_curIndexArry[nTypeIndex].x > MaxCellRowCountList[nTypeIndex])
                    {
                        bcn.isValid = false;
                        return(false);
                    }

                    bcn = new BloodCanvasNode();

                    bcn.start.x = bloodInfo.bloodSize.x * m_curIndexArry[nTypeIndex].y;
                    float offset = 0;
                    if (nTypeIndex > 0)
                    {
                        for (int i = 0; i < nTypeIndex; i++)
                        {
                            BloodStyleInfo info = m_BloodStyleList.Find((x) => { return(x.bloodType == (BloodStyleType)i); });
                            if (info != null)
                            {
                                offset += MaxCellRowCountList[i] * info.bloodSize.y;
                            }
                        }
                    }
                    bcn.start.y = offset + bloodInfo.bloodSize.y * m_curIndexArry[nTypeIndex].x;

                    bcn.end.x    = bcn.start.x + bloodSize.x;
                    bcn.end.y    = bcn.start.y + bloodSize.y;
                    bcn.vSize    = bloodSize;
                    bcn.scale    = bloodInfo.bloodScale;
                    bcn.RowIndex = (int)m_curIndexArry[nTypeIndex].x;
                    bcn.ColIndex = (int)m_curIndexArry[nTypeIndex].y;
                    //分配下一次的格子索引
                    m_curIndexArry[nTypeIndex].y++;
                    if (m_curIndexArry[nTypeIndex].y == (int)(bloodRenderTextureWidth / bloodInfo.bloodSize.x))
                    {
                        m_curIndexArry[nTypeIndex].x++;
                        m_curIndexArry[nTypeIndex].y = 0;
                    }
                    bcn.isValid = true;
                }
                return(true);
            }
            bcn.isValid = false;
            return(false);
        }