From c0e6cb2a0ce840bd594d05c7e2cf0a185c312fa0 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 20 十一月 2025 21:27:48 +0800
Subject: [PATCH] 262 幻境阁系统-客户端

---
 Main/System/PhantasmPavilion/AvatarCell.cs |  302 ++++++++++++++++++++++++-------------------------
 1 files changed, 148 insertions(+), 154 deletions(-)

diff --git a/Main/System/PhantasmPavilion/AvatarCell.cs b/Main/System/PhantasmPavilion/AvatarCell.cs
index 354704e..dead145 100644
--- a/Main/System/PhantasmPavilion/AvatarCell.cs
+++ b/Main/System/PhantasmPavilion/AvatarCell.cs
@@ -1,54 +1,9 @@
-using System.Collections.Generic;
+using System;
 using UnityEngine;
 
-//澶村儚妯″潡锛堟敮鎸佸抚鍔ㄧ敾鍜岀壒鏁堬級
+//澶村儚妯″潡
 public class AvatarCell : MonoBehaviour
 {
-
-    private void Awake()
-    {
-        LoadPrefab();
-
-    }
-    ImageEx m_BgImage;
-    private ImageEx bgImage
-    {
-        get
-        {
-            if (m_BgImage == null)
-            {
-                m_BgImage = this.GetComponent<ImageEx>("AvatarCell/Img_BG");
-            }
-            return m_BgImage;
-        }
-    }
-
-    ImageEx m_AvatarImage;
-    private ImageEx avatarImage
-    {
-        get
-        {
-            if (m_AvatarImage == null)
-            {
-                m_AvatarImage = this.GetComponent<ImageEx>("AvatarCell/Img_BG/Img_AvatarFrame/GameObject/Img_Avatar");
-            }
-            return m_AvatarImage;
-        }
-    }
-
-    ImageEx m_AvatarFrameImage;
-    private ImageEx avatarFrameImage
-    {
-        get
-        {
-            if (m_AvatarFrameImage == null)
-            {
-                m_AvatarFrameImage = this.GetComponent<ImageEx>("AvatarCell/Img_BG/Img_AvatarFrame");
-            }
-            return m_AvatarFrameImage;
-        }
-    }
-
     ButtonEx m_button;
     public ButtonEx button
     {
@@ -57,66 +12,168 @@
             if (m_button == null)
             {
                 LoadPrefab();
-                m_button = this.GetComponent<ButtonEx>("AvatarCell/Img_BG");
+                m_button = this.GetComponent<ButtonEx>("AvatarCell/Img_FaceBG");
             }
             return m_button;
         }
     }
 
-    UIFrame m_AvatarUIFrame;
-    private UIFrame avatarUIFrame
+    ImageEx m_FaceBGImage;
+    public ImageEx faceBGImage
     {
         get
         {
-            if (m_AvatarUIFrame == null)
+            if (m_FaceBGImage == null)
             {
-                m_AvatarUIFrame = this.GetComponent<UIFrame>("AvatarCell/Img_BG/Img_AvatarFrame/GameObject/Img_Avatar");
+                LoadPrefab();
+                m_FaceBGImage = this.GetComponent<ImageEx>("AvatarCell/Img_FaceBG");
             }
-            return m_AvatarUIFrame;
+            return m_FaceBGImage;
         }
     }
 
-    UIFrame m_AvatarFrameUIFrame;
-    private UIFrame avatarFrameUIFrame
+    EllipseMask m_FaceMask;
+    public EllipseMask faceMask
     {
         get
         {
-            if (m_AvatarFrameUIFrame == null)
+            if (m_FaceMask == null)
             {
-                m_AvatarFrameUIFrame = this.GetComponent<UIFrame>("AvatarCell/Img_BG/Img_AvatarFrame");
+                LoadPrefab();
+                m_FaceMask = this.GetComponent<EllipseMask>("AvatarCell/Img_FaceBG/Mask_Face");
             }
-            return m_AvatarFrameUIFrame;
+            return m_FaceMask;
         }
     }
 
-    UIEffectPlayer m_AvatarUIEffect;
-    private UIEffectPlayer avatarUIEffect
+    UIFrame m_FaceUIFrame;
+    public UIFrame faceUIFrame
     {
         get
         {
-            if (m_AvatarUIEffect == null)
+            if (m_FaceUIFrame == null)
             {
-                m_AvatarUIEffect = this.GetComponent<UIEffectPlayer>("AvatarCell/Img_BG/Img_AvatarFrame/GameObject/Img_Avatar");
+                LoadPrefab();
+                m_FaceUIFrame = this.GetComponent<UIFrame>("AvatarCell/Img_FaceBG/Mask_Face/Img_Face");
             }
-            return m_AvatarUIEffect;
+            return m_FaceUIFrame;
         }
     }
 
