hch
4 天以前 8d0dd8c699650f8a2caa9203ef177d56c06efb20
419 【内政】命格系统
4 文件已复制
1个文件已删除
1 文件已重命名
6个文件已添加
49个文件已修改
770 ■■■■ 已修改文件
Main/Config/ConfigManager.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/PresetUnlockConfig.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/PresetUnlockConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/PresetUnlockConfig.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/PresetUnlockConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ClientPack/CB4_FightDefine/CB412_tagCSHeroPresetSave.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB161_tagSCFuncPresetInfoList.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB162_tagSCFuncPresetSwitchInfo.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB163_tagSCBatPresetSwitchInfo.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCHeroPresetInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaBattleFailWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaBattleVictoryWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaChallengeCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaManager.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaPlayerRankCell.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaPlayerTop3Cell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaRecordCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Arena/ArenaWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/ArenaBattleWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/StoryBattleField.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Equip/EquipCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Equip/EquipModel.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FuncPreset.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FuncPreset/FuncPresetManager.cs 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FuncPreset/FuncPresetManager.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Hero/HeroInfo.Fetter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Hero/HeroInfo.Lineup.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Hero/HeroInfo.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroCardCell.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroDeleteWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroGiftRoleListWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroListWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroPosWin.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroTrainWin.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.OnTeam.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/LineupRecommend/LineupRecommendManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/AutoFightModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/FightPowerManager.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/HomeWin.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/MainWin.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/PlayerMainDate.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Mingge/MinggeCaseCell.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Mingge/MinggeCaseCell.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Mingge/MinggeEquipCell.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Mingge/MinggeEquipCell.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Mingge/MinggeManager.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Mingge/MinggeWin.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/AvatarCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/PhantasmPavilion/AvatarHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Team/TeamBase.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Team/TeamManager.cs 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Team/TeamType.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/UIBase/UIBase.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/WarlordPavilion/WarlordPavilionWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EnumHelper.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/ConfigManager.cs
@@ -90,6 +90,7 @@
            typeof(OrderInfoConfig),
            typeof(PlayerAttrConfig),
            typeof(PlayerFaceConfig),
            typeof(PresetUnlockConfig),
            typeof(PriorBundleConfig),
            typeof(RandomNameConfig),
            typeof(SignInConfig),
@@ -359,6 +360,8 @@
        ClearConfigDictionary<PlayerAttrConfig>();
        // 清空 PlayerFaceConfig 字典
        ClearConfigDictionary<PlayerFaceConfig>();
        // 清空 PresetUnlockConfig 字典
        ClearConfigDictionary<PresetUnlockConfig>();
        // 清空 PriorBundleConfig 字典
        ClearConfigDictionary<PriorBundleConfig>();
        // 清空 RandomNameConfig 字典
Main/Config/Configs/PresetUnlockConfig.cs
New file
@@ -0,0 +1,50 @@
//--------------------------------------------------------
//    [Author]:           YYL
//    [  Date ]:           2026年1月19日
//--------------------------------------------------------
using System.Collections.Generic;
using System;
using UnityEngine;
using LitJson;
public partial class PresetUnlockConfig : ConfigBase<int, PresetUnlockConfig>
{
    static PresetUnlockConfig()
    {
        // 访问过静态构造函数
        visit = true;
    }
    public int ID;
    public int PresetType;
    public int PresetID;
    public int UnlockType;
    public int UnlockValue;
    public override int LoadKey(string _key)
    {
        int key = GetKey(_key);
        return key;
    }
    public override void LoadConfig(string input)
    {
        try {
        string[] tables = input.Split('\t');
        int.TryParse(tables[0],out ID);
            int.TryParse(tables[1],out PresetType);
            int.TryParse(tables[2],out PresetID);
            int.TryParse(tables[3],out UnlockType);
            int.TryParse(tables[4],out UnlockValue);
        }
        catch (Exception exception)
        {
            Debug.LogError(exception);
        }
    }
}
Main/Config/Configs/PresetUnlockConfig.cs.meta
copy from Main/System/Team/TeamType.cs.meta copy to Main/Config/Configs/PresetUnlockConfig.cs.meta
File was copied from Main/System/Team/TeamType.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 097080eb83a42b54bbc2b10bc100993b
guid: 8ecdeb51d01330b43960aae797dd7d53
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Config/PartialConfigs/PresetUnlockConfig.cs
New file
@@ -0,0 +1,24 @@
using System.Collections.Generic;
public partial class PresetUnlockConfig : ConfigBase<int, PresetUnlockConfig>
{
    static Dictionary<int, Dictionary<int, PresetUnlockConfig>> m_PresetUnlockDict = new Dictionary<int, Dictionary<int, PresetUnlockConfig>>();
    protected override void OnConfigParseCompleted()
    {
        if (!m_PresetUnlockDict.ContainsKey(PresetType))
        {
            m_PresetUnlockDict[PresetType] = new Dictionary<int, PresetUnlockConfig>();
        }
        m_PresetUnlockDict[PresetType][PresetID] = this;
    }
    public static PresetUnlockConfig GetPresetUnlockConfig(int presetType, int presetID)
    {
        if (m_PresetUnlockDict.ContainsKey(presetType) && m_PresetUnlockDict[presetType].ContainsKey(presetID))
        {
            return m_PresetUnlockDict[presetType][presetID];
        }
        return null;
    }
}
Main/Config/PartialConfigs/PresetUnlockConfig.cs.meta
copy from Main/System/Team/TeamType.cs.meta copy to Main/Config/PartialConfigs/PresetUnlockConfig.cs.meta
File was copied from Main/System/Team/TeamType.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 097080eb83a42b54bbc2b10bc100993b
guid: 25d58f7d8e96c334aa6041e24810a2d2
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Core/NetworkPackage/ClientPack/CB4_FightDefine/CB412_tagCSHeroPresetSave.cs
@@ -5,7 +5,6 @@
public class CB412_tagCSHeroPresetSave : GameNetPackBasic {
    public byte PresetID;    //阵容方案预设ID
    public byte ShapeType;    //本阵容阵型,0为默认阵型,可扩展不同的阵型
    public byte PosCnt;
    public  tagCSHeroPresetPos[] HeroPosList;    // 保存的阵容,只发送最终的阵容武将位置即可
@@ -16,7 +15,6 @@
    public override void WriteToBytes () {
        WriteBytes (PresetID, NetDataType.BYTE);
        WriteBytes (ShapeType, NetDataType.BYTE);
        WriteBytes (PosCnt, NetDataType.BYTE);
        for (int i = 0; i < PosCnt; i ++) {
            WriteBytes (HeroPosList[i].ItemIndex, NetDataType.WORD);
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB161_tagSCFuncPresetInfoList.cs
@@ -1,11 +1,12 @@
using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections;
// B1 61 功能预设信息 #tagSCFuncPresetInfoList
public class DTCB161_tagSCFuncPresetInfoList : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HB161_tagSCFuncPresetInfoList vNetData = vNetPack as HB161_tagSCFuncPresetInfoList;
        FuncPresetManager.Instance.UpdateFuncPresetInfoList(vNetData);
    }
}
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB162_tagSCFuncPresetSwitchInfo.cs
@@ -1,11 +1,12 @@
using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections;
// B1 62 功能预设切换信息 #tagSCFuncPresetSwitchInfo
public class DTCB162_tagSCFuncPresetSwitchInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HB162_tagSCFuncPresetSwitchInfo vNetData = vNetPack as HB162_tagSCFuncPresetSwitchInfo;
        FuncPresetManager.Instance.UpdateFuncPresetUseData(vNetData);
    }
}
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB163_tagSCBatPresetSwitchInfo.cs
@@ -1,11 +1,12 @@
using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections;
// B1 63 战斗预设切换信息 #tagSCBatPresetSwitchInfo
public class DTCB163_tagSCBatPresetSwitchInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HB163_tagSCBatPresetSwitchInfo vNetData = vNetPack as HB163_tagSCBatPresetSwitchInfo;
        FuncPresetManager.Instance.UpdateBatPresetNowUseInfo(vNetData);
    }
}
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -144,6 +144,9 @@
        Register(typeof(HA503_tagSCFamilyTaofaInfo), typeof(DTCA503_tagSCFamilyTaofaInfo));
        Register(typeof(HA504_tagSCFamilyTaofaAtkRet), typeof(DTCA504_tagSCFamilyTaofaAtkRet));
        Register(typeof(HB132_tagSCMinggeInfo), typeof(DTCB132_tagSCMinggeInfo));
        Register(typeof(HB161_tagSCFuncPresetInfoList), typeof(DTCB161_tagSCFuncPresetInfoList));
        Register(typeof(HB162_tagSCFuncPresetSwitchInfo), typeof(DTCB162_tagSCFuncPresetSwitchInfo));
        Register(typeof(HB163_tagSCBatPresetSwitchInfo), typeof(DTCB163_tagSCBatPresetSwitchInfo));
    }
    //主工程注册封包
Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCHeroPresetInfo.cs
@@ -17,7 +17,6 @@
        for (int i = 0; i < PresetCnt; i ++) {
            PresetList[i] = new tagSCHeroPreset();
            TransBytes (out PresetList[i].PresetID, vBytes, NetDataType.BYTE);
            TransBytes (out PresetList[i].ShapeType, vBytes, NetDataType.BYTE);
            TransBytes (out PresetList[i].HeroCnt, vBytes, NetDataType.BYTE);
            TransBytes (out PresetList[i].HeroItemIndexList, vBytes, NetDataType.WORD, PresetList[i].HeroCnt);
        }
