/// <summary> /// 重设战斗状态的标志 /// </summary> public void ResetBattleState(BattleStatusType eType) { // 获取状态对应的引用计数 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)) { mCurBattleState = FlagOperate.RemoveFlag(mCurBattleState, (int)eType); //kActor.BattleStateRefNum[i] = 0; } else { Debug.LogError("角色状态数值溢出 : " + eType); } }
/// <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); }