浏览代码

Merge branch 'master' of http://192.168.123.2:3000/ck/XiuXianGame

zg 22 小时之前
父节点
当前提交
9f29b236db

+ 27 - 21
Assets/Scripts/GameLogic/Bag/BagController.cs

@@ -132,8 +132,8 @@ namespace GameLogic.Bag
         public bool AddItem(int itemId, long count, string guid = "")
         {
             string guidStr = string.IsNullOrEmpty(guid) ? itemId.ToString() : guid;
-            
-            if(count <= 0)
+
+            if (count <= 0)
                 return false;
 
             ItemInfo item = GetItemInfo(itemId, guidStr);
@@ -178,15 +178,16 @@ namespace GameLogic.Bag
                 return false;
             }
 
-            if( count <= 0 )
+            if (count <= 0)
                 return false;
 
 
             //法宝
             if (item.config.itemTag == 11)
             {
-                AccountFileInfo.FaBaoData faaData =  AccountFileInfo.Instance.playerData.AllFaBaoDatas.FirstOrDefault(f =>
-                    f.id == item.config.associateVlaue[1]);
+                AccountFileInfo.FaBaoData faaData = AccountFileInfo.Instance.playerData.AllFaBaoDatas.FirstOrDefault(
+                    f =>
+                        f.id == item.config.associateVlaue[1]);
                 if (faaData != null)
                 {
                     return AddItem(item.config.associateVlaue[0], item.config.associateVlaue[2]);
@@ -194,53 +195,57 @@ namespace GameLogic.Bag
                 else
                 {
                     faaData = new AccountFileInfo.FaBaoData();
-                    faaData.id =item.config.associateVlaue[1];
+                    faaData.id = item.config.associateVlaue[1];
                     faaData.level = 1;
                     faaData.useIndex = -1;
                     AccountFileInfo.Instance.playerData.AllFaBaoDatas.Add(faaData);
                     FaBaoInfo faBaoInfo = new FaBaoInfo(faaData);
                     PlayerManager.Instance.FaBaoControl.AddFaBao(faBaoInfo);
                     return true;
-
                 }
-              
             }
             //功法
-            else if  (item.config.itemTag == 13)
+            else if (item.config.itemTag == 13)
             {
-                AccountFileInfo.SkillData skillData =  AccountFileInfo.Instance.playerData.AllSkillDatas.FirstOrDefault(s =>
-                    s.id == item.config.associateVlaue[1]);
+                AccountFileInfo.SkillData skillData = AccountFileInfo.Instance.playerData.AllSkillDatas.FirstOrDefault(
+                    s =>
+                        s.id == item.config.associateVlaue[1]);
                 if (skillData != null)
                 {
-                     return AddItem(item.config.associateVlaue[0], item.config.associateVlaue[2]);
+                    return AddItem(item.config.associateVlaue[0], item.config.associateVlaue[2]);
                 }
                 else
                 {
                     skillData = new AccountFileInfo.SkillData();
-                    skillData.id =item.config.associateVlaue[1];
+                    skillData.id = item.config.associateVlaue[1];
                     skillData.star = 1;
                     skillData.level = 1;
                     skillData.useIndex = -1;
                     AccountFileInfo.Instance.playerData.AllSkillDatas.Add(skillData);
-                    
+
                     SkillInfo skillInfo = new SkillInfo(skillData);
                     skillInfo.index = skillData.useIndex;
                     PlayerManager.Instance.GongFaControl.AddSkillInfo(skillInfo);
                     return true;
                 }
-
-              
-
             }
-            else if  (item.config.itemTag == 9)
+            else if (item.config.itemTag == 2)
+            {
+                PlayerManager.Instance.myHero.heroData.exp += count;
+                AccountFileInfo.Instance.SavePlayerData();
+                return true;
+            }
+            else if (item.config.itemTag == 9)
             {
                 return AddItem(item.config.associateVlaue[0], item.config.associateVlaue[1]);
             }
-            
+
             item.count += count;
 
-            EventManager.Instance.Dispatch(CustomEventType.ItemUpdate, new ItemUpdateData() { ItemInfo = item, Count = (int)count });
-            EventManager.Instance.Dispatch(CustomEventType.AddItem, new ItemUpdateData() { ItemInfo = item, Count = (int)count });
+            EventManager.Instance.Dispatch(CustomEventType.ItemUpdate,
+                new ItemUpdateData() { ItemInfo = item, Count = (int)count });
+            EventManager.Instance.Dispatch(CustomEventType.AddItem,
+                new ItemUpdateData() { ItemInfo = item, Count = (int)count });
             AccountFileInfo.Instance.SaveItemData(item);
 
             return true;
@@ -414,6 +419,7 @@ namespace GameLogic.Bag
             {
                 return false;
             }
+
             if (item.config.ID <= 0)
             {
                 return false;

+ 1 - 1
Assets/Scripts/GameUI/UI/AppBarPanel/AppBarPanel.cs

@@ -36,7 +36,7 @@ namespace Fort23.Mono
         private void DivineSensePointChange(IEventData e)
         {
             Text_divineSensePoint.text =
-                $"{AccountFileInfo.Instance.playerData.divineSensePoint}/{PlayerManager.Instance.gameConstantConfig.DetectEventCount}";
+                $"{(int)AccountFileInfo.Instance.playerData.divineSensePoint}/{PlayerManager.Instance.gameConstantConfig.DetectEventCount}";
         }
 
         public override void AddButtonEvent()

+ 1 - 0
Assets/Scripts/GameUI/UI/CombatPanel/SkillKongWidget.cs

@@ -34,6 +34,7 @@ namespace Fort23.Mono
         public override CTask<bool> AsyncInit(object[] uiData)
         {
             isAddLongPressBtn = (bool)uiData[0];
+            isUseDrag = (bool)uiData[1];
             return base.AsyncInit(uiData);
         }
 

+ 2 - 2
Assets/Scripts/GameUI/UI/CombatPanel/SkillSelectPanel.cs

@@ -421,7 +421,7 @@ namespace Fort23.Mono
 
             nowSkillKongWidget1 = await UIManager.Instance.CreateGComponentForObject<SkillKongWidget>(
                 SkillKongWidget1game.gameObject,
-                null, transform.GetComponent<RectTransform>(), uiData: new object[] { false },
+                null, transform.GetComponent<RectTransform>(), uiData: new object[] { false,false },
                 isInstance: false);
             nowSkillKongWidget1.own.SetActive(true);
             nowSkillKongWidget1.InitWidget(nowSkillKongWidget.index, this);
@@ -697,7 +697,7 @@ namespace Fort23.Mono
                 Vector2 pos = new Vector2((float)x, (float)y);
                 SkillKongWidget skillKongWidget = await UIManager.Instance.CreateGComponentForObject<SkillKongWidget>(
                     kongdongs.gameObject,
-                    null, SkillKongWeiRoot, uiData: new object[] { true },
+                    null, SkillKongWeiRoot, uiData: new object[] { true,true },
                     isInstance: true);
                 skillKongWidget.InitWidget(index, this);
                 skillKongWidget.SetSKill(allUseSkill[index]);

+ 37 - 25
Assets/Scripts/GameUI/UI/Component/ItemWidgetBasic.cs

@@ -8,9 +8,11 @@ using UnityEngine.EventSystems;
 
 public class ItemWidgetBasic : UIComponent, IScorllListWidget
 {
+    public bool isUseDrag = false;
     public bool isAddLongPressBtn = true;
 
     public LongPressBtn longPressBtn;
+    public LongPressDragBtn longPressDragBtn;
     public ButtonAnimation animation = null;
     protected RectTransform _rectTransform;
 
@@ -81,34 +83,10 @@ public class ItemWidgetBasic : UIComponent, IScorllListWidget
 
     public override void AddButtonEvent()
     {
-        if (isAddLongPressBtn)
-        {
-            longPressBtn = own.GetComponent<LongPressBtn>();
-            if (longPressBtn == null)
-                longPressBtn = own.AddComponent<LongPressBtn>();
-            longPressBtn.onClick = () => OnClick?.Invoke(this);
-            longPressBtn.longPress = () => OnContinueClick?.Invoke(this);
-            longPressBtn.onDragStart = OnDragStart;
-            longPressBtn.onDrag = OnDrag;
-            longPressBtn.onDragEnd = OnDragEnd;
-
-            longPressBtn.onPointerEnter = OnPointerEnter;
-            longPressBtn.onPointerExit = OnPointerExit;
-        }
-
-        if (own.transform.Find("Button") != null)
-        {
-            animation = own.transform.Find("Button").gameObject.GetComponent<ButtonAnimation>();
-            if (animation == null)
-                animation = own.transform.Find("Button").gameObject.AddComponent<ButtonAnimation>();
-
-            animation.isEnabled = false;
-        }
-
-
         base.AddButtonEvent();
     }
 
+
     private void OnPointerExit(PointerEventData obj)
     {
         onPointerExit?.Invoke(this);
@@ -143,6 +121,40 @@ public class ItemWidgetBasic : UIComponent, IScorllListWidget
             _rectTransform = GObjectPoolInterface.GetComponent<RectTransform>();
         }
 
+        if (isAddLongPressBtn)
+        {
+            if (isUseDrag)
+            {
+                longPressDragBtn = own.GetComponent<LongPressDragBtn>();
+                if (longPressDragBtn == null)
+                    longPressDragBtn = own.AddComponent<LongPressDragBtn>();
+                longPressDragBtn.onClick = () => OnClick?.Invoke(this);
+                longPressDragBtn.longPress = () => OnContinueClick?.Invoke(this);
+                longPressDragBtn.onDragStart = OnDragStart;
+                longPressDragBtn.onDrag = OnDrag;
+                longPressDragBtn.onDragEnd = OnDragEnd;
+
+                longPressDragBtn.onPointerEnter = OnPointerEnter;
+                longPressDragBtn.onPointerExit = OnPointerExit;
+            }
+            else
+            {
+                longPressBtn = own.GetComponent<LongPressBtn>();
+                if (longPressBtn == null)
+                    longPressBtn = own.AddComponent<LongPressBtn>();
+                longPressBtn.onClick = () => OnClick?.Invoke(this);
+                longPressBtn.longPress = () => OnContinueClick?.Invoke(this);
+            }
+        }
+
+        if (own.transform.Find("Button") != null)
+        {
+            animation = own.transform.Find("Button").gameObject.GetComponent<ButtonAnimation>();
+            if (animation == null)
+                animation = own.transform.Find("Button").gameObject.AddComponent<ButtonAnimation>();
+
+            animation.isEnabled = false;
+        }
 
         return base.AsyncInit(uiData);
     }

+ 7 - 118
Assets/Scripts/GameUI/UI/Component/LongPressBtn.cs

@@ -6,7 +6,7 @@ using UnityEngine;
 using UnityEngine.EventSystems;
 
 public class LongPressBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler,
-    IPointerClickHandler, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerEnterHandler
+    IPointerClickHandler
 {
     private float _time;
 
@@ -36,48 +36,19 @@ public class LongPressBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandle
     /// <summary>
     /// 是否触发了长按
     /// </summary>
-    public bool IsTriggerLongPress => _isTriggerLongPress;
-
-    // 拖拽相关变量
-    private bool _isDragging;
-    private Vector2 _dragStartPosition;
-
-    /// <summary>
-    /// 拖拽阈值(像素),超过这个距离才认为是拖拽
-    /// </summary>
-    public float dragThreshold = 10f;
-
-    /// <summary>
-    /// 拖拽开始事件
-    /// </summary>
-    public Action<PointerEventData> onDragStart;
-
-    /// <summary>
-    /// 拖拽进行中事件
-    /// </summary>
-    public Action<PointerEventData> onDrag;
-
-    /// <summary>
-    /// 拖拽结束事件
-    /// </summary>
-    public Action<PointerEventData> onDragEnd;
-
-    public Action<PointerEventData> onPointerEnter;
-
-    public Action<PointerEventData> onPointerExit;
+    public bool isTriggerLongPress => _isTriggerLongPress;
 
     void OnPress(bool pressed)
     {
         if (pressed) // 按下
         {
             isPressd = true;
-            _isDragging = false; // 重置拖拽状态
         }
         else // 松开或离开
         {
             if (isPressd)
             {
-                if (_isTriggerLongPress && !_isDragging) // 触发了长按且不是拖拽,执行 longPressEnd
+                if (_isTriggerLongPress) // 触发了长按且不是离开,执行 longPressEnd
                 {
                     longPressEnd?.Invoke();
                     _isTriggerLongPress = false;
@@ -91,9 +62,6 @@ public class LongPressBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandle
 
     private void Update()
     {
-        // 如果正在拖拽,不执行长按逻辑
-        if (_isDragging) return;
-
         if (isPressd && !_isTriggerLongPress)
         {
             _time += Time.deltaTime;
@@ -131,109 +99,30 @@ public class LongPressBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandle
             _isTriggerLongPress = false;
             _time = 0;
         }
-
-        _isDragging = false; // 同时终止拖拽状态
     }
 
     public void OnPointerDown(PointerEventData eventData)
     {
-        _dragStartPosition = eventData.position;
         OnPress(true);
     }
 
     public void OnPointerUp(PointerEventData eventData)
     {
-        // 如果正在拖拽,先触发拖拽结束
-        if (_isDragging)
-        {
-            OnEndDrag(eventData);
-        }
-
         OnPress(false);
     }
 
     public void OnPointerExit(PointerEventData eventData)
     {
-        onPointerExit?.Invoke(eventData);
-        // 如果正在拖拽,不处理退出事件(拖拽过程中允许离开按钮区域)
-        if (!_isDragging)
-        {
-            OnPress(false);
-        }
-    }
-
-    public void OnPointerEnter(PointerEventData eventData)
-    {
-        onPointerEnter?.Invoke(eventData);
+        OnPress(false);
     }
 
     public void OnPointerClick(PointerEventData eventData)
     {
-        // 如果发生了拖拽,不触发点击事件
-        if (_isDragging || _isTriggerLongPress) return;
-
-        onClick?.Invoke();
-        isPressd = false;
-    }
-
-    // ========== 拖拽相关方法 ==========
-
-    public void OnBeginDrag(PointerEventData eventData)
-    {
-        // 检查是否达到拖拽阈值
-        if (Vector2.Distance(eventData.position, _dragStartPosition) >= dragThreshold && !_isDragging)
-        {
-            _isDragging = true;
-            // 开始拖拽时终止长按逻辑
-            if (_isTriggerLongPress)
-            {
-                longPressEnd?.Invoke();
-                _isTriggerLongPress = false;
-            }
-
-            onDragStart?.Invoke(eventData);
-        }
-    }
-
-    public void OnDrag(PointerEventData eventData)
-    {
-        if (_isDragging)
-        {
-            onDrag?.Invoke(eventData);
-        }
-        else
-        {
-            // 如果还没有正式开始拖拽,检查是否达到阈值
-            if (Vector2.Distance(eventData.position, _dragStartPosition) >= dragThreshold)
-            {
-                OnBeginDrag(eventData);
-            }
-        }
-    }
-
-    public void OnEndDrag(PointerEventData eventData)
-    {
-        if (_isDragging)
+        if (!_isTriggerLongPress) // 只有未触发长按时才触发点击
         {
-            onDragEnd?.Invoke(eventData);
-            _isDragging = false;
+            onClick?.Invoke();
         }
-    }
 
-    /// <summary>
-    /// 检查是否正在拖拽
-    /// </summary>
-    public bool IsDragging => _isDragging;
-
-    /// <summary>
-    /// 强制结束拖拽
-    /// </summary>
-    public void ForceEndDrag()
-    {
-        if (_isDragging)
-        {
-            _isDragging = false;
-            onDragEnd?.Invoke(null);
-        }
+        isPressd = false;
     }
 }

+ 239 - 0
Assets/Scripts/GameUI/UI/Component/LongPressDragBtn.cs

@@ -0,0 +1,239 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Fort23.UTool;
+using UnityEngine;
+using UnityEngine.EventSystems;
+
+public class LongPressDragBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler,
+    IPointerClickHandler, IDragHandler, IBeginDragHandler, IEndDragHandler, IPointerEnterHandler
+{
+    private float _time;
+
+    public float startTime = 0.5f;
+
+    public float intervalTime = 0.05f;
+
+    public Action onClick;
+
+    /// <summary>
+    /// 连按
+    /// </summary>
+    public Action longPress;
+
+    /// <summary>
+    /// 长按结束
+    /// </summary>
+    public Action longPressEnd;
+
+    /// <summary>
+    /// 是否按下状态
+    /// </summary>
+    [HideInInspector] public bool isPressd;
+
+    private bool _isTriggerLongPress;
+
+    /// <summary>
+    /// 是否触发了长按
+    /// </summary>
+    public bool IsTriggerLongPress => _isTriggerLongPress;
+
+    // 拖拽相关变量
+    private bool _isDragging;
+    private Vector2 _dragStartPosition;
+
+    /// <summary>
+    /// 拖拽阈值(像素),超过这个距离才认为是拖拽
+    /// </summary>
+    public float dragThreshold = 10f;
+
+    /// <summary>
+    /// 拖拽开始事件
+    /// </summary>
+    public Action<PointerEventData> onDragStart;
+
+    /// <summary>
+    /// 拖拽进行中事件
+    /// </summary>
+    public Action<PointerEventData> onDrag;
+
+    /// <summary>
+    /// 拖拽结束事件
+    /// </summary>
+    public Action<PointerEventData> onDragEnd;
+
+    public Action<PointerEventData> onPointerEnter;
+
+    public Action<PointerEventData> onPointerExit;
+
+    void OnPress(bool pressed)
+    {
+        if (pressed) // 按下
+        {
+            isPressd = true;
+            _isDragging = false; // 重置拖拽状态
+        }
+        else // 松开或离开
+        {
+            if (isPressd)
+            {
+                if (_isTriggerLongPress && !_isDragging) // 触发了长按且不是拖拽,执行 longPressEnd
+                {
+                    longPressEnd?.Invoke();
+                    _isTriggerLongPress = false;
+                }
+            }
+
+            isPressd = false;
+            _time = 0;
+        }
+    }
+
+    private void Update()
+    {
+        // 如果正在拖拽,不执行长按逻辑
+        if (_isDragging) return;
+
+        if (isPressd && !_isTriggerLongPress)
+        {
+            _time += Time.deltaTime;
+            if (_time >= startTime)
+            {
+                _isTriggerLongPress = true;
+                _time -= intervalTime;
+                longPress?.Invoke();
+            }
+        }
+        else if (isPressd && _isTriggerLongPress)
+        {
+            _time += Time.deltaTime;
+            if (_time >= intervalTime)
+            {
+                _time -= intervalTime;
+                longPress?.Invoke();
+            }
+        }
+    }
+
+    /// <summary>
+    /// 终止
+    /// </summary>
+    public void Terminated()
+    {
+        if (isPressd)
+        {
+            isPressd = false;
+            if (_isTriggerLongPress)
+            {
+                longPressEnd?.Invoke();
+            }
+
+            _isTriggerLongPress = false;
+            _time = 0;
+        }
+
+        _isDragging = false; // 同时终止拖拽状态
+    }
+
+    public void OnPointerDown(PointerEventData eventData)
+    {
+        _dragStartPosition = eventData.position;
+        OnPress(true);
+    }
+
+    public void OnPointerUp(PointerEventData eventData)
+    {
+        // 如果正在拖拽,先触发拖拽结束
+        if (_isDragging)
+        {
+            OnEndDrag(eventData);
+        }
+
+        OnPress(false);
+    }
+
+    public void OnPointerExit(PointerEventData eventData)
+    {
+        onPointerExit?.Invoke(eventData);
+        // 如果正在拖拽,不处理退出事件(拖拽过程中允许离开按钮区域)
+        if (!_isDragging)
+        {
+            OnPress(false);
+        }
+    }
+
+    public void OnPointerEnter(PointerEventData eventData)
+    {
+        onPointerEnter?.Invoke(eventData);
+    }
+
+    public void OnPointerClick(PointerEventData eventData)
+    {
+        // 如果发生了拖拽,不触发点击事件
+        if (_isDragging || _isTriggerLongPress) return;
+
+        onClick?.Invoke();
+        isPressd = false;
+    }
+
+    // ========== 拖拽相关方法 ==========
+
+    public void OnBeginDrag(PointerEventData eventData)
+    {
+        // 检查是否达到拖拽阈值
+        if (Vector2.Distance(eventData.position, _dragStartPosition) >= dragThreshold && !_isDragging)
+        {
+            _isDragging = true;
+            // 开始拖拽时终止长按逻辑
+            if (_isTriggerLongPress)
+            {
+                longPressEnd?.Invoke();
+                _isTriggerLongPress = false;
+            }
+
+            onDragStart?.Invoke(eventData);
+        }
+    }
+
+    public void OnDrag(PointerEventData eventData)
+    {
+        if (_isDragging)
+        {
+            onDrag?.Invoke(eventData);
+        }
+        else
+        {
+            // 如果还没有正式开始拖拽,检查是否达到阈值
+            if (Vector2.Distance(eventData.position, _dragStartPosition) >= dragThreshold)
+            {
+                OnBeginDrag(eventData);
+            }
+        }
+    }
+
+    public void OnEndDrag(PointerEventData eventData)
+    {
+        if (_isDragging)
+        {
+            onDragEnd?.Invoke(eventData);
+            _isDragging = false;
+        }
+    }
+
+    /// <summary>
+    /// 检查是否正在拖拽
+    /// </summary>
+    public bool IsDragging => _isDragging;
+
+    /// <summary>
+    /// 强制结束拖拽
+    /// </summary>
+    public void ForceEndDrag()
+    {
+        if (_isDragging)
+        {
+            _isDragging = false;
+            onDragEnd?.Invoke(null);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameUI/UI/Component/LongPressDragBtn.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9b7bdefb697b46138c97c06f8ab1aaaa
+timeCreated: 1758609866

+ 2 - 2
Assets/Scripts/GameUI/UI/HeroInformationPanel/HeroInformationPanel.cs

@@ -219,7 +219,7 @@ namespace Fort23.Mono
 
 
             Text_exp.text =
-                $"{PlayerManager.Instance.myHero.exp}/{PlayerManager.Instance.myHero.powerUpConfig.levelUpExp}";
+                $"{PlayerManager.Instance.myHero.exp.Value}/{PlayerManager.Instance.myHero.powerUpConfig.levelUpExp}";
 
             if (PlayerManager.Instance.myHero.powerUpConfig.jingjie1 == heroInfo.powerUpConfig.jingjie1)
             {
@@ -241,7 +241,7 @@ namespace Fort23.Mono
             Slider_Exp.value = PlayerManager.Instance.myHero.heroData.exp + allexp;
 
             Text_exp.text =
-                $"{PlayerManager.Instance.myHero.heroData.exp + allexp}/{PlayerManager.Instance.myHero.powerUpConfig.levelUpExp}";
+                $"{PlayerManager.Instance.myHero.heroData.exp + (int)allexp}/{PlayerManager.Instance.myHero.powerUpConfig.levelUpExp}";
 
             int miao = (int)((PlayerManager.Instance.myHero.powerUpConfig.levelUpExp -
                               (PlayerManager.Instance.myHero.heroData.exp + allexp)) /