少年修仙传客户端代码仓库
System/Tip/PlayerDetailWin.cs
@@ -46,14 +46,14 @@
        private float ratio = 1.0f;
        public bool IsCrossServerPlayer {
            get {
                if (PlayerDetails.ServerGroupId == 0)
                {
                    return false;
                }
                return PlayerDetails.ServerGroupId != PlayerDatas.Instance.baseData.ServerGroupId;
            }
        public bool IsCrossServerPlayer {
            get {
                if (PlayerDetails.ServerGroupId == 0)
                {
                    return false;
                }
                return PlayerDetails.ServerGroupId != PlayerDatas.Instance.baseData.ServerGroupId;
            }
        }
        #region Built-in
@@ -96,10 +96,18 @@
        public void ShowPlayerDetail()
        {
            m_ContainerDetail.localPosition = PlayerDetails.targetPos;
            m_PlayerTxt.text = UIHelper.ServerStringTrim(PlayerDetails.PlayerName);
            m_LevelSign.gameObject.SetActive(false);
            m_PlayerTxt.text = UIHelper.ServerStringTrim(PlayerDetails.PlayerName);
            m_LevelSign.gameObject.SetActive(false);
            m_PlayerLevelTxt.gameObject.SetActive(PlayerDetails.LV!=0);
            m_PlayerLevelTxt.text = Language.Get("PlayerDetail_Level", PlayerDetails.LV);
            CheckDetailType();
            if (PlayerDetails.openType == PlayerDetails.OpenType.Assist)
            {
                CheckAssisType();
            }
            else
            {
                CheckDetailType();
            }
            OnPlayerDetailRefresh();
            var _rt = m_ContainerDetail as RectTransform;
@@ -126,73 +134,87 @@
            m_ContainerDetail.localPosition = pos;
        }
        private void CheckAssisType()
        {
            funcTypes.Clear();
            funcTypes.Add(PlayerDetails.DetailType.Kill);
            if (PlayerDetails.IsInTeam == 1)
            {
                funcTypes.Add(PlayerDetails.DetailType.ApplyTeam);
            }
            else
            {
                funcTypes.Add(PlayerDetails.DetailType.ApplyTeam);
                funcTypes.Add(PlayerDetails.DetailType.InviteTeam);
            }
        }
        public void CheckDetailType()
        {
            funcTypes.Clear();
            funcTypes.Add(PlayerDetails.DetailType.ViewEquip);
            funcTypes.Add(PlayerDetails.DetailType.LookFight);
            if (!IsCrossServerPlayer && !CrossServerUtility.IsCrossServer())
            {
                funcTypes.Add(PlayerDetails.IsInTeam == 1 ?
                   PlayerDetails.DetailType.ApplyTeam : PlayerDetails.DetailType.InviteTeam);
                bool _isFriend = m_FriendModel.GetFirendInfo((uint)PlayerDetails.PlayerID, 2) != null;
                bool _isBlack = m_FriendModel.GetFirendInfo((uint)PlayerDetails.PlayerID, 4) != null;
                funcTypes.Add(_isFriend ? PlayerDetails.DetailType.DeleteFriend : PlayerDetails.DetailType.AddFriend);
                funcTypes.Add(_isBlack ? PlayerDetails.DetailType.RemoveBlack : PlayerDetails.DetailType.AddBlack);
                if (!_isBlack)
                {
                    funcTypes.Add(PlayerDetails.DetailType.PrivateChat);
                }
            }
            switch (PlayerDetails.openType)
            {
                case PlayerDetails.OpenType.Default:
                case PlayerDetails.OpenType.Friend:
                    if (IsCrossServerPlayer || CrossServerUtility.IsCrossServer())
                    {
                        return;
                    }
                    break;
                case PlayerDetails.OpenType.Fairy:
                    break;
            }
            switch (PlayerDetails.openType)
            {
                case PlayerDetails.OpenType.Default:
                    if (PlayerDatas.Instance.fairyData.HasFairy)
                    {
                        if (PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanCall) &&
                            PlayerDatas.Instance.fairyData.GetMember(PlayerDetails.PlayerID) == null)
                        {
                            funcTypes.Add(PlayerDetails.DetailType.InviteFairy);
                        }
                    }
                    break;
                case PlayerDetails.OpenType.Fairy:
                    PlayerFairyData.FairyMember _mine = PlayerDatas.Instance.fairyData.mine;
                    PlayerFairyData.FairyMember _fairyMember =
                        PlayerDatas.Instance.fairyData.GetMember(m_FairyModel.presentChangeMember);
                    if (_fairyMember != null)
                    {
                        if (PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanJobTitle)
                            && _mine.FamilyLV > _fairyMember.FamilyLV)
                        {
                            funcTypes.Add(PlayerDetails.DetailType.FairyLv);
                        }
                        if (PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanKick)
                            && _mine.FamilyLV > _fairyMember.FamilyLV)
                        {
                            funcTypes.Add(PlayerDetails.DetailType.KickFairy);
                        }
                    }
                    break;
                case PlayerDetails.OpenType.Friend:
                    funcTypes.Remove(PlayerDetails.DetailType.PrivateChat);
                    break;
            funcTypes.Add(PlayerDetails.DetailType.LookFight);
            if (!IsCrossServerPlayer && !CrossServerUtility.IsCrossServer())
            {
                funcTypes.Add(PlayerDetails.IsInTeam == 1 ?
                   PlayerDetails.DetailType.ApplyTeam : PlayerDetails.DetailType.InviteTeam);
                bool _isFriend = m_FriendModel.GetFirendInfo((uint)PlayerDetails.PlayerID, 2) != null;
                bool _isBlack = m_FriendModel.GetFirendInfo((uint)PlayerDetails.PlayerID, 4) != null;
                funcTypes.Add(_isFriend ? PlayerDetails.DetailType.DeleteFriend : PlayerDetails.DetailType.AddFriend);
                funcTypes.Add(_isBlack ? PlayerDetails.DetailType.RemoveBlack : PlayerDetails.DetailType.AddBlack);
                if (!_isBlack)
                {
                    funcTypes.Add(PlayerDetails.DetailType.PrivateChat);
                }
            }
            switch (PlayerDetails.openType)
            {
                case PlayerDetails.OpenType.Default:
                case PlayerDetails.OpenType.Friend:
                    if (IsCrossServerPlayer || CrossServerUtility.IsCrossServer())
                    {
                        return;
                    }
                    break;
                case PlayerDetails.OpenType.Fairy:
                    break;
            }
            switch (PlayerDetails.openType)
            {
                case PlayerDetails.OpenType.Default:
                    if (PlayerDatas.Instance.fairyData.HasFairy)
                    {
                        if (PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanCall) &&
                            PlayerDatas.Instance.fairyData.GetMember(PlayerDetails.PlayerID) == null)
                        {
                            funcTypes.Add(PlayerDetails.DetailType.InviteFairy);
                        }
                    }
                    break;
                case PlayerDetails.OpenType.Fairy:
                    PlayerFairyData.FairyMember _mine = PlayerDatas.Instance.fairyData.mine;
                    PlayerFairyData.FairyMember _fairyMember =
                        PlayerDatas.Instance.fairyData.GetMember(m_FairyModel.presentChangeMember);
                    if (_fairyMember != null)
                    {
                        if (PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanJobTitle)
                            && _mine.FamilyLV > _fairyMember.FamilyLV)
                        {
                            funcTypes.Add(PlayerDetails.DetailType.FairyLv);
                        }
                        if (PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanKick)
                            && _mine.FamilyLV > _fairyMember.FamilyLV)
                        {
                            funcTypes.Add(PlayerDetails.DetailType.KickFairy);
                        }
                    }
                    break;
                case PlayerDetails.OpenType.Friend:
                    funcTypes.Remove(PlayerDetails.DetailType.PrivateChat);
                    break;
            }
        }
