Browse Source

好友提示优化

lvjincheng 3 years ago
parent
commit
ba7020857f

+ 155 - 3
Assets/BowArrow/Prefabs/Views/Home/HomeView.prefab

@@ -819,6 +819,7 @@ RectTransform:
   m_Children:
   - {fileID: 1719699140694123034}
   - {fileID: 6833515262187554531}
+  - {fileID: 1831511735074529250}
   m_Father: {fileID: 6345266662986624358}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -2234,6 +2235,81 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_ShowMaskGraphic: 0
+--- !u!1 &3436198305830861175
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2191648691134315842}
+  - component: {fileID: 4205608857403987844}
+  - component: {fileID: 8470612111424971656}
+  m_Layer: 5
+  m_Name: IconTip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &2191648691134315842
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3436198305830861175}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7088535622007955604}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 61, y: 4}
+  m_SizeDelta: {x: 55, y: 55}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4205608857403987844
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3436198305830861175}
+  m_CullTransparentMesh: 1
+--- !u!114 &8470612111424971656
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3436198305830861175}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: a745329c4986d574c9aa1f52ee061bcc, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
 --- !u!1 &3458655398071026365
 GameObject:
   m_ObjectHideFlags: 0
@@ -2343,7 +2419,7 @@ RectTransform:
   m_GameObject: {fileID: 3572727387850533746}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1.3333334, y: 1.3333334, z: 1.3333334}
+  m_LocalScale: {x: 1.125, y: 1.125, z: 1.125}
   m_Children: []
   m_Father: {fileID: 7022781866214807768}
   m_RootOrder: 0
@@ -2621,6 +2697,7 @@ RectTransform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children:
   - {fileID: 324734801787147732}
+  - {fileID: 2191648691134315842}
   m_Father: {fileID: 6345266662986624358}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -5207,6 +5284,81 @@ MonoBehaviour:
   layoutRebuildObject: {fileID: 0}
   textFormatArgs: []
   languageFontSizes: []
+--- !u!1 &6426432536002113428
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1831511735074529250}
+  - component: {fileID: 12798494001782839}
+  - component: {fileID: 6284278557349070726}
+  m_Layer: 5
+  m_Name: IconTip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &1831511735074529250
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6426432536002113428}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6653081859108494899}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 61, y: 4}
+  m_SizeDelta: {x: 55, y: 55}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &12798494001782839
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6426432536002113428}
+  m_CullTransparentMesh: 1
+--- !u!114 &6284278557349070726
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6426432536002113428}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: a745329c4986d574c9aa1f52ee061bcc, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
 --- !u!1 &7022781866214807764
 GameObject:
   m_ObjectHideFlags: 0
@@ -5334,9 +5486,9 @@ MonoBehaviour:
   - {fileID: 451468543756707959}
   - {fileID: 2327358673084871372}
   btnConnectBow: {fileID: 2317149572522622741}
-  btnConnectArrow: {fileID: 6288584047694721992}
-  friendTip: {fileID: 4438778746566285403}
   gameVersion: {fileID: 2994818153031738891}
+  friendBarTipTop: {fileID: 6426432536002113428}
+  friendBarTipBottom: {fileID: 3436198305830861175}
 --- !u!1 &7407283733132541178
 GameObject:
   m_ObjectHideFlags: 0

+ 2 - 1
Assets/BowArrow/Scripts/Manager/PopupMgr.cs

@@ -92,7 +92,7 @@ public class PopupMgr : MonoBehaviour
         script.eventOnAutoDestroy += cbAutoCancel;
     }
 
-    public void ShowTipTop(string text) {
+    public GameObject ShowTipTop(string text) {
         Transform tipGroup = popupRoot.Find("TipGroupTop");
         ClearAllTipTop();
         GameObject tipPrefab = tipGroup.Find("Tip").gameObject;
@@ -117,6 +117,7 @@ public class PopupMgr : MonoBehaviour
             }
         });
         seq.SetUpdate(true);
