lcy
4 天以前 8d9d42bfc92bef2a54448dfd5fcb688b8b3563e5
411 定军阁-客户端  自动战斗
5个文件已修改
186 ■■■■ 已修改文件
Main/System/Battle/BattleField/WarlordPavilionBattleField.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Settlement/BattleSettlementManager.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Settlement/WarlordPavilionVictoryWin.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/WarlordPavilionManager.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/WarlordPavilionWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/WarlordPavilionBattleField.cs
@@ -10,7 +10,7 @@
    {
    }
    WarlordPavilionManager manager { get { return WarlordPavilionManager.Instance; } }
    public override void Init(int MapID, int FuncLineID, JsonData _extendData,
        List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte turnMax)
    {
@@ -63,12 +63,7 @@
    {
        AutoFightModel.Instance.isPause = false;
        Destroy();
        if (UIManager.Instance.IsOpened<WarlordPavilionBattleWin>())
        {
            UIManager.Instance.CloseWindow<WarlordPavilionBattleWin>();
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
        }
        manager.TryNext();
    }
    public override void Run()
Main/System/Settlement/BattleSettlementManager.cs
@@ -51,6 +51,7 @@
                PopupWindowsProcessor.Instance.Add("TianziBillboradVictoryWin", false, BattleConst.TianziBillboradBattleField);
                break;
            case BattleConst.WarlordPavilionBattleField:
                WarlordPavilionManager.Instance.isAutoNext = isWin;
                PopupWindowsProcessor.Instance.Add(isWin ? "WarlordPavilionVictoryWin" : "WarlordPavilionFailWin", false, BattleConst.WarlordPavilionBattleField);
                break;
            default:
@@ -89,6 +90,7 @@
                UIManager.Instance.OpenWindow<TianziBillboradVictoryWin>();
                break;
            case BattleConst.WarlordPavilionBattleField:
                WarlordPavilionManager.Instance.isAutoNext = isWin;
                if (isWin)
                {
                    UIManager.Instance.OpenWindow<WarlordPavilionVictoryWin>();
Main/System/Settlement/WarlordPavilionVictoryWin.cs
@@ -6,9 +6,16 @@
{
    [SerializeField] ButtonEx detailBtn;
    [SerializeField] TextEx txtFuncName;
    [SerializeField] Transform autoNext;
    [SerializeField] TextEx txtTime;
    [SerializeField] TextEx txtMax;
    [SerializeField] ButtonEx btnNext;
    [SerializeField] TextEx txtNext;
    [SerializeField] ScrollerController scroller;
    string battleName = BattleConst.WarlordPavilionBattleField;
    bool hasNext = false;
    WarlordPavilionManager manager { get { return WarlordPavilionManager.Instance; } }
    protected override void InitComponent()
    {
@@ -16,20 +23,41 @@
        {
            BattleSettlementManager.Instance.OpenBattleDetailWin(battleName);
        });
        btnNext.SetListener(() =>
        {
            CloseWindow();
        });
    }
    protected override void OnPreOpen()
    {
        scroller.OnRefreshCell += OnRefreshCell;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        btnClickEmptyCloseEvent = OnPopConfirmCancelExBtn;
        CreateScroller();
        int funcId = (int)FuncOpenEnum.WarlordPavilion;
        txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty;
        bool isAutoFuncOpen = manager.IsAutoFuncOpen(false);
        autoNext.SetActive(isAutoFuncOpen);
        if (!isAutoFuncOpen)
            return;
        manager.GetCurrentFinishProgress(out int layerNum, out int levelNum);
        hasNext = FBDJGLevelConfig.TryGetNextLevel(layerNum, levelNum, out int nextLayerNum, out int nextLevelNum);
        manager.TryGetShowLayerNumAndLevelNum(out int showLayerNum, out int showLevelNum);
        btnNext.SetActive(hasNext);
        txtMax.SetActive(!hasNext);
        txtNext.text = hasNext ? Language.Get("WarlordPavilion33", showLayerNum, showLevelNum) : string.Empty;
        lastTime = TimeUtility.AllSeconds;
        OnSecondEvent();
    }
    protected override void OnPreClose()
    {
        scroller.OnRefreshCell -= OnRefreshCell;
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        BattleSettlementManager.Instance.WinShowOver(battleName);
    }
@@ -64,17 +92,12 @@
        scroller.Restart();
    }
    int SortItem(Item itemA, Item itemB)
    {
        var itemConfigA = ItemConfig.Get(itemA.id);
        var itemConfigB = ItemConfig.Get(itemB.id);
        return itemConfigB.ItemColor - itemConfigA.ItemColor;
    }
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
@@ -83,4 +106,30 @@
        _cell?.Display(item.id, item.countEx);
    }
    private int lastTime = 0;
    public int GetRemainingTime()
    {
        int nowTime = TimeUtility.AllSeconds;
        int elapsed = nowTime - lastTime;
        return elapsed >= manager.autoWaitTime ? 0 : manager.autoWaitTime - elapsed;
    }
    private void OnSecondEvent()
    {
        if (!manager.IsAutoFuncOpen(false))
            return;
        int remainingTime = GetRemainingTime();
        txtTime.text = Language.Get("WarlordPavilion32", remainingTime);
        if (remainingTime <= 0)
        {
            lastTime = TimeUtility.AllSeconds;
            CloseWindow();
        }
    }
    void OnPopConfirmCancelExBtn()
    {
        manager.isAutoNext = false;
        CloseWindow();
    }
}
Main/System/WarlordPavilion/WarlordPavilionManager.cs
@@ -20,9 +20,16 @@
    public int giftGirdMaxCnt;              //效果槽的总数
    public int bonusPresetMaxCnt; //预设加成效果可预设数 
    public int[] funcOpenArr;
    public int[] autoOpenArr;
    public int openLayerNum;
    public int openLevelNum;
    public int openLV;
    public int autoOpenLayerNum;
    public int autoOpenLevelNum;
    public int autoOpenLV;
    public int autoWaitTime;
    public int backLayerCnt;    // 每日回退层数,每日从回退后的层第1关开始挑战,若回退后的层数大于1,则强制需先进行快速挑战才能继续挑战
    public int[] sortIndexList;
    private int m_SelectEffID;