-    UIEffectPlayer m_AvatarFrameUIEffect;
-    private UIEffectPlayer avatarFrameUIEffect
+    ImageEx m_FaceImage;
+    public ImageEx faceImage
     {
         get
         {
-            if (m_AvatarFrameUIEffect == null)
+            if (m_FaceImage == null)
             {
-                m_AvatarFrameUIEffect = this.GetComponent<UIEffectPlayer>("AvatarCell/Img_BG/Img_AvatarFrame");
+                LoadPrefab();
+                m_FaceImage = this.GetComponent<ImageEx>("AvatarCell/Img_FaceBG/Mask_Face/Img_Face");
             }
-            return m_AvatarFrameUIEffect;
+            return m_FaceImage;
+        }
+    }
+
+    UIEffectPlayer m_faceSpine;
+    public UIEffectPlayer faceSpine
+    {
+        get
+        {
+            if (m_faceSpine == null)
+            {
+                LoadPrefab();
+                m_faceSpine = this.GetComponent<UIEffectPlayer>("AvatarCell/Img_FaceBG/Mask_Face/Img_Face/Spine_Face");
+            }
+            return m_faceSpine;
+        }
+    }
+
+
+    ImageEx m_FacePicImage;
+    public ImageEx facePicImage
+    {
+        get
+        {
+            if (m_FacePicImage == null)
+            {
+                LoadPrefab();
+                m_FacePicImage = this.GetComponent<ImageEx>("AvatarCell/Img_FaceBG/Img_FacePic");
+            }
+            return m_FacePicImage;
+        }
+    }
+
+    UIFrame m_FacePicUIFrame;
+    public UIFrame facePicUIFrame
+    {
+        get
+        {
+            if (m_FacePicUIFrame == null)
+            {
+                LoadPrefab();
+                m_FacePicUIFrame = this.GetComponent<UIFrame>("AvatarCell/Img_FaceBG/Img_FacePic");
+            }
+            return m_FacePicUIFrame;
+        }
+    }
+
+    UIEffectPlayer m_facePicSpine;
+    public UIEffectPlayer facePicSpine
+    {
+        get
+        {
+            if (m_facePicSpine == null)
+            {
+                LoadPrefab();
+                m_facePicSpine = this.GetComponent<UIEffectPlayer>("AvatarCell/Img_FaceBG/Img_FacePic/Spine_FacePic");
+            }
+            return m_facePicSpine;
+        }
+    }
+
+    RedpointBehaviour m_redpoint;
+    public RedpointBehaviour redpoint
+    {
+        get
+        {
+            if (m_redpoint == null)
+            {
+                LoadPrefab();
+                m_redpoint = this.GetComponent<RedpointBehaviour>("AvatarCell/Img_FaceBG/RedPoint");
+            }
+            return m_redpoint;
         }
     }
 
     GameObject prefab;
+    AvatarModel avatarModel;
+    PhantasmPavilionManager manager { get { return PhantasmPavilionManager.Instance; } }
+    private void Awake()
+    {
+        LoadPrefab();
+    }
 
+    void OnEnable()
+    {
+        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
+    }
+
+    void OnDisable()
+    {
+        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
+    }
+
+    private void PlayerDataRefresh(PlayerDataType type)
+    {
+        if (type == PlayerDataType.Face || type == PlayerDataType.FacePic)
+        {
+            if (avatarModel == null || avatarModel.playerID != PlayerDatas.Instance.baseData.PlayerID)
+                return;
+            InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
+                                                                PlayerDatas.Instance.baseData.face,
+                                                                PlayerDatas.Instance.baseData.facePic));
+        }
+    }
 
     protected void LoadPrefab()
     {
@@ -143,107 +200,44 @@
             prefabRect.sizeDelta = new Vector2(parentRect.rect.width, parentRect.rect.height);
         }
     }
-
     public void InitUI(AvatarModel model)
     {
         if (model == null)
             return;
+        avatarModel = model;
         LoadPrefab();   //瀛樺湪琚嵏杞界殑鍙兘锛岄噸鏂板姞杞�
-        string img = AvatarHelper.GetAvatarBgColorStr(model.avatarID);
-        bgImage.SetSprite(img);
-        InitUI(model.avatarID, model.avatarUIEffectID, model.avatarFrameID, model.avatarFrameUIEffectID);
-    }
 
-    private void InitUI(int avatarID, int avatarUIEffectID, int avatarFrameID, int avatarFrameUIEffectID)
-    {
-        InitAvatarUI(avatarID, avatarUIEffectID);
-        InitAvatarFrameUI(avatarFrameID, avatarFrameUIEffectID);
-    }
+        int faceID = model.faceID;
+        int facePicID = model.facePicID;
+        manager.ShowFace(faceImage, faceSpine, faceUIFrame, faceMask, faceID);
 
