hch
2025-09-29 283a8369fb3c5e74d62416ca49d289b9ae96c58f
197 子 【内政】淘金系统 / 【内政】淘金系统-客户端
6个文件已修改
241 ■■■■ 已修改文件
Main/System/InternalAffairs/AffairBaseWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoCell.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoWin.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushManager.cs 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushRefreshWin.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushTentCell.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/AffairBaseWin.cs
@@ -47,6 +47,7 @@
        GoldRushManager.Instance.OnAutoWorkingEvent += OnAutoWorkingEvent;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
        GoldRushManager.Instance.ResumeAutoWorking();
        Display();
        GoldRushManager.Instance.GetAllAward();
    }
Main/System/InternalAffairs/GoldRushAutoCell.cs
@@ -24,7 +24,7 @@
        itemLV = GoldRushManager.Instance.GetAutoItemLV(arrIndex);
        bool isOn = itemLV > 0;
        itemLV = itemLV > 0 ? itemLV : 1;
        if (IsLock(itemID, out int funcID))
        if (GoldRushManager.Instance.IsLock(itemID, out int funcID))
        {
            lockGo.SetActive(true);
            lockText.text = Language.Get("L1038", FuncOpenLVConfig.Get(funcID).Name);
@@ -63,21 +63,7 @@
    }
    bool IsLock(int itemID, out int funcID)
    {
        funcID = 0;
        if (GoldRushManager.Instance.itemIDUnLockFuncIDDict.ContainsKey(itemID))
        {
            funcID = GoldRushManager.Instance.itemIDUnLockFuncIDDict[itemID];
            if (!FuncOpen.Instance.IsFuncOpen(funcID))
            {
                return true;
            }
            return false;
        }
        return false;
    }
    void ChangeWorkerCount(int lv)
    {
Main/System/InternalAffairs/GoldRushAutoWin.cs
@@ -153,7 +153,14 @@
    void Auto()
    {
        GoldRushManager.Instance.SetAutoWorking(!GoldRushManager.Instance.isOpenAuto, true);
        if (GoldRushManager.Instance.isOpenAuto)
        {
            GoldRushManager.Instance.StopAutoWorking();
        }
        else
        {
            GoldRushManager.Instance.StartAutoWorking();
        }
        autoText.text = Language.Get(GoldRushManager.Instance.isOpenAuto ? "GoldRush46" : "GoldRush28");
        SysNotifyMgr.Instance.ShowTip(GoldRushManager.Instance.isOpenAuto ? "GoldRush11" : "GoldRush12");
        CloseWindow();
Main/System/InternalAffairs/GoldRushManager.cs
@@ -130,6 +130,8 @@
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize;
        PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
        m_MaxWorkerCount = GoldRushWorkerConfig.GetKeys().Count;
@@ -140,6 +142,7 @@
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitialize;
        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
    }
    void ParseConfig()
@@ -187,6 +190,19 @@
    }
    void OnPlayerLoginOk()
    {
        //自动淘金未解锁的设置不勾选
        for (int i = 0; i < autoRefreshItemIDs.Length; i++)
        {
            var itemID = autoRefreshItemIDs[i];
            if (IsLock(itemID, out int funcID) && GetAutoItemLV(i) != 0)
            {
                SetAutoItemLV(i, 0);
            }
        }
    }
    void OnPlayerDataRefresh(PlayerDataType type)
    {
@@ -195,10 +211,10 @@
        {
            UpdateRedpoint();
        }
        else if (type == PlayerDataType.GoldRush)
        {
            SetAutoWorking(isOpenAuto, UIHelper.GetMoneyCnt(52) > 0);
        }
        // else if (type == PlayerDataType.GoldRush)
        // {
        //     ResumeAutoWorking();
        // }
    }
@@ -233,6 +249,8 @@
        warehouseIDList = netPack.WarehouseIDList;
        lastRecoverTime = (int)netPack.LastRecoverTime;
        UpdateRedpoint();
        ResumeAutoWorking();
        OnGoldRushInfoEvent?.Invoke();
    }
@@ -321,6 +339,12 @@
            return (int)campInfoDict[campID].EndTime;
        }
        return 0;
    }
    //有可进行和进行中的
    public bool HasWorking()
    {
        return campInfoDict.Values.Any(x => x.GoldID != 0);
    }