@@ -71,6 +78,8 @@
            UpdateSelectReplaceGiftGirdIndexEvent?.Invoke();
        }
    }
    public bool isAutoNext = true;
    public event Action UpdateSelectReplaceGiftGirdIndexEvent;
    public event Action UpdateSelectGiftGirdIndexEvent;
    public event Action<List<int>> OnUpdateDingjungeInfoEvent;
@@ -93,7 +102,17 @@
        openLayerNum = funcOpenArrNotExist ? 0 : funcOpenArr[0];
        openLevelNum = funcOpenArrNotExist ? 0 : funcOpenArr[1];
        openLV = funcOpenArrNotExist ? 0 : funcOpenArr[2];
        autoOpenArr = JsonMapper.ToObject<int[]>(config.Numerical4);
        bool autoOpenArrNotExist = funcOpenArr == null || funcOpenArr.Length < 3;
        autoOpenLayerNum = funcOpenArrNotExist ? 0 : funcOpenArr[0];
        autoOpenLevelNum = funcOpenArrNotExist ? 0 : funcOpenArr[1];
        autoOpenLV = funcOpenArrNotExist ? 0 : funcOpenArr[2];
        autoWaitTime = int.Parse(config.Numerical5);
    }
    public override void Release()
    {
@@ -113,12 +132,14 @@
        UnSelectCnt = 0;
        SelectAuto = 0;
        SelectSetAttrIDList = null;
        isAutoNext = true;
    }
    private void PlayerDataRefresh(PlayerDataType type)
    {
        if (PlayerDataType.LV == type)
        {
            isAutoNext = true;
            UpdateRedpoint();
        }
    }