+        return tipObj;
     }
     public void ClearAllTipTop() {
         Transform tipGroup = popupRoot.Find("TipGroupTop");

+ 6 - 1
Assets/BowArrow/Scripts/Network/UserPlayer.cs

@@ -196,7 +196,12 @@ public class UserPlayer : JCEntity
     }
 
     public void onRequestAddFriend() {
-        PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("tip_friend-receive-request"));
+        GameObject tipTopObject = PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("tip_friend-receive-request"));
+        tipTopObject.AddComponent<UnityEngine.UI.Button>().onClick.AddListener(() => {
+            if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name != "Home") return;
+            ViewMgr.Instance.ShowView<FriendView>("setFirstBtnTabsIndex", 1);
+            GameObject.Destroy(tipTopObject);
+        });
         tempData.hasFriendRequest = true;
     }
 

+ 17 - 1
Assets/BowArrow/Scripts/View/Home/FriendView.cs

@@ -22,6 +22,13 @@ public class FriendView : JCUnityLib.ViewBase, MenuBackInterface
         InitSearchPlayerBox();
     }
 
+    [NonSerialized] public int firstBtnTabsIndex = 0;
+    public override void OnShowView(object[] args)
+    {
+        if (args.Length == 2 && (string)args[0] == "setFirstBtnTabsIndex") 
+            firstBtnTabsIndex = (int)args[1];
+    }
+
     void Start()
     {
         PersistenHandler.ins?.menuBackCtr.views.Add(this);
@@ -30,7 +37,7 @@ public class FriendView : JCUnityLib.ViewBase, MenuBackInterface
             UserPlayer.ins.tempData.onUpdate += onUserPlayerTempDataUpdate;
             onUserPlayerTempDataUpdate();
         }
