Ver código fonte

PK邀请返回主页等于拒绝

lvjincheng 4 anos atrás
pai
commit
4e3a335844

+ 7 - 25
Assets/BowArrow/Scripts/Manager/PopupMgr.cs

@@ -82,31 +82,13 @@ public class PopupMgr : MonoBehaviour
         System.Action cbYes, System.Action cbNo, System.Action cbAutoCancel
     ) {
         GameObject o = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Popups/PKInviteNotice"));
-        Transform item = o.transform.Find("Item");
-        RectTransform itemRTF = item.GetComponent<RectTransform>();
-        item.Find("Avatar/Sprite").GetComponent<Image>().sprite = RoleMgr.GetAvatar(avatarID);
-        item.Find("Name").GetComponent<Text>().text = nickname;
-        item.Find("Tip").GetComponent<Text>().text = tip;
-        item.Find("BtnYes").GetComponent<Button>().onClick.AddListener(() => {
-            AudioMgr.ins.PlayBtn();
-            Destroy(o);
-            if (cbYes != null) cbYes();
-        });
-        item.Find("BtnNo").GetComponent<Button>().onClick.AddListener(() => {
-            AudioMgr.ins.PlayBtn();
-            Destroy(o);
-            if (cbNo != null) cbNo();
-        });
-        Sequence seq = DOTween.Sequence();
-        seq.Append(itemRTF.DOLocalMoveX(itemRTF.localPosition.x + itemRTF.sizeDelta.x, 0.6f));
-        seq.AppendInterval(10f);
-        seq.AppendCallback(() => {
-            if (o) {
-                Destroy(o);
-                if (cbAutoCancel != null) cbAutoCancel();
-            }
-        });
-        seq.SetUpdate(true);
+        PKInviteNotice script = o.AddComponent<PKInviteNotice>();
+        script.SetAvatarSprite(RoleMgr.GetAvatar(avatarID));
+        script.SetNameText(nickname);
+        script.SetTipText(tip);
+        script.eventOnAgree += cbYes;
+        script.eventOnReject += cbNo;
+        script.eventOnAutoDestroy += cbAutoCancel;
     }
 
     public void ShowTipTop(string text) {

+ 8 - 0
Assets/BowArrow/Scripts/Popup.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b7de5513bb6e93e4b846f30190127782
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 67 - 0
Assets/BowArrow/Scripts/Popup/PKInviteNotice.cs

@@ -0,0 +1,67 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+using System;
+using DG.Tweening;
+
+public class PKInviteNotice : MonoBehaviour
+{
+    Transform item;
+    RectTransform itemRTF;
+
+    void Awake() {
+        item = transform.Find("Item");
+        itemRTF = item.GetComponent<RectTransform>();
+        item.Find("BtnYes").GetComponent<Button>().onClick.AddListener(() => {
+            AudioMgr.ins.PlayBtn();
+            agree();
+        });
+         item.Find("BtnNo").GetComponent<Button>().onClick.AddListener(() => {
+            AudioMgr.ins.PlayBtn();
+            reject();
+        });
+        Sequence seq = DOTween.Sequence();
+        seq.Append(itemRTF.DOLocalMoveX(itemRTF.localPosition.x + itemRTF.sizeDelta.x, 0.6f));
+        seq.AppendInterval(10f);
+        seq.AppendCallback(() => {
+            if (this && this.gameObject) Destroy(this.gameObject);
+        });
+        seq.SetUpdate(true);
+    }
+
+    bool hasDoneDestroy = false;
+    void OnDestroy() {
+        if (!hasDoneDestroy) {
+            eventOnAutoDestroy?.Invoke();
+        }
+    }
+
+    void agree() {
+        hasDoneDestroy = true;
+        if (this && this.gameObject) Destroy(this.gameObject);
+        eventOnAgree?.Invoke();
+    }
+
+    void reject() {
+        hasDoneDestroy = true;
+        if (this && this.gameObject) Destroy(this.gameObject);
+        eventOnReject?.Invoke();
+    }
+
+    public Action eventOnAgree;
+    public Action eventOnReject;
+    public Action eventOnAutoDestroy;
+
+    public void SetAvatarSprite(Sprite sprite) {
+        item.Find("Avatar/Sprite").GetComponent<Image>().sprite = sprite;
+    }
+
+    public void SetNameText(string text) {
+        item.Find("Name").GetComponent<Text>().text = text;
+    }
+
+    public void SetTipText(string text) {
+        item.Find("Tip").GetComponent<Text>().text = text;
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Popup/PKInviteNotice.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8ec48f0816f8203489aaf01e96ce5c42
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: