lcy
9 小时以前 d80b42fe727a0b8794e04601f378b861547d8fad
411 定军阁-客户端 修改界面,外层显示npc,可点击查看详情
4个文件已添加
6个文件已修改
212 ■■■■ 已修改文件
Main/Config/Configs/FBDJGLevelConfig.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/WarlordPavilionBattleField.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/ChallengeTab/WarlordPavilionTabHandler.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/ViewNPC/ViewNPCManager.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/TowerBaseWin.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/TowerBaseWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/WarlordPavilionManager.cs 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/WarlordPavilionNPCItem.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/WarlordPavilionNPCItem.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/WarlordPavilionWin.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/FBDJGLevelConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           YYL
//    [  Date ]:           Tuesday, January 20, 2026
//    [  Date ]:           Friday, February 6, 2026
//--------------------------------------------------------
using System.Collections.Generic;
@@ -22,8 +22,8 @@
    public int[][] PassAwardList;
    public int[][] AwardList;
    public int[] LineupIDList;
    public int NPCLV;
    public long FightPower;
    public int NPCID;
    public int[] SkillIDExList;
    public override int LoadKey(string _key)
@@ -60,9 +60,9 @@
                }
            }
            long.TryParse(tables[6],out FightPower);
            int.TryParse(tables[6],out NPCLV);
            int.TryParse(tables[7],out NPCID);
            long.TryParse(tables[7],out FightPower);
            if (tables[8].Contains("["))
            {
Main/System/Battle/BattleField/WarlordPavilionBattleField.cs
@@ -94,9 +94,9 @@
        }
        fsBattleWin.SetBattleField(this);
        if (UIManager.Instance.IsOpened<WarlordPavilionWin>())
        if (UIManager.Instance.IsOpened<TowerBaseWin>())
        {
            UIManager.Instance.CloseWindow<WarlordPavilionWin>();
            UIManager.Instance.CloseWindow<TowerBaseWin>();
        }
    }
Main/System/ChallengeTab/WarlordPavilionTabHandler.cs
@@ -41,7 +41,7 @@
        }
        else
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            UIManager.Instance.OpenWindow<TowerBaseWin>();
        }
    }
Main/System/ViewNPC/ViewNPCManager.cs
@@ -123,8 +123,16 @@
        });
    }
    public void TryOpenNPCDetailWin(uint mapID, uint funcLineID, uint npcID)
    {
        if (TryGetNPCAttr(mapID, funcLineID, npcID, out ViewNPCAttr attr))
        {
            OpenNPCDetailWin(attr);
        }
    }
    public ViewNPCAttr viewNPCAttr;
    private void OpenNPCDetailWin(ViewNPCAttr viewNPCAttr)
    public void OpenNPCDetailWin(ViewNPCAttr viewNPCAttr)
    {
        this.viewNPCAttr = viewNPCAttr;
        if (!UIManager.Instance.IsOpened<OtherNPCDetailWin>())
Main/System/WarlordPavilion/TowerBaseWin.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
public class TowerBaseWin : OneLevelWin
{
    [SerializeField] Transform WarlordPavilionWinTop;
    protected override void OpenSubUIByTabIndex()
    {
        WarlordPavilionWinTop.SetActive(functionOrder == 0);
        switch (functionOrder)
        {
            case 0:
                currentSubUI = UIManager.Instance.OpenWindow<WarlordPavilionWin>();
                break;
            default:
                Debug.LogWarning("未知的标签索引: " + functionOrder);
                break;
        }
    }
}
Main/System/WarlordPavilion/TowerBaseWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8849ec4f80ae3604db56ee7a9a1be0b6
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/WarlordPavilion/WarlordPavilionManager.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using LitJson;
using UnityEngine;
public class WarlordPavilionManager : GameSystemManager<WarlordPavilionManager>
{
@@ -652,17 +651,39 @@
        return true;
    }
    public bool TryGetNPCConfig(int layerNum, int levelNum, out NPCConfig npcConfig)
    public bool TryGetLineupConfig(int layerNum, int levelNum, out NPCLineupConfig npcLineupConfig)
    {
        npcConfig = null;
        npcLineupConfig = null;
        if (!FBDJGLevelConfig.TryGetFBDJGLevelConfig(layerNum, levelNum, out var config))
            return false;
        int npcID = config.NPCID;
        if (!NPCConfig.HasKey(npcID))
        int lineupID = config.LineupIDList[0];
        if (!NPCLineupConfig.HasKey(lineupID))
            return false;
        npcConfig = NPCConfig.Get(npcID);
        npcLineupConfig = NPCLineupConfig.Get(lineupID);
        return true;
    }
    public int viewNPCID = 0;
    // 获取该阵容指定位置的npcID, posNum范围1-6
    public bool TryGetNPCIDInLineupByPosNum(NPCLineupConfig config, int posNum, out int npcID)
    {
        npcID = 0;
        if (config == null || posNum < 1 || posNum > 6)
            return false;
        npcID = posNum switch
        {
            1 => config.PosNPCID1,
            2 => config.PosNPCID2,
            3 => config.PosNPCID3,
            4 => config.PosNPCID4,
            5 => config.PosNPCID5,
            6 => config.PosNPCID6,
            _ => 0
        };
        return NPCConfig.HasKey(npcID);
    }
    public bool IsTodayNoFight()
    {
@@ -726,7 +747,7 @@
        if (!IsAutoFuncOpen(false))
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            UIManager.Instance.OpenWindow<TowerBaseWin>();
            return;
        }
@@ -734,7 +755,7 @@
        bool hasNext = FBDJGLevelConfig.TryGetNextLevel(layerNum, levelNum, out int nextLayerNum, out int nextLevelNum);
        if (!hasNext)
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            UIManager.Instance.OpenWindow<TowerBaseWin>();
            return;
        }