@@ -25,7 +24,6 @@
    public class tagSCHeroPreset {
        public byte PresetID;        //阵容方案预设ID
        public byte ShapeType;        // 阵型
        public byte HeroCnt;
        public  ushort[] HeroItemIndexList;        // 所在武将背包索引+1列表 [站位1物品索引+1, 站位2, ...],站位无武将时为0
    }
Main/Main.cs
@@ -102,6 +102,7 @@
        managers.Add(ViewNPCManager.Instance);
        managers.Add(EquipRecordManager.Instance);
        managers.Add(MinggeManager.Instance);
        managers.Add(FuncPresetManager.Instance);
        foreach (var manager in managers)
        {
Main/System/Arena/ArenaBattleFailWin.cs
@@ -73,7 +73,7 @@
        enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)tagPlayerID, (int)enemyFace, (int)enemyFacePic));
        enemyAvatarCell.SetListener(() =>
        {
            AvatarHelper.TryViewOtherPlayerInfo((int)tagPlayerID, viewPlayerLineupType: (int)TeamType.ArenaDefense);
            AvatarHelper.TryViewOtherPlayerInfo((int)tagPlayerID, viewPlayerLineupType: (int)BattlePreSetType.Arena);
        });
        txtMyName.text = PlayerDatas.Instance.baseData.PlayerName;
Main/System/Arena/ArenaBattleVictoryWin.cs
@@ -67,7 +67,7 @@
        enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)tagPlayerID, (int)enemyFace, (int)enemyFacePic));
        enemyAvatarCell.SetListener(() =>
        {
            AvatarHelper.TryViewOtherPlayerInfo((int)tagPlayerID, viewPlayerLineupType: (int)TeamType.ArenaDefense);
            AvatarHelper.TryViewOtherPlayerInfo((int)tagPlayerID, viewPlayerLineupType: (int)BattlePreSetType.Arena);
        });
        txtMyName.text = PlayerDatas.Instance.baseData.PlayerName;
Main/System/Arena/ArenaChallengeCell.cs
@@ -35,7 +35,7 @@
        avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)arenaMatchInfo.PlayerID, (int)arenaMatchInfo.Face, (int)arenaMatchInfo.FacePic));
        avatarCell.SetListener(() =>
        {
            AvatarHelper.TryViewOtherPlayerInfo((int)arenaMatchInfo.PlayerID, viewPlayerLineupType: (int)TeamType.ArenaDefense);
            AvatarHelper.TryViewOtherPlayerInfo((int)arenaMatchInfo.PlayerID, viewPlayerLineupType: (int)BattlePreSetType.Arena);
        });
        txtName.text = UIHelper.ServerStringTrim(arenaMatchInfo.PlayerName);
Main/System/Arena/ArenaManager.cs
@@ -308,10 +308,10 @@
    //优先取进攻队伍的战力,没有进攻队伍,取主线战力
    public long GetMyFightPower()
    {
        var arenaDefenseTeam = TeamManager.Instance.GetTeam(TeamType.Arena);
        var arenaDefenseTeam = TeamManager.Instance.GetTeam(BattlePreSetType.Arena);
        return arenaDefenseTeam.IsEmpty() || arenaDefenseTeam.GetTeamHeroCount() <= 0 ?
            PlayerDatas.Instance.baseData.FightPower :
            FightPowerManager.Instance.GetTeamFightPower(TeamType.Arena, false);
            FightPowerManager.Instance.GetTeamFightPower(TeamManager.Instance.GetTeamID((int)BattlePreSetType.Arena), false);
    }
}
Main/System/Arena/ArenaPlayerRankCell.cs
@@ -53,7 +53,7 @@
            avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)rankData.id, (int)rankData.value3, (int)rankData.value4));
            avatarCell.SetListener(() =>
            {
                AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id, viewPlayerLineupType: (int)TeamType.ArenaDefense);
                AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id, viewPlayerLineupType: (int)BattlePreSetType.Arena);
            });
            nameText.text = rankData.name1;
            rankValueText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue));
@@ -64,7 +64,7 @@
        {
            queryPlayerBtn.AddListener(() =>
            {
                AvatarHelper.TryViewOtherPlayerInfo(viewPlayerId, viewPlayerLineupType: (int)TeamType.ArenaDefense);
                AvatarHelper.TryViewOtherPlayerInfo(viewPlayerId, viewPlayerLineupType: (int)BattlePreSetType.Arena);
            });
        }
    }
Main/System/Arena/ArenaPlayerTop3Cell.cs
@@ -27,7 +27,7 @@
        model.Create(HorseManager.Instance.GetOtherPlayerHorseSkinID((int)rankData.value6), (int)rankData.value5, 1);
        queryPlayerBtn.SetListener(() =>
        {
            AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id, viewPlayerLineupType: (int)TeamType.ArenaDefense);
            AvatarHelper.TryViewOtherPlayerInfo((int)rankData.id, viewPlayerLineupType: (int)BattlePreSetType.Arena);
        });
    }
Main/System/Arena/ArenaRecordCell.cs
@@ -67,7 +67,7 @@
        avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)arenaGameRec.Value3, (int)arenaGameRec.Value5, (int)arenaGameRec.Value6));
        avatarCell.SetListener(() =>
        {
            AvatarHelper.TryViewOtherPlayerInfo((int)arenaGameRec.Value3, viewPlayerLineupType: (int)TeamType.ArenaDefense);
            AvatarHelper.TryViewOtherPlayerInfo((int)arenaGameRec.Value3, viewPlayerLineupType: (int)BattlePreSetType.Arena);
        });
        txtName.text = arenaGameRec.Name;
        txtFightPoint.text = UIHelper.ReplaceLargeArtNum(arenaGameRec.FightPower);
Main/System/Arena/ArenaWin.cs
@@ -33,7 +33,7 @@
        });
        btnDeployTroops.SetListener(() =>
        {
            HeroUIManager.Instance.selectTeamType = TeamType.ArenaDefense;
            HeroUIManager.Instance.selectTeamType = TeamManager.Instance.GetTeamID((int)BattlePreSetType.Arena);
            UIManager.Instance.OpenWindow<HeroPosWin>(1); // 竞技场标签页
        });
    }
Main/System/Battle/ArenaBattleWin.cs
@@ -206,7 +206,7 @@
        enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)info.PlayerID, (int)info.Face, (int)info.FacePic));
        enemyAvatarCell.SetListener(() =>
        {
            AvatarHelper.TryViewOtherPlayerInfo((int)info.PlayerID, viewPlayerLineupType: (int)TeamType.ArenaDefense);
            AvatarHelper.TryViewOtherPlayerInfo((int)info.PlayerID, viewPlayerLineupType: (int)BattlePreSetType.Arena);
        });
        var team = GetTeamHeroList(enemyTeam);
        enemyCountry.RefreshOnTeamCountry(team, true);