@@ -610,6 +634,164 @@
        QuickSetting.Instance.SendPackage();
    }
    void OnSecondEvent()
    {
        if (!isAutoWorking || !isOpenAuto)
        {
            return;
        }
        if (UIHelper.GetMoneyCnt(52) <= 0 && !HasWorking())
        {
            PauseAutoWorking();
            SysNotifyMgr.Instance.ShowTip("GoldRush10");
            return;
        }
        if (GetFinishGoldRushCount() >= warehouseMaxCnt)
        {
            PauseAutoWorking();
            SysNotifyMgr.Instance.ShowTip("GoldRush9");
            return;
        }
        if (GetWarehouseCnt() >= warehouseMaxCnt)
        {
            return;
        }
        AutoWorking();
    }
    public void StartAutoWorking()
    {
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        SetAutoWorking(true, true);
    }
    public void StopAutoWorking()
    {
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        SetAutoWorking(false, false);
    }
    public void PauseAutoWorking()
    {
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        SetAutoWorking(isOpenAuto, false);
    }
    public void ResumeAutoWorking()
    {
        if (UIHelper.GetMoneyCnt(52) <= 0)
        {
            return;
        }
        if (GetFinishGoldRushCount() >= warehouseMaxCnt)
        {
            return;
        }
        if (!UIManager.Instance.IsOpened<AffairBaseWin>())
        {
            return;
        }
        if (isOpenAuto && !isAutoWorking)
        {
            SysNotifyMgr.Instance.ShowTip("GoldRush11");
            StartAutoWorking();
        }
    }
    void AutoWorking()
    {
        bool isRefreshing = false;
        //先刷营地
        foreach (var campID in campInfoDict.Keys)
        {
            var campInfo = campInfoDict[campID];
            if (campInfo.GoldID != 0 && campInfo.EndTime != 0)
            {
                //正在采集中
                continue;
            }
            var lockState = GetCampLockState(campID);
            if (lockState != 0)
            {
                //未解锁
                continue;
            }
            if (campInfo.GoldID == 0)
            {
                SendGoldRushOP(0, campID, 0);
                isRefreshing = true;
            }
            else
            {
                //是否满足条件
                var config = GoldRushItemConfig.Get(campInfo.GoldID);
                var needLV = GetAutoItemLV(Array.IndexOf(autoRefreshItemIDs, config.ItemID));
                if (needLV == 0 || config.ItemLV < needLV)
                {
                    if (!UIHelper.CheckMoneyCount(refreshMoneyType, GetRefreshMoney(campID), 0))
                    {
                        continue;
                    }
                    //存在货币不足也会同时请求刷新的情况
                    SendGoldRushOP(1, campID, 0);
                    isRefreshing = true;
                    continue;
                }
                isRefreshing = true;
                //开始采集
                SendGoldRushOP(2, campID, 1);
            }
        }
        //填充监工
        if (isRefreshing) return;
        foreach (var campID in campInfoDict.Keys)
        {
            var campInfo = campInfoDict[campID];
            var config = GoldRushItemConfig.Get(campInfo.GoldID);
            if (campInfo.GoldID != 0 && campInfo.EndTime != 0)
            {
                //正在采集中 增加监工, 一次循环只增加一个监工
                if (campInfo.WorkerCnt < config.WorkerMax && GetEmptyWorkerCount() > 0)
                {
                    SendGoldRushOP(2, campID, campInfo.WorkerCnt + 1);
                    break;
                }
            }
        }
    }
    public int GetRefreshMoney(int campID)
    {
        var refreshCnt = GetCampRefreshCnt(campID);
        return refreshMoneyList[Math.Min(refreshCnt, refreshMoneyList.Length - 1)];
    }
    public bool IsLock(int itemID, out int funcID)
    {
        funcID = 0;
        if (itemIDUnLockFuncIDDict.ContainsKey(itemID))
        {
            funcID = itemIDUnLockFuncIDDict[itemID];
            if (!FuncOpen.Instance.IsFuncOpen(funcID))
            {
                return true;
            }
            return false;
        }
        return false;
    }
}
Main/System/InternalAffairs/GoldRushRefreshWin.cs
@@ -80,7 +80,8 @@
            callBackBtn.SetActive(false);
            iconImg.SetIconWithMoneyType(GoldRushManager.Instance.refreshMoneyType);
            moneyText.text = UIHelper.ShowUseMoney(GoldRushManager.Instance.refreshMoneyType, GetRefreshMoney());
            moneyText.text = UIHelper.ShowUseMoney(GoldRushManager.Instance.refreshMoneyType,
            GoldRushManager.Instance.GetRefreshMoney(GoldRushManager.Instance.selectCampID));
            workBtn.SetInteractable(emptyCnt != 0);
            workerCount = Math.Min(emptyCnt, 1);
        }
@@ -127,11 +128,7 @@
        }
    }
    int GetRefreshMoney()
    {
        var refreshCnt = GoldRushManager.Instance.GetCampRefreshCnt(GoldRushManager.Instance.selectCampID);
        return GoldRushManager.Instance.refreshMoneyList[Math.Min(refreshCnt, GoldRushManager.Instance.refreshMoneyList.Length - 1)];
    }
    void OnGoldRushCampEvent(int campID)
    {
@@ -232,7 +229,8 @@
            return;
        if (!UIHelper.CheckMoneyCount(GoldRushManager.Instance.refreshMoneyType, GetRefreshMoney(), 2))
        if (!UIHelper.CheckMoneyCount(GoldRushManager.Instance.refreshMoneyType,
        GoldRushManager.Instance.GetRefreshMoney(GoldRushManager.Instance.selectCampID), 2))
        {
            return;
        }
Main/System/InternalAffairs/GoldRushTentCell.cs
@@ -2,6 +2,7 @@
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using System.Linq;
//工人是固定的跟随模式,监工是随机分配的,场上的监工数量会比实际更多
//分配监工
@@ -495,6 +496,18 @@
                        ReturnLeader(newLeader);
                    }
                });
                if (workState == -1)
                {
                    //重登的时候,外出的修复状态
                    workState = 1;
                    var keys = workerPosDic.Keys.ToList();
                    for (int k = 0; k < keys.Count; k++)
                    {
                        workerPosDic[keys[k]] = pathPointArr.Length - 1;
                    }
                }
                if (workingLeaderList.Count == 0 && workState == 1)
                {
                    followBack = true;