From 5f728e2633e8e20ebafc4e534fe7e7362362c839 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 04 十二月 2025 11:58:07 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/HeroUI/HeroScenePosCell.cs |   85 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 81 insertions(+), 4 deletions(-)

diff --git a/Main/System/HeroUI/HeroScenePosCell.cs b/Main/System/HeroUI/HeroScenePosCell.cs
index 29ebb39..79090b5 100644
--- a/Main/System/HeroUI/HeroScenePosCell.cs
+++ b/Main/System/HeroUI/HeroScenePosCell.cs
@@ -1,5 +1,9 @@
+using System;
+using System.Linq;
+using Cysharp.Threading.Tasks;
 using UnityEngine;
 using UnityEngine.UI;
+using System.Collections.Generic;
 
 //甯冮樀涓殑 姝﹀皢瑙掕壊
 public class HeroScenePosCell : MonoBehaviour
@@ -12,19 +16,92 @@
     [SerializeField] Text lvText;
     [SerializeField] UIHeroController heroModel;
     [SerializeField] Image posCircleImg;
+    [SerializeField] UIAlphaTween suggestForm;
+    [SerializeField] DragItem dragObj;
+    [SerializeField] Transform objForfly;  //鐐瑰嚮椋炲叆鐨勬椂鍊欑殑鏄鹃殣鎺у埗
 
-    public void Display(string guid)
+
+    public void Display(string guid, int index, bool isFly = false, bool showSuggest = false)
     {
         var hero = HeroManager.Instance.GetHero(guid);
+        this.transform.localScale = Vector3.one;
 
-        lvText.text = Language.Get("L1094") + hero.heroLevel.ToString();
+        lvText.text = Language.Get("L1099", hero.heroLevel);
         var heroConfig = hero.heroConfig;
-        countryImg.SetSprite("herocountry" + heroConfig.Country);
+        countryImg.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country));
         heroModel.Create(heroConfig.SkinIDList[hero.SkinIndex], heroConfig.UIScale);
 
-
         nameText.text = hero.breakLevel == 0 ? heroConfig.Name : Language.Get("herocardbreaklv", heroConfig.Name, hero.breakLevel);
+        posCircleImg.SetSprite("heroposcircle" + heroConfig.Quality);
 
+        //涓嶆槸鎺ㄨ崘浣嶅垯鎻愮ず
+        //  if (heroConfig.Position == 1 && TeamConst.TeamPos2Array.Contains(index) ||
+        //     heroConfig.Position == 2 && TeamConst.TeamPos1Array.Contains(index))
+        if (showSuggest)
+        {
+            suggestForm.SetActive(true);
+            jobTip.text = HeroUIManager.Instance.GetJobName(heroConfig.Class);
+            posTip.text = Language.Get("heroAtkDistType" + heroConfig.Position);
+        }
+        else
+        {
+            suggestForm.SetActive(false);
+        }
+
+        dragObj.pos = index;
+        dragObj.onEndDragEvent -= SwitchPos;
+        dragObj.onEndDragEvent += SwitchPos;
+        dragObj.canvas.sortingLayerID =  dragObj.parentCanvas.sortingLayerID;
+        dragObj.canvas.sortingOrder = dragObj.parentCanvas.sortingOrder + index + 1;
+
+        heroBtn.AddListener(() =>
+        {
+            var team = TeamManager.Instance.GetTeam(HeroUIManager.Instance.selectTeamType);
+            team.RemoveHero(index);
+            //閫氱煡鍒锋柊锛堜笅闃碉級
+            HeroUIManager.Instance.NotifyOnTeamPosChangeEvent(new List<int>() { index }, -1, Vector3.zero);
+
+        });
+
+        if (isFly)
+        {
+            //鐐瑰嚮椋炲叆 寤惰繜鏄剧ず
+            objForfly.SetActive(false);
+            DelayShow();
+        }
+        else
+        {
+            objForfly.SetActive(true);
+        }
+    }
+
+    void SwitchPos(int pos1, int pos2)
+    {
+        Debug.Log("浜ゆ崲浣嶇疆:" + pos1 + "   " + pos2);
+        var team = TeamManager.Instance.GetTeam(HeroUIManager.Instance.selectTeamType);
+        if (pos2 == -1)
+        {
+            //涓嬮樀
+            team.RemoveHero(pos1);
+            HeroUIManager.Instance.NotifyOnTeamPosChangeEvent(new List<int>() { pos1 }, -2, Vector3.zero);
+        }
+        else if (pos1 == pos2)
+        { 
+            HeroUIManager.Instance.NotifyOnTeamPosChangeEvent(new List<int>() { pos1 }, -2, Vector3.zero);
+        }
+        else
+        {
+            //閫氱煡鍒锋柊
+            team.SwapPosition(pos1, pos2);
+            HeroUIManager.Instance.NotifyOnTeamPosChangeEvent(new List<int>() { pos1, pos2 }, -2, Vector3.zero);
+        }
+    }
+
+    async UniTask DelayShow()
+    {
+        //寤惰繜0.5绉掓樉绀�
+        await UniTask.Delay(TimeSpan.FromSeconds(HeroUIManager.clickFlyPosTime));
+        objForfly.SetActive(true);
     }
 }
 

--
Gitblit v1.8.0