Main/System/Battle/BattleField/StoryBattleField.cs
@@ -138,9 +138,9 @@
        base.OnTurnFightState(turnNum, State, FuncLineID, extendData);
    }
    protected void OnTeamChange(TeamType teamType)
    protected void OnTeamChange(int teamType)
    {
        if (teamType == TeamType.Story)
        if (teamType == TeamManager.Instance.GetMainTeamID())
        {
            if (battleState == StoryBattleState.Break)
            {
@@ -171,8 +171,8 @@
    protected void ReloadTeam()
    {
        PreloadResources(new List<TeamBase>() { TeamManager.Instance.GetTeam(TeamType.Story) }, null);
        battleObjMgr.ReloadTeam(TeamManager.Instance.GetTeam(TeamType.Story), BattleCamp.Red);
        PreloadResources(new List<TeamBase>() { TeamManager.Instance.GetTeam(BattlePreSetType.Story) }, null);
        battleObjMgr.ReloadTeam(TeamManager.Instance.GetTeam(BattlePreSetType.Story), BattleCamp.Red);
    }
    // public override void OnBattleEnd(JsonData turnFightStateData)
Main/System/Battle/BattleManager.cs
@@ -109,7 +109,7 @@
        {
            var redTeamList = new List<TeamBase>();
            TeamBase storyTeam = TeamManager.Instance.GetTeam(TeamType.Story);
            TeamBase storyTeam = TeamManager.Instance.GetTeam(BattlePreSetType.Story);
            redTeamList.Add(storyTeam);
Main/System/Equip/EquipCell.cs
@@ -64,7 +64,7 @@
            {
                uieff.effectId = 1026;
                uieff.PlayByArrIndex(equip.config.ItemColor - 7, true, true);
                uieff.PlayByArrIndex(equip.config.ItemColor - 7, true);
            }
            else
            {
Main/System/Equip/EquipModel.cs
@@ -495,6 +495,15 @@
        return equip.GetUseData(19);
    }
    //技能ID列表
    public List<int> GetEquipSkillIDs(ItemModel equip)
    {
        if (equip == null)
        {
            return new List<int>();
        }
        return equip.GetUseData(37);
    }
    //得到装备位对应的部位名称
    public string GetEquipPlaceName(int place)
Main/System/FuncPreset.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: aa86b940defc60440ac6c5e73d67dc70
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/FuncPreset/FuncPresetManager.cs
New file
@@ -0,0 +1,176 @@
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System;
//方案预设:流派设定
// 这里存储的是流派id设定; 功能预设在各个功能里如命格的是存在命格背包对应,武将是另外通知使用的格子索引
public class FuncPresetManager : GameSystemManager<FuncPresetManager>
{
    //预设方案:功能类型(含全局和子功能,配表)-子方案ID-预设方案解锁名称信息
    Dictionary<int, Dictionary<int, FuncPreset>> m_FuncPresetDict = new Dictionary<int, Dictionary<int, FuncPreset>>();
    public event Action OnFuncPresetInfoListChanged;    //流派设置总信息
    //对应 BattlePreSetType 战斗类型 : 全局方案ID
    Dictionary<int, int> battlePreSetDict = new Dictionary<int, int>();
    public event Action OnBattelePresetEvent;
    //所有预设方案的保存信息 全局方案ID :子功能类型(配表):子方案ID
    Dictionary<int, Dictionary<int, int>> m_FuncPresetSaveDict = new Dictionary<int, Dictionary<int, int>>();
    public event Action OnFuncPresetUseDataEvent;
    public const int GlobalDefaultPresetID = 1; //默认全局方案ID
    public const int FuncDefaultPresetID = 1;   //默认子功能方案ID
    public int teamPresetMaxID = 1; //阵容预设最大ID, 默认1按解锁开放
    public override void Init()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitialize;
        ParseConfig();
    }
    public override void Release()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitialize;
    }
    void ParseConfig()
    {
    }
    private void OnBeforePlayerDataInitialize()
    {
        battlePreSetDict.Clear();
        InitFuncPreset();
    }
    void InitFuncPreset()
    {
        m_FuncPresetDict.Clear();
        // if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Mingge))
        // {
        //     return;
        // }
        var keys = PresetUnlockConfig.GetKeys();
        for (int i = 0; i < keys.Count; i++)
        {
            var config = PresetUnlockConfig.Get(keys[i]);
            if (!m_FuncPresetDict.ContainsKey(config.PresetType))
            {
                m_FuncPresetDict[config.PresetType] = new Dictionary<int, FuncPreset>();
            }
            m_FuncPresetDict[config.PresetType][config.PresetID] = new FuncPreset()
            {
                PresetID = config.PresetID,
                unLock = config.UnlockType == 0,
                PresetName = Language.Get("Mingge13") + config.PresetID,
            };
        }
    }
    public void UpdateFuncPresetInfoList(HB161_tagSCFuncPresetInfoList vNetData)
    {
        for (int i = 0; i < vNetData.FuncCnt; i++)
        {
            var funcPresetInfo = vNetData.FuncPresetList[i];
            if (!m_FuncPresetDict.ContainsKey(funcPresetInfo.FuncPresetType))
            {
                m_FuncPresetDict[funcPresetInfo.FuncPresetType] = new Dictionary<int, FuncPreset>();
            }
            for (int j = 0; j < funcPresetInfo.PresetCnt; j++)
            {
                var preset = funcPresetInfo.PresetList[j];
                //该功能预设解锁状态,按预设ID二进制位运算记录是否已解锁
                m_FuncPresetDict[funcPresetInfo.FuncPresetType][preset.PresetID] = new FuncPreset()
                {
                    PresetID = preset.PresetID,
                    unLock = (funcPresetInfo.UnlockState & (1 << preset.PresetID)) != 0,
                    PresetName = string.IsNullOrEmpty(preset.PresetName) ? Language.Get("Mingge13") + preset.PresetID : preset.PresetName,
                };
            }
        }
        OnFuncPresetInfoListChanged?.Invoke();
    }
    //每个全局方案的存储信息
    public void UpdateFuncPresetUseData(HB162_tagSCFuncPresetSwitchInfo vNetData)
    {
        for (int i = 0; i < vNetData.BatPresetCnt; i++)
        {
            var batPreset = vNetData.BatPresetList[i];
            if (!m_FuncPresetSaveDict.ContainsKey(batPreset.BatPresetID))
            {
                m_FuncPresetSaveDict[batPreset.BatPresetID] = new Dictionary<int, int>();
            }
            for (int j = 0; j < batPreset.FuncCnt; j++)
            {
                var funcPreset = batPreset.FuncPresetList[j];
                m_FuncPresetSaveDict[batPreset.BatPresetID][funcPreset.FuncPresetType] = funcPreset.FuncPresetID;
            }
        }
        OnFuncPresetUseDataEvent?.Invoke();
    }
    //当前战斗功能的全局方案ID使用情况
    public void UpdateBatPresetNowUseInfo(HB163_tagSCBatPresetSwitchInfo netPack)
    {
        for (int i = 0; i < netPack.BatFuncCnt; i++)
        {
            battlePreSetDict[netPack.BatPresetList[i].BatPresetType] = netPack.BatPresetList[i].BatPresetID;
        }
        OnBattelePresetEvent?.Invoke();
    }
    //获取全局方案ID,如果取不到默认方案1
    public int GetGlobalPresetID(int type)
    {
        if (battlePreSetDict.ContainsKey(type))
        {
            return battlePreSetDict[type];
        }
        return 1;
    }
    //获取子功能方案ID,如果取不到默认方案1
    public int GetFuncPresetID(int type, int presetID)
    {
        if (m_FuncPresetSaveDict.ContainsKey(presetID) && m_FuncPresetSaveDict[presetID].ContainsKey(type))
        {
            return m_FuncPresetSaveDict[presetID][type];
        }
        return 1;
    }
}
public class FuncPreset
{
    public int PresetID;        //预设方案ID
    public bool unLock; //是否解锁
    public string PresetName;        //预设名称
}
//战斗功能区分对应存储全局方案ID,如演武场防守用哪个全局方案ID的分类
public enum BattlePreSetType
{
    None = 0,
    Story = 1, //主线
    Arena = 2,  //演武场防守
}
//功能预设类型 1-全局战斗;2-阵容;3-命格;
public enum FuncPresetType
{
    Global = 1,
    Team = 2,
    Mingge = 3,
}
Main/System/FuncPreset/FuncPresetManager.cs.meta
copy from Main/System/Team/TeamType.cs.meta copy to Main/System/FuncPreset/FuncPresetManager.cs.meta
File was copied from Main/System/Team/TeamType.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 097080eb83a42b54bbc2b10bc100993b
guid: a8f801f20f111f944bcd09b9bfa9c1b0
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/System/Hero/HeroInfo.Fetter.cs
@@ -8,7 +8,7 @@
    //不同阵容羁绊属性不同,实时计算,与其他缓存的不同
    public void RefreshFetterAttrsWhenCalcPower(TeamType teamType)
    public void RefreshFetterAttrsWhenCalcPower(int teamType)
    {
        fetterAttrs.Clear();
        var list = GetActiveFetter(heroConfig, TeamManager.Instance.GetTeam(teamType));
Main/System/Hero/HeroInfo.Lineup.cs
@@ -5,12 +5,12 @@
//阵容布阵
public partial class HeroInfo
{
    public Dictionary<TeamType, KeyValuePair<int, int>> GetTeamTypeShapeTypePositionDict()
    public Dictionary<int, KeyValuePair<int, int>> GetTeamTypeShapeTypePositionDict()
    {
        //  英雄当前所有在的队伍
        List<int> heroTeams = itemHero.GetUseData(81);
        Dictionary<TeamType, KeyValuePair<int, int>> teamTypeShapeTypePositionDict = new Dictionary<TeamType, KeyValuePair<int, int>>();
        Dictionary<int, KeyValuePair<int, int>> teamTypeShapeTypePositionDict = new Dictionary<int, KeyValuePair<int, int>>();
        foreach (var teamMsg in heroTeams)
        {
            // 所在阵容信息列表 [阵容类型*10000+阵型类型*100+位置编号, ...] 
@@ -18,7 +18,7 @@
            int shapeType = (teamMsg % 10000) / 100;
            int positionIndex = teamMsg % 100;
            if (teamTypeShapeTypePositionDict.ContainsKey((TeamType)teamType))
            if (teamTypeShapeTypePositionDict.ContainsKey(teamType))
            {
                //  队伍类型相同,更新阵型和位置
                Debug.LogError("当前英雄拥有两个相同的队伍信息: " + teamType + " " + shapeType + " " + positionIndex + ", hero guid is " + itemHero.guid);
@@ -27,7 +27,7 @@
            {
                //  队伍类型不同,添加新的
                KeyValuePair<int, int> shapeTypePosition = new KeyValuePair<int, int>(shapeType, positionIndex);
                teamTypeShapeTypePositionDict.Add((TeamType)teamType, shapeTypePosition);
                teamTypeShapeTypePositionDict.Add(teamType, shapeTypePosition);
            }
        }
Main/System/Hero/HeroInfo.cs
@@ -112,17 +112,17 @@
    //是否上x阵 服务端队伍
    public bool IsInTeamByTeamType(TeamType teamType)
    public bool IsInTeamByTeamType(BattlePreSetType battleType)
    {
        return TeamManager.Instance.GetTeam(teamType).HasHeroInServer(itemHero.guid);
        return TeamManager.Instance.GetTeam(battleType).HasHeroInServer(itemHero.guid);
    }
    //是否上任何阵容
    public bool IsInAnyTeam()
    {
        for (int i = 1; i < (int)TeamType.Max; i++)
        for (int i = 1; i < FuncPresetManager.Instance.teamPresetMaxID; i++)
        {
            if (TeamManager.Instance.GetTeam((TeamType)i).HasHeroInServer(itemHero.guid))
            if (TeamManager.Instance.GetTeam(i).HasHeroInServer(itemHero.guid))
            {
                return true;
            }
@@ -133,9 +133,9 @@
    //是否上任何阵容,且只有一只
    public bool IsInAnyTeamJustOne()
    {
        for (int i = 1; i < (int)TeamType.Max; i++)
        for (int i = 1; i < FuncPresetManager.Instance.teamPresetMaxID; i++)
        {
            var team = TeamManager.Instance.GetTeam((TeamType)i);
            var team = TeamManager.Instance.GetTeam(i);
            if (team.HasHeroInServer(itemHero.guid))
            {
                if (team.GetTeamHeroCount() == 1)
@@ -148,11 +148,11 @@
    //下阵所有阵容
    public void LeaveAllTeam()
    {
        for (int i = 1; i < (int)TeamType.Max; i++)
        for (int i = 1; i < FuncPresetManager.Instance.teamPresetMaxID; i++)
        {
            int pos;
            var team = TeamManager.Instance.GetTeam((TeamType)i);
            if (TeamManager.Instance.GetTeam((TeamType)i).RemoveHero(this, out pos))
            var team = TeamManager.Instance.GetTeam(i);
            if (TeamManager.Instance.GetTeam(i).RemoveHero(this, out pos))
            {
                //如果是最后一个武将,则默认上阵一个
                team.SaveTeam();
Main/System/HeroUI/HeroCardCell.cs
@@ -39,9 +39,9 @@
        countryImg.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country));
        jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(heroConfig.Class));
        heroModel.Create(heroConfig.SkinIDList[hero.SkinIndex], heroConfig.UIScale);
        onStateImg.SetActive(hero.IsInTeamByTeamType(TeamType.Story));
        onStateImg.SetActive(hero.IsInTeamByTeamType(BattlePreSetType.Story));
        int teamPos = TeamManager.Instance.GetTeam(TeamType.Story).GetPosition(hero.itemHero.guid);
        int teamPos = TeamManager.Instance.GetTeam(BattlePreSetType.Story).GetPosition(hero.itemHero.guid);
        if (teamPos >= 0)
        {
            redpoint.redpointId = MainRedDot.HeroCardRedpoint * 10 + teamPos;
Main/System/HeroUI/HeroDeleteWin.cs
@@ -103,7 +103,7 @@
        }
    }
    void OnTeamChange(TeamType type)
    void OnTeamChange(int type)
    {
        scroller.m_Scorller.RefreshActiveCellViews();
    }
Main/System/HeroUI/HeroGiftRoleListWin.cs
@@ -60,7 +60,7 @@
        HeroGiftRoleListCell heroGiftRoleListCell = cellView as HeroGiftRoleListCell;
        heroGiftRoleListCell.Display(cellView.index);
    }
    void OnTeamChange(TeamType type)
    void OnTeamChange(int type)
    {
        scroller.m_Scorller.RefreshActiveCellViews();
    }
Main/System/HeroUI/HeroListWin.cs
@@ -34,7 +34,7 @@
        });
        changeHeroPosBtn.AddListener(() =>
        {
            HeroUIManager.Instance.selectTeamType = TeamType.Story;
            HeroUIManager.Instance.selectTeamType = TeamManager.Instance.GetMainTeamID();
            UIManager.Instance.OpenWindow<HeroPosWin>();
        });
        attrOnTipBtn.AddListener(() =>
Main/System/HeroUI/HeroPosWin.cs
@@ -66,23 +66,15 @@
    protected override void InitComponent()
    {
        attackTeamBtn.AddListener(() =>
        {
            SelectTeamFunc((TeamType)HeroUIManager.Instance.GetSelectTeamTypeByAttackType(0));
        });
        defendTeamBtn.AddListener(() =>
        {
            SelectTeamFunc((TeamType)HeroUIManager.Instance.GetSelectTeamTypeByAttackType(1));
        });
        mainFBBtn.AddListener(() =>
        {
            SelectTeamFunc(TeamType.Story);
            SelectTeamFunc(TeamManager.Instance.GetMainTeamID());
        });
        jjcBtn.AddListener(() =>
        {
            SelectTeamFunc(TeamType.Arena);
            SelectTeamFunc(TeamManager.Instance.GetTeamID((int)BattlePreSetType.Arena));
        });
        // tttBtn.AddListener(() =>
        // {
@@ -320,25 +312,6 @@
    //管理布阵入口按钮:如竞技场是否根据功能显隐,通天塔和主线只有进攻方布阵默认不显示
    void RefreshOnTeamBtn()
    {
        if (HeroUIManager.Instance.selectTeamType == TeamType.Arena ||
            HeroUIManager.Instance.selectTeamType == TeamType.ArenaDefense)
        {
            attackTeamBtn.SetActive(true);
            defendTeamBtn.SetActive(true);
            if (HeroUIManager.Instance.selectTeamType == TeamType.Arena)
            {
                attackTeamBtn.SelectBtn(true);
            }
            else
            {
                defendTeamBtn.SelectBtn(true);
            }
        }
        else
        {
            attackTeamBtn.SetActive(false);
            defendTeamBtn.SetActive(false);
        }
    }
@@ -528,7 +501,7 @@
        team.SaveTeam();
    }
    void SelectTeamFunc(TeamType type)
    void SelectTeamFunc(int type)
    {
        if (HeroUIManager.Instance.selectTeamType == type)
        {
@@ -541,7 +514,7 @@
        heroListScroller.m_Scorller.RefreshActiveCellViews();
    }
    protected void OnTeamChange(TeamType teamType)
    protected void OnTeamChange(int teamType)
    {
        if (HeroUIManager.Instance.selectTeamType == teamType)
        {
Main/System/HeroUI/HeroTrainWin.cs
@@ -823,9 +823,9 @@
        }
    }
    void TeamPosChangeEvent(TeamType teamType)
    void TeamPosChangeEvent(int teamType)
    {
        if (teamType != TeamType.Story)
        if (teamType != TeamManager.Instance.GetMainTeamID())
            return;
        fightPowerText.text = UIHelper.ReplaceLargeArtNum(hero.CalculateFightPower());
    }
@@ -895,7 +895,7 @@
        }
        if (!hero.IsInTeamByTeamType(TeamType.Story))
        if (!hero.IsInTeamByTeamType(BattlePreSetType.Story))
        {
            return;
        }
Main/System/HeroUI/HeroUIManager.OnTeam.cs
@@ -11,8 +11,8 @@
    #region 布阵界面
    public List<string> heroOnTeamSortList { get; private set; } = new List<string>();    //不同上阵的列表排序
    private TeamType m_SelectTeamType = TeamType.Story; //当前选中的是哪个阵容, 布阵相关逻辑使用
    public TeamType selectTeamType
    private int m_SelectTeamType = 1; //当前选中的是哪个全局方案ID, 布阵相关逻辑使用
    public int selectTeamType
    {
        get { return m_SelectTeamType; }
        set
@@ -20,7 +20,7 @@
            if (m_SelectTeamType == value)
                return;
            //上一个阵容需要恢复到原状态
            if (m_SelectTeamType != TeamType.None)
            if (m_SelectTeamType != 0)
            {
                TeamManager.Instance.GetTeam(m_SelectTeamType).RestoreTeam();
            }
@@ -28,6 +28,8 @@
            m_SelectTeamType = value;
        }
    }
    public int setlectTabIndex = 0; //战斗总标签 对应 BattlePreSetType
    public List<int> selectListTeamPos = new List<int>();    //布阵界面 筛选条件
@@ -88,10 +90,9 @@
    /// <summary>
    /// 按队伍获得阵型(国家光环)属性
    /// </summary>
    /// <param name="teamType"></param>
    /// <param name="isPreview">true 客户端预览阵容,默认false 服务器阵容</param>
    /// <returns></returns>
    public Dictionary<int, int> GetCountryAttrs(TeamType teamType, bool isPreview = false)
    public Dictionary<int, int> GetCountryAttrs(int teamType, bool isPreview = false)
    {
        Dictionary<int, int> countryAttrs = new Dictionary<int, int>();
        Int2 result = GetMaxCountHeroCountry(teamType, isPreview);
@@ -164,7 +165,7 @@
    /// <param name="teamType"></param>
    /// <param name="isPreview">true 客户端预览阵容,默认false 服务器阵容</param>
    /// <returns></returns>
    public Dictionary<HeroCountry, int> GetCountryHeroCountByTeamType(TeamType teamType, bool isPreview = false)
    public Dictionary<HeroCountry, int> GetCountryHeroCountByTeamType(int teamType, bool isPreview = false)
    {
        Dictionary<HeroCountry, int> heroCountryCount = new Dictionary<HeroCountry, int>();
@@ -233,7 +234,7 @@
    /// <param name="teamType"></param>
    /// <param name="isPreview">true 客户端预览阵容,默认false 服务器阵容</param>
    /// <returns></returns>
    public Int2 GetMaxCountHeroCountry(TeamType teamType, bool isPreview = false)
    public Int2 GetMaxCountHeroCountry(int teamType, bool isPreview = false)
    {
        var countryCountDict = GetCountryHeroCountByTeamType(teamType, isPreview);
        //找到最大的国家和数量
@@ -268,18 +269,6 @@
            }
        }
        return new Int2((int)country, maxValue);
    }
    //在不同页签下选AttackType 0 攻击阵容 1 防守阵容
    public int GetSelectTeamTypeByAttackType(int AttackType)
    {
        if (selectTeamType == TeamType.Arena || selectTeamType == TeamType.ArenaDefense)
        {
            return AttackType == 0 ? (int)TeamType.Arena : (int)TeamType.ArenaDefense;
        }
        return (int)TeamType.Story;
    }
@@ -534,7 +523,7 @@
    {
        int minLV = int.MaxValue;
        int minID = -1;
        var team = TeamManager.Instance.GetTeam(TeamType.Story);
        var team = TeamManager.Instance.GetTeam(TeamManager.Instance.GetMainTeamID());
        for (int i = 0; i < team.serverHeroes.Length; i++)
        {
            if (team.serverHeroes[i] != null)
Main/System/HeroUI/HeroUIManager.cs
@@ -304,8 +304,8 @@
        }
        // 排序规则:上阵>武将等级>突破等级>武将觉醒阶级>武将品质>武将吞噬星级>武将ID
        bool isInTeamA = heroA.IsInTeamByTeamType(TeamType.Story);
        bool isInTeamB = heroB.IsInTeamByTeamType(TeamType.Story);
        bool isInTeamA = heroA.IsInTeamByTeamType(BattlePreSetType.Story);
        bool isInTeamB = heroB.IsInTeamByTeamType(BattlePreSetType.Story);
        if (isInTeamA != isInTeamB)
        {
            return isInTeamA ? -1 : 1;
@@ -499,7 +499,7 @@
            return 0;
        var heroCnt = PackManager.Instance.GetItemCountByID(PackType.Hero, hero.heroId);
        if (!hero.IsInTeamByTeamType(TeamType.Story))
        if (!hero.IsInTeamByTeamType(BattlePreSetType.Story))
        {
            if (hero.heroStar < hero.GetCurMaxStar() && heroCnt > 1)
            {
@@ -579,7 +579,7 @@
        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Hero))
            return;
        var team = TeamManager.Instance.GetTeam(TeamType.Story);
        var team = TeamManager.Instance.GetTeam(BattlePreSetType.Story);
        for (int i = 0; i < heroOnTeamRedpointList.Count; i++)
        {
            var redpoint = heroOnTeamRedpointList[i];
@@ -712,9 +712,9 @@
        }
    }
    void OnTeamChangeEvent(TeamType teamType)
    void OnTeamChangeEvent(int teamType)
    {
        if (teamType == TeamType.Story)
        if (teamType == TeamManager.Instance.GetMainTeamID())
        {
            refreshRedPoint = true;
        }
Main/System/LineupRecommend/LineupRecommendManager.cs
@@ -192,7 +192,7 @@
            return;
        }
        TeamBase storyTeam = TeamManager.Instance.GetTeam(TeamType.Story);
        TeamBase storyTeam = TeamManager.Instance.GetTeam(BattlePreSetType.Story);
        storyTeam.RemoveAllHeroes();
        int currentMaxLineupCount = TeamConst.MaxTeamHeroCount - HeroUIManager.Instance.lockIndexList.Count;
Main/System/Main/AutoFightModel.cs
@@ -410,7 +410,7 @@
        fightingHeroSkinID = teamHero.SkinID;
        //战斗时没有GUID ,通过heroid查找
        var hero = TeamManager.Instance.GetTeam(TeamType.Story).GetHeroByHeroID(teamHero.heroId);
        var hero = TeamManager.Instance.GetTeam(BattlePreSetType.Story).GetHeroByHeroID(teamHero.heroId);
        if (hero != null)
        {
            heroGuid = hero.guid;
Main/System/Main/FightPowerManager.cs
@@ -120,7 +120,7 @@
    }
    #region 初始化战力计算的信息
    TeamType teamTypeCalc = TeamType.Story; //不同阵容战力不同
    int teamTypeCalc = 1; //不同阵容战力不同
    bool isPreviewTeamPower;  //预览阵容(队伍)战力
    int dropIndexCalc = -1; //掉落装备在阵容的索引,用于预览战力对比
@@ -131,7 +131,7 @@
    /// <param name="teamType">阵容类型</param>
    /// <param name="dropindex">掉落装备的索引,-1代表不替换计算</param>
    /// <param name="ispreview">预览阵容战力</param>
    public void InitFightPowerParam(TeamType teamType = TeamType.Story, int dropindex = -1, bool ispreview = false)
    public void InitFightPowerParam(int teamType = 1, int dropindex = -1, bool ispreview = false)
    {
#if !UNITY_EDITOR
        openLog = false;
@@ -608,7 +608,7 @@
    public long GetHeroFightPower(HeroInfo heroInfo)
    {
        bool ispreview = false;
        var team = TeamManager.Instance.GetTeam(TeamType.Story);
        var team = TeamManager.Instance.GetTeam(TeamManager.Instance.GetMainTeamID());
        if (!team.HasHero(heroInfo.itemHero.guid))
        {
            //替换上阵位置
@@ -640,7 +640,7 @@
    //查看阵容战力
    public long GetTeamFightPower(TeamType team, bool isPreview)
    public long GetTeamFightPower(int team, bool isPreview)
    {
        InitFightPowerParam(team, -1, isPreview);
        return CalculatePower();
@@ -652,7 +652,7 @@
    {
        Dictionary<int, long> tmpAttrs = new Dictionary<int, long>();
        hero.RefreshFetterAttrsWhenCalcPower(TeamType.Story); //羁绊属性要实时算
        hero.RefreshFetterAttrsWhenCalcPower(TeamManager.Instance.GetMainTeamID()); //羁绊属性要实时算
#if UNITY_EDITOR
        propertyStrForDebug = "";
Main/System/Main/HomeWin.cs
@@ -108,7 +108,7 @@
        changeHeroPosBtn.AddListener(() =>
        {
            HeroUIManager.Instance.selectTeamType = TeamType.Story;
            HeroUIManager.Instance.selectTeamType = TeamManager.Instance.GetMainTeamID();
            UIManager.Instance.OpenWindow<HeroPosWin>();
        });
@@ -226,7 +226,7 @@
        RefreshRecharge();
        ShowBlessLV();
        DisplayAutoFight();
        DisplayCard(TeamType.Story);
        DisplayCard(TeamManager.Instance.GetMainTeamID());
        DisplayLevel();
        DisplayRestState();
@@ -607,11 +607,11 @@
        TaskManager.Instance.ClickTask();
    }
    void DisplayCard(TeamType teamType)
    void DisplayCard(int presetID)
    {
        if (teamType != TeamType.Story)
        if (presetID != TeamManager.Instance.GetMainTeamID())
            return;
        var team = TeamManager.Instance.GetTeam(teamType);
        var team = TeamManager.Instance.GetTeam(presetID);
        var heros = team.GetHerosOnTeam();
        //显示卡牌
        for (int i = 0; i < heroFightingCardCells.Length; i++)
@@ -625,7 +625,7 @@
        //其他武将功能产生数据变化,需要刷新武将列表
        if (closeUI is HeroTrainWin)
        {
            DisplayCard(TeamType.Story);
            DisplayCard(TeamManager.Instance.GetMainTeamID());
        }
        if (closeUI is ChatWin)
@@ -782,7 +782,7 @@
    void OnUnLockHeroCountEvent()
    {
        DisplayCard(TeamType.Story);
        DisplayCard(TeamManager.Instance.GetMainTeamID());
    }
Main/System/Main/MainWin.cs
@@ -384,7 +384,7 @@
    {
        if (string.IsNullOrEmpty(guid))
        {
            var tmpHero = TeamManager.Instance.GetTeam(TeamType.Story).GetNextServerHero("");
            var tmpHero = TeamManager.Instance.GetTeam(BattlePreSetType.Story).GetNextServerHero("");
            if (tmpHero != null)
            {
                AutoFightModel.Instance.fightingHeroSkinID = tmpHero.SkinID;
@@ -409,7 +409,7 @@
            cdTween.SetStartState();
            cdTween.Play(() =>
            {
                var tmpHero = TeamManager.Instance.GetTeam(TeamType.Story).GetNextServerHero(AutoFightModel.Instance.heroGuid);
                var tmpHero = TeamManager.Instance.GetTeam(BattlePreSetType.Story).GetNextServerHero(AutoFightModel.Instance.heroGuid);
                if (tmpHero != null)
                {
                    AutoFightModel.Instance.fightingHeroSkinID = tmpHero.SkinID;
@@ -430,7 +430,7 @@
        if (AutoFightModel.Instance.fightingHeroSkinID == 0)
        {
            var tmpHero = TeamManager.Instance.GetTeam(TeamType.Story).GetNextServerHero(AutoFightModel.Instance.heroGuid);
            var tmpHero = TeamManager.Instance.GetTeam(BattlePreSetType.Story).GetNextServerHero(AutoFightModel.Instance.heroGuid);
            if (tmpHero != null)
            {
                AutoFightModel.Instance.fightingHeroSkinID = tmpHero.SkinID;
Main/System/Main/PlayerMainDate.cs
@@ -112,7 +112,7 @@
            return;
        }
        if (hero.IsInTeamByTeamType(TeamType.Story))
        if (hero.IsInTeamByTeamType(BattlePreSetType.Story))
        { 
            return;
        }
Main/System/Mingge/MinggeCaseCell.cs
New file
@@ -0,0 +1,18 @@
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
//命格方案
public class MinggeCaseCell : MonoBehaviour
{
    [SerializeField] Text caseNameText;
    [SerializeField] Transform selectObj;
    [SerializeField] Transform unSelectObj;
    public void Display(int index)
    {
    }
}
Main/System/Mingge/MinggeCaseCell.cs.meta
File was renamed from Main/System/Team/TeamType.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 097080eb83a42b54bbc2b10bc100993b
guid: d82ac7d0e4493ee4fb4fe720c72564fb
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/System/Mingge/MinggeEquipCell.cs
New file
@@ -0,0 +1,60 @@
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
public class MinggeEquipCell : MonoBehaviour
{
    [SerializeField] UIEffectPlayer loopEffect;
    [SerializeField] Text posNameText;
    [SerializeField] Text lvText;
    [SerializeField] Image iconImage;
    [SerializeField] Image skillImage;  //只有带意象技能才显示
    [SerializeField] UIEffectPlayer activeEffect;
    [SerializeField] Button button;
    [Header("命格装备位")]
    public int equipIndex;
    public void Display()
    {
        var packIndex = equipIndex - 1; //对应卦玉背包索引 = (套编号-1)*12+装备位-1
        var item = PackManager.Instance.GetItemByIndex(PackType.Mingge, packIndex);
        if (item == null)
        {
            loopEffect?.Stop();
            posNameText.text = Language.Get($"MinggeGird{packIndex}");
            iconImage.SetActive(false);
            button.RemoveAllListeners();
            return;
        }
        posNameText.text = "";
        iconImage.SetActive(true);
        int itemID = item.config.ID;
        iconImage.SetItemSprite(itemID);
        if (packIndex <= 4 && skillImage != null)
        {
            skillImage.SetActive(true);
            skillImage.SetSprite($"MinggeSkill_{itemID}");
            loopEffect.Play();
        }
        else
        {
            skillImage.SetActive(false);
        }
        lvText.text = EquipModel.Instance.GetEquipLV(item).ToString();
        button.AddListener(() =>
        {
            ItemTipUtility.Show(itemID);
        });
    }
    public void PlayEffect()
    {
        activeEffect.Play();
    }
}
Main/System/Mingge/MinggeEquipCell.cs.meta
copy from Main/System/Team/TeamType.cs.meta copy to Main/System/Mingge/MinggeEquipCell.cs.meta
File was copied from Main/System/Team/TeamType.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 097080eb83a42b54bbc2b10bc100993b
guid: df66a8f8775cbdb4bbbc68542b32bbc9
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/System/Mingge/MinggeManager.cs
@@ -6,10 +6,15 @@
public class MinggeManager : GameSystemManager<MinggeManager>
{
    public int tyItemID;    //推演物品ID
    public int qlItemID;    //祈灵物品ID
    public int[] minggeItemTypeList;    //可携带意象的卦玉类型列表
    public int[] minggeSkillTypeIDList; //意向效果技能TypeID列表
    public override void Init()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
        ParseConfig();
    }
    public override void Release()
@@ -17,6 +22,19 @@
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
    }
    void ParseConfig()
    {
        var config = FuncConfigConfig.Get("MinggeCfg");
        tyItemID = int.Parse(config.Numerical2);
        qlItemID = int.Parse(config.Numerical3);
        config = FuncConfigConfig.Get("MinggeTY");
        minggeItemTypeList = JsonMapper.ToObject<int[]>(config.Numerical4);
        minggeSkillTypeIDList = JsonMapper.ToObject<int[]>(config.Numerical5);
    }
    private void OnBeforePlayerDataInitialize()
    {
    }
Main/System/Mingge/MinggeWin.cs
@@ -1,8 +1,13 @@
using System;
using UnityEngine;
using UnityEngine.UI;
public class MinggeWin : UIBase
{
    [SerializeField] Button seeAttrBtn;
    [SerializeField] MinggeEquipCell[] equipCells;
    [SerializeField] MinggeCaseCell[] caseCells;
    [SerializeField] Text rankLevelText;
    protected override void InitComponent()
    {
Main/System/OtherPlayerDetail/OtherPlayerDetailManager.cs
@@ -51,7 +51,7 @@
    // 向服务端请求其他玩家数据
    public void ViewPlayerDetail(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewPlayerLineupType = (int)TeamType.Story)
    public void ViewPlayerDetail(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewPlayerLineupType = (int)BattlePreSetType.Story)
    {
        if (_playerId == PlayerDatas.Instance.baseData.PlayerID)
        {
@@ -168,19 +168,30 @@
        viewPlayerLineupType = -1;
    }
    #region 获取PlusData中的数据
    public Dictionary<int, RolePlusData.HeroData> GetHeroDataDict(int playerID, int lineupType)
    public int GetFuncPresetID(int playerID, int battleType, int funcType)
    {
        ViewPlayerData viewPlayerData = GetViewPlayerData(playerID);
        if (viewPlayerData?.rolePlusData?.LineupDic?.TryGetValue(lineupType, out var lineupData) != true)
        if (viewPlayerData?.rolePlusData?.BatPresetDic?.TryGetValue(battleType, out var data) != true)
        {
            return 1;
        }
        return data.ContainsKey(funcType) ? data[funcType] : 1;
    }
    public Dictionary<int, RolePlusData.HeroData> GetHeroDataDict(int playerID, int presetID)
    {
        ViewPlayerData viewPlayerData = GetViewPlayerData(playerID);
        if (viewPlayerData?.rolePlusData?.LineupDic?.TryGetValue(presetID, out var lineupData) != true)
        {
            return null;
        }
        return lineupData?.HeroDic;
    }
    public List<RolePlusData.HeroData> GetHeroDataSortList(int playerID, int lineupType)
    public List<RolePlusData.HeroData> GetHeroDataSortList(int playerID, int presetID)
    {
        var heroDataDict = GetHeroDataDict(playerID, lineupType);
        var heroDataDict = GetHeroDataDict(playerID, presetID);
        if (heroDataDict == null)
        {
            return null;
@@ -199,11 +210,11 @@
        return res;
    }
    public bool TryGetFightPointByTeamType(int playerID, int teamType, out long fightPower)
    public bool TryGetFightPointByTeamType(int playerID, int presetID, out long fightPower)
    {
        fightPower = 0;
        var lineupDic = GetViewPlayerData(playerID)?.rolePlusData?.LineupDic;
        if (lineupDic != null && lineupDic.TryGetValue(teamType, out var lineupData))
        if (lineupDic != null && lineupDic.TryGetValue(presetID, out var lineupData))
        {
            fightPower = lineupData.FightPower;
            return true;
@@ -384,6 +395,7 @@
        // 阵容字典 <阵容ID, 阵容数据>
        public Dictionary<int, LineupData> LineupDic = new Dictionary<int, LineupData>();
        public Dictionary<int, Dictionary<int, int>> BatPresetDic = new Dictionary<int, Dictionary<int, int>>();
        // 红颜数据
        public BeautyData beautyData;
@@ -475,6 +487,7 @@
                EquipDic.Clear();
                LineupDic.Clear();
                BatPresetDic.Clear();
                beautyData = null; // 必须置空,防止显示上一个玩家的数据
                horseData = null;  // 必须置空
                // 1. 转为 JsonData 对象
@@ -588,6 +601,29 @@
                        }
                    }
                }
                //BatPreset - {"战斗预设类型":{"预设类型":使用的方案ID, ...}, ...}
                if (jd.Keys.Contains("BatPreset"))
                {
                    JsonData batPresetJson = jd["BatPreset"];
                    BatPresetDic = new Dictionary<int, Dictionary<int, int>>();
                    foreach (string outerKey in batPresetJson.Keys)
                    {
                        if (int.TryParse(outerKey, out int outerKeyInt))
                        {
                            JsonData innerJson = batPresetJson[outerKey];
                            var innerDict = new Dictionary<int, int>();
                            foreach (string innerKey in innerJson.Keys)
                            {
                                if (int.TryParse(innerKey, out int innerKeyInt))
                                {
                                    innerDict[innerKeyInt] = int.Parse(innerJson[innerKey].ToString());
                                }
                            }
                            BatPresetDic[outerKeyInt] = innerDict;
                        }
                    }
                }
            }
            catch (Exception e)
Main/System/OtherPlayerDetail/OtherPlayerDetailWin.cs
@@ -31,7 +31,7 @@
    OtherPlayerDetailManager.ViewPlayerData viewPlayerData;
    OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } }
    int teamType = -1;
    int funcPresetID = -1;  //子方案ID
    protected override void InitComponent()
    {
@@ -45,7 +45,7 @@
    protected override void OnPreOpen()
    {
        GuildManager.Instance.OnRefreshFairyList += OnRefreshFairyList;
        teamType = functionOrder;
        funcPresetID = OtherPlayerDetailManager.Instance.GetFuncPresetID(manager.viewPlayer, functionOrder, (int)FuncPresetType.Team);
        Display();
    }
@@ -90,17 +90,17 @@
        DisplayMM(playerID);
        var heroList = manager.GetHeroDataSortList(playerID, teamType);
        var heroList = manager.GetHeroDataSortList(playerID, funcPresetID);
        if (heroList.IsNullOrEmpty())
        {
            heroList = manager.GetHeroDataSortList(playerID, (int)TeamType.Story);
            heroList = manager.GetHeroDataSortList(playerID, FuncPresetManager.FuncDefaultPresetID);
        }
        DisplayCard(heroList);
        long fightPonit;
        if (!manager.TryGetFightPointByTeamType(playerID, teamType, out fightPonit))
        if (!manager.TryGetFightPointByTeamType(playerID, funcPresetID, out fightPonit))
        {
            if (!manager.TryGetFightPointByTeamType(playerID, (int)TeamType.Story, out fightPonit))
            if (!manager.TryGetFightPointByTeamType(playerID, FuncPresetManager.FuncDefaultPresetID, out fightPonit))
            {
                fightPonit = 0;
            }
Main/System/PhantasmPavilion/AvatarCell.cs
@@ -247,7 +247,7 @@
            {
                return;
            }
            AvatarHelper.TryViewOtherPlayerInfo(avatarModel.playerID, (int)ViewPlayerType.viewPlayerData, (int)TeamType.Story);
            AvatarHelper.TryViewOtherPlayerInfo(avatarModel.playerID, (int)ViewPlayerType.viewPlayerData);
        });
    }
Main/System/PhantasmPavilion/AvatarHelper.cs
@@ -2,7 +2,7 @@
public static class AvatarHelper
{
    public static void TryViewOtherPlayerInfo(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewPlayerLineupType = (int)TeamType.Story)
    public static void TryViewOtherPlayerInfo(int _playerId, int viewType = (int)ViewPlayerType.viewPlayerData, int viewPlayerLineupType = (int)BattlePreSetType.Story)
    {
        if (_playerId == PlayerDatas.Instance.PlayerId || UIManager.Instance.IsOpened<OtherPlayerDetailWin>())
            return;
Main/System/Team/TeamBase.cs
@@ -19,20 +19,19 @@
    // 服务器下发的阵型和阵容,只能通过网络协议赋值,外部只读
    public TeamType teamType
    public int teamType
    {
        get;
        private set;
    }
    private int ShapeType;
    public int ServerShapeType { get; private set; }
    public TeamHero[] tempHeroes { get; private set; }  = new TeamHero[TeamConst.MaxTeamHeroCount];
    public TeamHero[] serverHeroes { get; private set; } = new TeamHero[TeamConst.MaxTeamHeroCount];
    public TeamBase(TeamType _teamType)
    public TeamBase(int _teamType)
    {
        teamType = _teamType;
        teamIndex = 0;
@@ -49,8 +48,6 @@
        }
        teamIndex = lineUp.Num;
        playerId = lineUp.OwnerID;
        ShapeType = lineUp.ShapeType;
        ServerShapeType = lineUp.ShapeType;
        for (int i = 0; i < lineUp.ObjCnt; i++)
        {
@@ -110,7 +107,6 @@
        CB412_tagCSHeroPresetSave savePack = new CB412_tagCSHeroPresetSave();
        savePack.PresetID = (byte)teamType;
        savePack.ShapeType = (byte)ShapeType;
        savePack.PosCnt = (byte)GetTeamHeroCount();
        savePack.HeroPosList = new CB412_tagCSHeroPresetSave.tagCSHeroPresetPos[savePack.PosCnt];
@@ -141,30 +137,20 @@
        //非主线阵容客户端自己做战力变化,主线阵容服务端战力变更会同步推送
    }
    public void OnChangeShapeType(int newShapeType)
    {
        ShapeType = newShapeType;
    }
    public void OnServerChangeShapeType(int newShapeType)
    {
        ServerShapeType = newShapeType;
        ShapeType = newShapeType;
    }
    
    public void RefreshServerData(int shapeType, int positionIndex, HeroInfo heroInfo)
    public void RefreshServerData(int positionIndex, HeroInfo heroInfo)
    {
        TeamHero teamHero = heroInfo == null ? null : new TeamHero(heroInfo, positionIndex, this);
        SetServerTeamHero(positionIndex, teamHero);
        OnServerChangeShapeType(shapeType);
    }
    public void CreateDefault(List<HeroInfo> heroInfos)
    {
        teamIndex = 0;
        playerId = PlayerDatas.Instance.baseData.PlayerID;
        OnServerChangeShapeType(0);
        for (int i = 0; i < heroInfos.Count; i++)
        {
Main/System/Team/TeamManager.cs
@@ -6,9 +6,9 @@
public class TeamManager : GameSystemManager<TeamManager>
{
    protected Dictionary<TeamType, TeamBase> teamDict = new Dictionary<TeamType, TeamBase>();
    protected Dictionary<int, TeamBase> teamDict = new Dictionary<int, TeamBase>();
    public Action<TeamType> OnTeamChange = null;
    public Action<int> OnTeamChange = null;
    public override void Init()
    {
@@ -31,10 +31,10 @@
    public void OnHeroChangeEvent(HB124_tagSCHeroPresetInfo vNetData)
    {
        var heroPack = PackManager.Instance.GetSinglePack(PackType.Hero);
        HashSet<TeamType> teamTypeSet = new HashSet<TeamType>();
        HashSet<int> teamTypeSet = new HashSet<int>();
        for (int i = 0; i < vNetData.PresetCnt; i++)
        {
            TeamType teamType = (TeamType)vNetData.PresetList[i].PresetID;
            int teamType = vNetData.PresetList[i].PresetID;
            teamTypeSet.Add(teamType);
            var team = GetTeam(teamType);
            for (int j = 0; j < vNetData.PresetList[i].HeroCnt; j++)
@@ -56,7 +56,7 @@
                    hero = HeroManager.Instance.GetHero(item.guid);
                }
                team.RefreshServerData(vNetData.PresetList[i].ShapeType, j, hero);
                team.RefreshServerData(j, hero);
            }
        }
@@ -67,12 +67,13 @@
    }
    public bool HasTeam(TeamType teamType)
    public bool HasTeam(int teamType)
    {
        return teamDict.ContainsKey(teamType);
    }
    public TeamBase GetTeam(TeamType teamType)
    //通过阵容方案ID获取阵容
    public TeamBase GetTeam(int teamType)
    {
        TeamBase team = null;
@@ -85,4 +86,31 @@
        return team;
    }
    //通过战斗类型获取阵容
    public TeamBase GetTeam(BattlePreSetType battlePassType)
    {
        int presetID = GetTeamID((int)battlePassType);
        TeamBase team = null;
        if (!teamDict.TryGetValue(presetID, out team))
        {
            team = new TeamBase(presetID);
            // team.CreateDefault(HeroManager.Instance.GetPowerfulHeroList());
            teamDict.Add(presetID, team);
        }
        return team;
    }
    // 获取主阵容方案ID
    public int GetMainTeamID()
    {
        return FuncPresetManager.Instance.GetFuncPresetID((int)BattlePreSetType.Story, (int)FuncPresetType.Team);
    }
    public int GetTeamID(int battleType)
    {
        return FuncPresetManager.Instance.GetFuncPresetID(battleType, (int)FuncPresetType.Team);
    }
}
Main/System/Team/TeamType.cs
File was deleted
Main/System/UIBase/UIBase.cs
@@ -303,10 +303,6 @@
        try
        {
            OnPreOpen();
            if (layout != null)
            {
                UIUtility.ForceRefreshLayout(layout).Forget();
            }
        }
        catch (Exception e)
        {
@@ -341,6 +337,10 @@
            try
            {
                NextFrameAfterOpen();
                if (layout != null)
                {
                    UIUtility.ForceRefreshLayout(layout).Forget();
                }
            }
            catch (Exception e)
            {
Main/System/WarlordPavilion/WarlordPavilionWin.cs
@@ -53,7 +53,7 @@
        });
        btnFormation.SetListener(() =>
        {
            HeroUIManager.Instance.selectTeamType = TeamType.Story;
            HeroUIManager.Instance.selectTeamType = TeamManager.Instance.GetMainTeamID();
            UIManager.Instance.OpenWindow<HeroPosWin>();
        });
        btnSelectOneClick.SetListener(() =>
Main/Utility/EnumHelper.cs
@@ -733,18 +733,9 @@
    DogzEquip = 33, //神兽装备背包(神兽穿戴)
    Hero = 35, //   武将背包
    Mingge = 36, // 命格装备背包
    MinggeDrop = 37,    //命格掉落背包
    //后续IL开发添加预设
    default1,   //34 垃圾回收
    default2,
    default3,
    default4,
    default5,
    default6,
    default7,
    default8,
    default9,
    default10,
    GatherSoul = 254,//聚魂
    RunePack = 255,//符印背包
@@ -851,6 +842,7 @@
    LineupRecommend = 50, //阵容推荐
    DailySpecials = 51, //每日特惠
    Mail = 52, //邮箱
    Mingge = 54, //命格
    WarlordPavilion = 55, //定军阁
}