Example #1
0
        /// <summary>
        /// 增加战斗状态的标志
        /// </summary>
        public void AddBattleState(BattleStatusType eType)
        {
            if (mOwner == null)
            {
                return;
            }

            // 获取状态对应的引用计数
            int tmpType = (int)eType;
            int i       = 0;

            for (; i < mBattleStateRefNum.GetLength(0); ++i)
            {
                tmpType = tmpType >> 1;
                if (tmpType == 0)
                {
                    break;
                }
            }

            if (i < mBattleStateRefNum.GetLength(0))
            {
                // 增加角色状态的flag
                if (mBattleStateRefNum[i] < 255)
                {
                    mBattleStateRefNum[i] += 1;
                }

                mCurBattleState = FlagOperate.AddFlag(mCurBattleState, (int)eType);
            }
            else
            {
                Debug.LogError("角色状态数值溢出 : " + eType);
            }
        }
Example #2
0
        /// <summary>
        /// 设置角色是否可见
        /// </summary>
        /// <param name="visible">If set to <c>true</c> b visible.</param>
        /// <param name="ignoreEffect">If set to <c>true</c> ignore effect.</param>
        public void SetActorVisible(bool visible, bool ignore_effect, bool force_show_headinfo, VisiblePriority priority)
        {
            if (visible)
            {
                m_VisiblePriorityBits = FlagOperate.RemoveFlag(m_VisiblePriorityBits, (int)(1 << (int)priority));

                for (int i = (int)priority + 1; i < (int)VisiblePriority.MAX; ++i)
                {
                    if (FlagOperate.HasFlag(m_VisiblePriorityBits, 1 << i))
                    {
                        return;
                    }
                }
            }
            else
            {
                m_VisiblePriorityBits = FlagOperate.AddFlag(m_VisiblePriorityBits, (int)(1 << (int)priority));
            }

            if (visible)
            {
                if (mVisibleMode == EVisibleMode.Visible)
                {
                    return;
                }
                mVisibleMode = EVisibleMode.Visible;
                mHasShow     = true;
                mOwner.mAvatarCtrl.SetVisible(true);
            }
            else
            {
                if (mVisibleMode == EVisibleMode.Invisible)
                {
                    return;
                }
                mVisibleMode = EVisibleMode.Invisible;
                mOwner.mAvatarCtrl.SetVisible(false);
            }

            if (force_show_headinfo)
            {
                if (InstanceManager.Instance.InstanceInfo != null && InstanceManager.Instance.InstanceInfo.mWarSubType == GameConst.WAR_SUBTYPE_BATTLE_FIELD)
                {
                    mOwner.ShowTextBehaviors(false);
                }
                else
                {
                    mOwner.ShowTextBehaviors(true);
                }
            }
            else
            {
                if (InstanceManager.Instance.InstanceInfo != null && InstanceManager.Instance.InstanceInfo.mWarSubType == GameConst.WAR_SUBTYPE_BATTLE_FIELD)
                {
                    mOwner.ShowTextBehaviors(false);
                }
                else
                {
                    mOwner.ShowTextBehaviors(visible);
                }
            }

            mOwner.GetBehavior <ShadowBehavior>().OnVisibleChange(mVisibleMode);

            if (mOwner.SkillEffectPlayer != null && ignore_effect == false)
            {
                mOwner.SkillEffectPlayer.ClearEffects();
                mOwner.SkillEffectPlayer.IsEnable = visible;
            }

            if (mOwner.StateEffectPlayer != null && ignore_effect == false)
            {
                mOwner.StateEffectPlayer.ClearEffects();
                mOwner.StateEffectPlayer.IsEnable = visible;
            }

            mOwner.OnBecomeVisible(visible);
        }