@@ -166,6 +187,38 @@
        return isOpen;
    }
    public bool IsAutoFuncOpen(bool isTip = false)
    {
        TryGetHistoryMaxFinishProgress(out int layerNum, out int levelNum);
        int lv = PlayerDatas.Instance.baseData.LV;
        bool isOpen = false;
        if (lv >= autoOpenLV)
        {
            if (layerNum < autoOpenLayerNum)
            {
                isOpen = false;
            }
            else if (layerNum == autoOpenLayerNum)
            {
                isOpen = levelNum >= autoOpenLevelNum;
            }
            else
            {
                isOpen = true;
            }
        }
        else
        {
            isOpen = false;
        }
        if (!isOpen && isTip)
        {
            SysNotifyMgr.Instance.ShowTip("WarlordPavilion01", autoOpenLayerNum, autoOpenLevelNum, autoOpenLV);
        }
        return isOpen;
    }
    public Redpoint parentRedpoint = new Redpoint(MainRedDot.WarlordPavilionRepoint);
    public void UpdateRedpoint()
    {
@@ -657,6 +710,50 @@
        return true;
    }
    public void TryNext()
    {
        bool isOpenBattleChangeTab = FuncOpen.Instance.IsFuncOpen(ArenaManager.Instance.BattleChangeTabFuncId);
        if (isOpenBattleChangeTab)
        {
            UIManager.Instance.GetUI<MainWin>()?.RestoreSubUI();
        }
        else
        {
            UIManager.Instance.OpenWindow<MainWin>();
        }
        if (!IsAutoFuncOpen(false))
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            return;
        }
        GetCurrentFinishProgress(out int layerNum, out int levelNum);
        bool hasNext = FBDJGLevelConfig.TryGetNextLevel(layerNum, levelNum, out int nextLayerNum, out int nextLevelNum);
        if (!hasNext)
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            return;
        }
        bool hasBonusToSelect = HasBonusToSelect();
        bool isAutoPresetOn = IsAutoPresetOn();
        if (hasBonusToSelect && !isAutoPresetOn)
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            UIManager.Instance.OpenWindow<WarlordPavilionSelectBonusWin>();
            return;
        }
        if (!isAutoNext)
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            return;
        }
        BattleManager.Instance.SendTurnFight((uint)DataMapID, 0);
    }
    public void UpdateDingjungeInfo(HB202_tagSCDingjungeInfo vNetData)
    {
@@ -667,6 +764,7 @@
        SelectSetAttrIDList = vNetData.SelectSetAttrIDList;
        List<int> effectIndexList = GetEffectIndexList(vNetData.EffList);
        isAutoNext = true;
        EffList = vNetData.EffList;
        UpdateRedpoint();
        OnUpdateDingjungeInfoEvent?.Invoke(effectIndexList);
Main/System/WarlordPavilion/WarlordPavilionWin.cs
@@ -82,7 +82,7 @@
            UIManager.Instance.OpenWindow<WarlordPavilionBonusPresetWin>();
        });
        funPresetBtn.AddListener(()=>
        funPresetBtn.AddListener(() =>
        {
            FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.Story);
        });
@@ -114,20 +114,6 @@
        for (int i = 0; i < giftCells.Length; i++)
        {
            giftCells[i].Display(i, indexs.Contains(i));
        }
    }
    private void OnUpdateViewNPCAttrRet(uint mapID, uint funcLineID)
    {
        if (mapID != manager.DataMapID)
            return;
        if (npcConfig == null)
            return;
        uint npcID = (uint)npcConfig.NPCID;
        if (ViewNPCManager.Instance.TryGetNPCAttr(mapID, funcLineID, npcID, out var npcAttr) && npcAttr != null && npcAttr.AttrDict != null)
        {
            AttributeManager.Instance.OpenTotalAttributeWin(npcAttr.AttrDict);
            return;
        }
    }