@@ -742,14 +763,14 @@
        bool isAutoPresetOn = IsAutoPresetOn();
        if (hasBonusToSelect && !isAutoPresetOn)
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            UIManager.Instance.OpenWindow<TowerBaseWin>();
            UIManager.Instance.OpenWindow<WarlordPavilionSelectBonusWin>();
            return;
        }
        if (!isAutoNext)
        {
            UIManager.Instance.OpenWindow<WarlordPavilionWin>();
            UIManager.Instance.OpenWindow<TowerBaseWin>();
            return;
        }
Main/System/WarlordPavilion/WarlordPavilionNPCItem.cs
New file
@@ -0,0 +1,48 @@
using UnityEngine;
using UnityEngine.UI;
public class WarlordPavilionNPCItem : MonoBehaviour
{
    public int posNum;
    [SerializeField] UIHeroController uiHeroController;
    [SerializeField] Button button;
    [SerializeField] TextEx nameText;
    [SerializeField] TextEx numText;
    WarlordPavilionManager manager { get { return WarlordPavilionManager.Instance; } }
    public void Display(NPCLineupConfig npcLineupConfig, float modelSize, int funcLineID, FBDJGLevelConfig config)
    {
        numText.text = posNum.ToString();
        bool hasHero = manager.TryGetNPCIDInLineupByPosNum(npcLineupConfig, posNum, out int npcID);
        uiHeroController.SetActive(hasHero);
        nameText.SetActive(hasHero);
        uiHeroController.SetActive(hasHero);
        if (!NPCConfig.HasKey(npcID))
            return;
        NPCConfig npcConfig = NPCConfig.Get(npcID);
        int heroID = npcConfig.RelatedHeroID;
        if (!HeroConfig.HasKey(heroID))
            return;
        HeroConfig heroConfig = HeroConfig.Get(heroID);
        uiHeroController.Create(npcConfig.SkinID, modelSize);
        Color color = UIHelper.GetUIColorByFunc(heroConfig.Quality);
        string name = UIHelper.AppendColor(color, heroConfig.Name);
        nameText.text = config.NPCLV == 0 ? name : Language.Get("WarlordPavilion34", name, config.NPCLV);
        numText.text = posNum.ToString();
        button.SetListener(() =>
        {
            if (!hasHero)
                return;
            if (ViewNPCManager.Instance.TryGetNPCAttr((uint)manager.DataMapID, (uint)funcLineID, (uint)npcID, out var npcAttr))
            {
                ViewNPCManager.Instance.OpenNPCDetailWin(npcAttr);
                return;
            }
            ViewNPCManager.Instance.SendViewNPCAttr((uint)manager.DataMapID, (uint)funcLineID, (uint)npcID);
            manager.viewNPCID = npcID;
        });
    }
}
Main/System/WarlordPavilion/WarlordPavilionNPCItem.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 89a6702338a7e464baff37bb3720cad9
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/WarlordPavilion/WarlordPavilionWin.cs
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
@@ -5,8 +6,7 @@
{
    [SerializeField] float modelSize;
    [SerializeField] TextEx txtCurrentLevel;                //当前关卡
    [SerializeField] TextEx txtBossName;
    [SerializeField] UIHeroController uiHeroController;
    [SerializeField] WarlordPavilionNPCItem[] heros;
    [SerializeField] List<SkillWordCell> skillWords;
    [SerializeField] ItemCell[] firstAwards;
    [SerializeField] ImageEx[] firstAwardMasks;
@@ -16,7 +16,6 @@
    [SerializeField] TextEx txtMax;
    [SerializeField] ButtonEx btnRank;
    [SerializeField] ButtonEx btnAward;
    [SerializeField] ButtonEx btnBossInfo;
    [SerializeField] ButtonEx btnFormation;                 //布阵
    [SerializeField] ButtonEx btnBonusPreset;               //加成预设
    [SerializeField] TextEx txtBonusPreset;               //加成预设
@@ -32,20 +31,6 @@
    WarlordPavilionManager manager { get { return WarlordPavilionManager.Instance; } }
    protected override void InitComponent()
    {
        btnBossInfo.SetListener(() =>
        {
            if (npcConfig == null)
                return;
            uint mapID = (uint)manager.DataMapID;
            uint funcLineID = (uint)manager.GetLineID(showLayerNum, showLevelNum);
            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;
            }
            ViewNPCManager.Instance.SendViewNPCAttr(mapID, funcLineID, npcID);
        });
        btnRank.SetListener(() =>
        {
            UIManager.Instance.OpenWindow<WarlordPavilionRankWin>();
@@ -92,6 +77,7 @@
    {
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        manager.OnUpdateDingjungeInfoEvent += OnUpdateDingjungeInfo;
        ViewNPCManager.Instance.OnUpdateViewNPCAttrRet += OnUpdateViewNPCAttrRet;
        Display();
    }
@@ -99,6 +85,14 @@
    {
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        manager.OnUpdateDingjungeInfoEvent -= OnUpdateDingjungeInfo;
        ViewNPCManager.Instance.OnUpdateViewNPCAttrRet -= OnUpdateViewNPCAttrRet;
    }
    private void OnUpdateViewNPCAttrRet(uint mapID, uint funcLineID)
    {
        if (mapID != (uint)manager.DataMapID)
            return;
        ViewNPCManager.Instance.TryOpenNPCDetailWin(mapID, funcLineID, (uint)manager.viewNPCID);
    }
    private void OnUpdateDingjungeInfo(List<int> indexs)
@@ -126,8 +120,8 @@
    int showLayerNum;
    int showLevelNum;
    int showFuncLineID;
    FBDJGLevelConfig config;
    NPCConfig npcConfig;
    private void Display()
    {
        uIEffectPlayer.Stop();
@@ -139,12 +133,11 @@
            return;
        if (!FBDJGLevelConfig.TryGetFBDJGLevelConfig(showLayerNum, showLevelNum, out config))
            return;
        if (!manager.TryGetNPCConfig(showLayerNum, showLevelNum, out npcConfig))
            return;
        showFuncLineID = manager.GetLineID(showLayerNum, showLevelNum);
        txtCurrentLevel.text = Language.Get("WarlordPavilion22", showLayerNum, showLevelNum);
        txtBossName.text = npcConfig.NPCName;
        uiHeroController.Create(npcConfig.SkinID, modelSize);
        DisplayHeros(config);
        DisplaySkillWordsList(config.SkillIDExList);
        DisplayItemCell(firstAwards, config.PassAwardList);
        manager.DisplayItemCell(challengeAwards, config.AwardList);
@@ -161,6 +154,26 @@
        }
        funPresetBtn.SetActive(FuncPresetManager.Instance.IsPreShow());
    }
    private void DisplayHeros(FBDJGLevelConfig config)
    {
        if (!manager.TryGetLineupConfig(config.LayerNum, config.LevelNum, out NPCLineupConfig npcLineupConfig))
        {
            for (int i = 0; i < heros.Length; i++)
            {
                var hero = heros[i];
                hero.SetActive(false);
            }
            return;
        }
        for (int i = 0; i < heros.Length; i++)
        {
            var hero = heros[i];
            hero.Display(npcLineupConfig, modelSize, showFuncLineID, config);
        }
    }
    private void DisplayButtons()
    {
        bool isPass = manager.IsPass();