-        SetBtnTabSelected(btnTabs[0]);
+        SetBtnTabSelected(btnTabs[firstBtnTabsIndex]);
     }
 
     void OnDestroy() {
@@ -38,6 +45,9 @@ public class FriendView : JCUnityLib.ViewBase, MenuBackInterface
         if (UserPlayer.ins != null) {
             UserPlayer.ins.tempData.onUpdate -= onUserPlayerTempDataUpdate;
         }
+        if (_hasDeleteAnyFriends || _hasAcceptAnyFriends) {
+            HomeView.ins?.RefreshFriendBarAccordingCurrentBar();
+        }
     }
 
     public bool OnMenuBack() {
@@ -66,6 +76,8 @@ public class FriendView : JCUnityLib.ViewBase, MenuBackInterface
         GameObject GetMyFriendItemPrefab() {
             return GetMyFriendItemParent().Find("Item").gameObject;
         }
+        //是否删除过好友,该记录可帮助提醒homeView的好友栏刷新
+        bool _hasDeleteAnyFriends = false;
         void EnterMyFriendBox() {
             myFriendBox.SetActive(true);
             for (int i = 1; i < GetMyFriendItemParent().childCount; i++) {
@@ -95,6 +107,7 @@ public class FriendView : JCUnityLib.ViewBase, MenuBackInterface
                             AudioMgr.ins.PlayBtn();
                             Action<bool> cb = delegate(bool res) {
                                 if (res) {
+                                    _hasDeleteAnyFriends = true;
                                     Destroy(o);
                                 }
                             };
@@ -122,6 +135,8 @@ public class FriendView : JCUnityLib.ViewBase, MenuBackInterface
         GameObject GetFriendRequestItemPrefab() {
             return GetFriendRequestItemParent().Find("Item").gameObject;
         }
+        //是否同意过好友添加请求,该记录可帮助提醒homeView的好友栏刷新
+        bool _hasAcceptAnyFriends = false;
         void EnterFriendRequestBox() {
             friendRequestBox.SetActive(true);
             for (int i = 1; i < GetFriendRequestItemParent().childCount; i++) {
@@ -159,6 +174,7 @@ public class FriendView : JCUnityLib.ViewBase, MenuBackInterface
                             AudioMgr.ins.PlayBtn();
                             UserPlayer.ins.call("friendComp.decideAddFriend", new object[]{true, otherID});
                             Destroy(o);
+                            _hasAcceptAnyFriends = true;
                             UserPlayer.ins.tempData.hasFriendRequest = GetFriendRequestItemParent().childCount - 1 > 1;
                         });
                     }

+ 33 - 12
Assets/BowArrow/Scripts/View/Home/HomeView.cs

@@ -13,9 +13,9 @@ public class HomeView : JCUnityLib.ViewBase
     [SerializeField] Text nickNameText;
     [SerializeField] GameObject[] genders;
     [SerializeField] GameObject btnConnectBow;
-    [SerializeField] GameObject btnConnectArrow;
-    [SerializeField] GameObject friendTip;
     [SerializeField] Text gameVersion;
+    [SerializeField] GameObject friendBarTipTop;
+    [SerializeField] GameObject friendBarTipBottom;
     public static HomeView ins;
 
     void Awake() {
@@ -54,14 +54,7 @@ public class HomeView : JCUnityLib.ViewBase
     }
 
     void Update() {
-        if (UserPlayer.ins != null) {
-            if (UserPlayer.ins.tempData.hasFriendRequest && !friendTip.activeSelf) {
-                friendTip.SetActive(true);
-            }
-            else if (!UserPlayer.ins.tempData.hasFriendRequest && friendTip.activeSelf) {
-                friendTip.SetActive(false);
-            }
-        }
+        UpdateCheckRenderFriendTip();
         UpdateBtnForConnect();
     }
 
@@ -271,12 +264,20 @@ public class HomeView : JCUnityLib.ViewBase
         if (flag_SwapFriendAndRank == 0) {
             flag_SwapFriendAndRank = 1;
             transform.Find("FriendBar/FrameBtnTop").GetComponentInChildren<TextAutoLanguage2>().SetTextKey("rank_title");
-            StartCoroutine(RefreshFriendRankBar());
         } else if (flag_SwapFriendAndRank == 1) {
             flag_SwapFriendAndRank = 0;
             transform.Find("FriendBar/FrameBtnTop").GetComponentInChildren<TextAutoLanguage2>().SetTextKey("friend_title");
-            StartCoroutine(RefreshFriendBar());
         }
+        RefreshFriendBarAccordingCurrentBar();
+    }
+
+    //根据栏目类型,调用对应的接口请求
+    public void RefreshFriendBarAccordingCurrentBar()
+    {
+        if (flag_SwapFriendAndRank == 0)
+            StartCoroutine(RefreshFriendBar());
+        else if (flag_SwapFriendAndRank == 1)
+            StartCoroutine(RefreshFriendRankBar());
     }
 
     public void OnClick_ShowDetail() {
@@ -286,5 +287,25 @@ public class HomeView : JCUnityLib.ViewBase
         } else if (flag_SwapFriendAndRank == 1) {
             ViewMgr.Instance.ShowView<RankView>();
         }
+    }   
+
+    //检测是否需要提示有人加我好友
+    bool _old_hasFriendRequest = false;
+    int _old_flag_SwapFriendAndRank = 0;
+    void UpdateCheckRenderFriendTip()
+    {
+        if (UserPlayer.ins == null) return;
+        if (
+            UserPlayer.ins.tempData.hasFriendRequest == _old_hasFriendRequest &&
+            flag_SwapFriendAndRank == _old_flag_SwapFriendAndRank
+        ) return;
+        _old_hasFriendRequest = UserPlayer.ins.tempData.hasFriendRequest;
+        _old_flag_SwapFriendAndRank = flag_SwapFriendAndRank;
+        friendBarTipTop.SetActive(
+            flag_SwapFriendAndRank == 1 &&
+            UserPlayer.ins.tempData.hasFriendRequest);
+        friendBarTipBottom.SetActive(
+            flag_SwapFriendAndRank == 0 &&
+            UserPlayer.ins.tempData.hasFriendRequest);
     }
 }