@@ -228,12 +250,12 @@
                    }
                    break;
                case PlayerDetails.DetailType.ViewEquip:
                    if (!IsCrossServerPlayer)
                    {
                    if (!IsCrossServerPlayer)
                    {
                        m_RoleParticularModel.ViewRoleEquip(PlayerDetails.PlayerID);
                    }
                    else
                    {
                    else
                    {
                        m_RoleParticularModel.ViewCrossServerPlayerEquip(PlayerDetails.PlayerID);
                    }
                    break;
@@ -270,7 +292,16 @@
                                if (_ok)
                                {
                                    m_TeamModel.RequestExitTeam();
                                    m_TeamModel.RequestApplyForJoin(PlayerDetails.PlayerID);
                                    if (PlayerDetails.openType == PlayerDetails.OpenType.Assist &&
                                    PlayerDetails.IsInTeam == 1)
                                    {
                                        //此处代表队伍ID
                                        m_TeamModel.RequestApplyForJoinByTeam(PlayerDetails.PlayerID);
                                    }
                                    else
                                    {
                                        m_TeamModel.RequestApplyForJoin(PlayerDetails.PlayerID);
                                    }
                                }
                            }
                            );
@@ -287,18 +318,56 @@
                    m_FriendModel.OnClickRemoveBlack((uint)PlayerDetails.PlayerID);
                    break;
                case PlayerDetails.DetailType.LookFight:
                    if (!IsCrossServerPlayer)
                    {
                    if (!IsCrossServerPlayer)
                    {
                        m_RoleParticularModel.ViewRoleFightPower(PlayerDetails.PlayerID);
                    }
                    else
                    {
                        m_RoleParticularModel.ViewCrossPlayerFightPower(PlayerDetails.PlayerID);
                    else
                    {
                        m_RoleParticularModel.ViewCrossPlayerFightPower(PlayerDetails.PlayerID);
                    }
                    break;
                case PlayerDetails.DetailType.InviteFairy:
                    m_FairyModel.SendInviteFairy(PlayerDetails.PlayerID, PlayerDetails.PlayerName);
                    break;
                case PlayerDetails.DetailType.Kill:
                    uint tagetID = 0;
                    //队伍中的攻击目标
                    if (PlayerDetails.IsInTeam == 1)
                    {
                        List<GActor> _list = GAMgr.Instance.GetTypeList(E_ActorClassType.Player);
                        if (_list == null || _list.Count == 0)
                        {
                            break;
                        }
                        foreach(var actor in _list)
                        {
                            var tagetPlayer = actor as GA_Player;
                            if (tagetPlayer.ActorInfo.teamID == PlayerDetails.PlayerID)
                            {
                                tagetID = tagetPlayer.ActorInfo.sid;
                                break;
                            }
                        }
                        if (tagetID == 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        tagetID = (uint)PlayerDetails.PlayerID;
                    }
                    var _hero = PlayerDatas.Instance.hero;
                    var taget = GAMgr.Instance.GetBySID(tagetID);
                    if (taget != null)
                    {
                        _hero.SelectTarget = _hero.LockTarget = taget;
                        GA_Hero.CallLockTargetChanged(_hero.LockTarget.ServerInstID);
                    }
                    break;
            }
        }