-    private void InitAvatarUI(int avatarID, int avatarUIEffectID)
-    {
-        avatarUIEffect?.Stop();
-        avatarUIFrame.enabled = false;
-        if (!PlayerFaceConfig.HasKey(avatarID))
-            return;
+        string str = AvatarHelper.GetAvatarBgColorStr(faceID);
+        faceBGImage.SetSprite(str);
 
-        PlayerFaceConfig config = PlayerFaceConfig.Get(avatarID);
-        string imgStr = config.Image;
-        if (UIFrameMgr.Inst.ContainsDynamicImage(imgStr))
-        {
-            avatarUIFrame.ResetFrame(imgStr);
+        int resourceType = manager.GetResourceType(PhantasmPavilionType.FacePic, facePicID);
+        string resourceValue = manager.GetResourceValue(PhantasmPavilionType.FacePic, facePicID);
+        manager.Show(facePicImage, facePicSpine, facePicUIFrame, resourceType, resourceValue);
 
-            List<UnityEngine.Sprite> spriteList = UIFrameMgr.Inst.GetDynamicImage(imgStr);
-            if (!spriteList.IsNullOrEmpty())
-            {
-                avatarImage.rectTransform.sizeDelta = new Vector2(spriteList[0].rect.width, spriteList[0].rect.height);
-            }
-
-            avatarUIFrame.enabled = true;
-        }
-        else
-        {
-            avatarImage.SetSprite(imgStr);
-            avatarImage.SetNativeSize();
-            avatarUIFrame.enabled = false;
-        }
-
-        if (!EffectConfig.HasKey(avatarUIEffectID))
-            return;
-        avatarUIEffect.effectId = avatarUIEffectID;
-        // avatarUIEffect.loop = true;
-        avatarUIEffect.Play();
-    }
-
-    private void InitAvatarFrameUI(int avatarFrameID, int avatarFrameUIEffectID)
-    {
-        avatarFrameUIEffect?.Stop();
-        avatarFrameUIFrame.enabled = false;
-        if (!PlayerFacePicConfig.HasKey(avatarFrameID))
-            return;
-
-        PlayerFacePicConfig config = PlayerFacePicConfig.Get(avatarFrameID);
-        string imgStr = config.Image;
-        if (UIFrameMgr.Inst.ContainsDynamicImage(imgStr))
-        {
-            avatarFrameUIFrame.ResetFrame(imgStr);
-
-            List<UnityEngine.Sprite> spriteList = UIFrameMgr.Inst.GetDynamicImage(imgStr);
-            if (!spriteList.IsNullOrEmpty())
-            {
-                avatarFrameImage.rectTransform.sizeDelta = new Vector2(spriteList[0].rect.width, spriteList[0].rect.height);
-            }
-
-            avatarFrameUIFrame.enabled = true;
-        }
-        else
-        {
-            avatarFrameImage.SetSprite(imgStr);
-            avatarFrameImage.SetNativeSize();
-            avatarFrameUIFrame.enabled = false;
-        }
-
-        if (!EffectConfig.HasKey(avatarFrameUIEffectID))
-            return;
-        avatarUIEffect.effectId = avatarFrameUIEffectID;
-        // avatarUIEffect.loop = true;
-        avatarUIEffect.Play();
+        faceBGImage.SetNativeSize();
+        faceImage.SetNativeSize();
+        facePicImage.SetNativeSize();
     }
 }
 
 public class AvatarModel
 {
-    public int avatarID { get; private set; }
-    public int avatarFrameID { get; private set; }
-    public int avatarUIEffectID { get; private set; }
-    public int avatarFrameUIEffectID { get; private set; }
-    public float scale { get; private set; }
+    public int playerID { get; private set; }
+    public int faceID { get; private set; }
+    public int facePicID { get; private set; }
+    public int redpointID { get; private set; }
+    public Action clickAction { get; private set; }
 
-    public AvatarModel(int avatarID, int avatarFrameID, int avatarUIEffectID = 0, int avatarFrameUIEffectID = 0)
+    public AvatarModel(int playerID, int faceID, int facePicID, int redpointID = 0, Action clickAction = null)
     {
-        this.avatarID = avatarID;
-        this.avatarFrameID = avatarFrameID;
-        this.avatarUIEffectID = avatarUIEffectID;
-        this.avatarFrameUIEffectID = avatarFrameUIEffectID;
+        this.playerID = playerID;
+        this.faceID = faceID;
+        this.facePicID = facePicID;
+        this.redpointID = redpointID;
+        this.clickAction = clickAction;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0