yyl
2025-05-15 d341a47ed9bbb740f2ccb9d6d42fd74d5a1c6b5d
update
76 文件已重命名
7个文件已修改
11个文件已删除
9 文件已复制
11个文件已添加
8221 ■■■■ 已修改文件
Main/Battle/BattleField/BattleField.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleField/BattleField.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleMode.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleMode.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleObject/BattleObjMgr.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleObject/BattleObjMgr.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleObject/BattleObject.cs 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleObject/BattleObjectFactory.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleObject/BattleObjectFactory.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleObject/CardObject.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleObject/CardObject.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/Motion/MotionBase.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/RecordPlayer.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/RecordPlayer/RecordAction.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/RecordPlayer/RecordAction.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/RecordPlayer/RecordActionType.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/RecordPlayer/RecordActionType.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/RecordPlayer/RecordPlayer.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/RecordPlayer/RecordPlayer.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Card/CardInfo.Properties.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Common/EventBroadcast.cs 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Common/EventBroadcast.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Common/EventName.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Common/EventName.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Common/FieldPrint.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Manager/GameSystemManager/BattleManager.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Manager/GameSystemManager/PlaceManager.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Manager/GameSystemManager/PlaceManager.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/NetworkPackage/GameNetSystem.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceDataStructs.cs 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceDataStructs.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceDrop.cs 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceDrop.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceField.cs 406 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceField.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceUnit.cs 516 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Place/PlaceUnit.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Team/TeamBase.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/Bezier.cs 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/Bezier.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/BezierMove.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/BezierMove.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/CameraManager.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/CameraManager.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ColorUtility.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ColorUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ComponentExtersion.cs 468 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ComponentExtersion.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/Datumline.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/Datumline.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/DeviceUtility.cs 338 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/DeviceUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/DontDestroyOnLoad.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/DontDestroyOnLoad.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/DrawUtility.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/DrawUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EffectRenderSort.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EffectRenderSort.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EnumHelper.cs 3842 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EnumHelper.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EnumLabelAttribute.cs 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/EnumLabelAttribute.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/Extension.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/Extension.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/FPS.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/FPS.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/FieldPrint.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/FieldPrint.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/FileExtersion.cs 414 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/FileExtersion.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/GameObjectPool.cs 198 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/GameObjectPool.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/GenerateUICode.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/GenerateUICode.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/GlobalTimeEvent.cs 380 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/GlobalTimeEvent.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/LayerUtility.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/LayerUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/LocalSave.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/LocalSave.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/MathUtility.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/MathUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/MathUtils.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/MathUtils.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/PathUtility.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/PathUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ProfilerPanel.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ProfilerPanel.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/RenderOrder.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/RenderOrder.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/RenderTextureCreator.cs 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/RenderTextureCreator.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ResolutionUtility.cs 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/ResolutionUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/SnxxzUtility.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/SnxxzUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/SystemCMD.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/SystemCMD.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TAny.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TAny.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TBlackBoard.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TBlackBoard.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TransformExtension.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TransformExtension.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/UGUIEventListenerContainDrag.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/UGUIEventListenerContainDrag.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/UIParamCopyTool.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/UIParamCopyTool.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/VectorUtility.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/VectorUtility.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/VesselExtension.cs 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/VesselExtension.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
Main/Battle/BattleField/BattleField.cs
New file
@@ -0,0 +1,82 @@
using System.Collections.Generic;
public class BattleField
{
    protected int battleId = 0;
    public BattleMode battleMode;
    public BattleObjMgr battleObjMgr;
    public RecordPlayer recordPlayer;
    public int round = 0;
    public BattleField()
    {
    }
    public void Init(int _battleId, int _levelId, BattleMode _battleMode, TeamBase _redTeam, TeamBase _blueTeam = null)
    {
        battleId = _battleId;
        battleMode = _battleMode;
        battleObjMgr = new BattleObjMgr();
        battleObjMgr.Init(_levelId, _redTeam, _blueTeam);
        recordPlayer = new RecordPlayer();
        recordPlayer.Init(this);
    }
    public void Release()
    {
        battleObjMgr.Release();
    }
    public void Run()
    {
        recordPlayer.Run();
        battleObjMgr.Run();
    }
    public void SetBattleMode(BattleMode _battleMode)
    {
        battleMode = _battleMode;
    }
    public void PlayRecord(RecordAction recordAction)
    {
        recordPlayer.PlayRecord(recordAction);
    }
    public void PlayRecord(List<RecordAction> recordList)
    {
        recordPlayer.PlayRecord(recordList);
    }
    public void OnActionOver(int attackId)
    {
        //
// 手动推点一下发一个包 收一个包 播放一次报文 之后就停住 直到战斗结束的包文
// 自动的话 自动发包 播放报文 后 请求下一个包 循环 直到战斗结束的包文
// 战报播放就是一直播放战报 知道战斗结束的包文
        if (battleMode == BattleMode.Auto)
        {
            // Request next action
        }
        else if (battleMode == BattleMode.Record)
        {
            // Play next record
        }
        else
        {
            // Wait for user input
        }
    }
    public void StartGame()
    {
        recordPlayer.StartGame();
    }
}
Main/Battle/BattleField/BattleField.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Battle/BattleField/BattleField.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: a222b256266318646b4bf911fa60ab2e
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Battle/BattleMode.cs
New file
@@ -0,0 +1,8 @@
public enum BattleMode
{
    Hand,//手动战斗
    Auto,//自动战斗
    Record,//战报
}
Main/Battle/BattleMode.cs.meta
File was renamed from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: 65a0a52783bfbb94786f267d566ce93a
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Battle/BattleObject/BattleObjMgr.cs
New file
@@ -0,0 +1,83 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BattleObjMgr : Singleton<BattleObjMgr>
{
    private List<BattleObject> redCampList => new List<BattleObject>(redCampDict.Values);
    private List<BattleObject> blueCampList => new List<BattleObject>(blueCampDict.Values);
    private Dictionary<int, BattleObject> redCampDict = new Dictionary<int, BattleObject>();
    private Dictionary<int, BattleObject> blueCampDict = new Dictionary<int, BattleObject>();
    public void Init(int _levelId, TeamBase _redTeam, TeamBase _blueTeam = null)
    {
        if (_levelId == 0 && _blueTeam == null)
        {
            Debug.LogError("BattleObjMgr Init Error: _levelId == 0 && _blueTeam == null 关卡id没有(不是PVE) 也没有蓝色队伍信息(也不是PVP))");
            return;
        }
        if (_levelId != 0 && _blueTeam != null)
        {
            Debug.LogError("BattleObjMgr Init Error: _levelId!= 0 && _blueTeam != null 关卡id有(是PVE) 也有蓝色队伍信息(也不是PVP))");
            return;
        }
        if (_levelId != 0)
        {
            _blueTeam = new TeamBase();
            _blueTeam.InitByLevelId(_levelId);
        }
        CreateTeam(redCampDict, _redTeam);
        CreateTeam(blueCampDict, _blueTeam);
    }
    protected void CreateTeam(Dictionary<int, BattleObject> campDict, TeamBase teamBase)
    {
        DestroyTeam(campDict);
        for (int i = 0; i < teamBase.teamCards.Length; i++)
        {
            TeamCard teamCard = teamBase.teamCards[i];
            if (teamCard != null)
            {
                BattleObject battleObj = BattleObjectFactory.CreateBattleObject(teamCard);
                battleObj.Init(teamCard);
                campDict.Add(teamCard.cardIndex, battleObj);
            }
        }
    }
    protected void DestroyTeam(Dictionary<int, BattleObject> campDict)
    {
        foreach (var item in campDict)
        {
            BattleObject battleObj = item.Value;
            if (battleObj!= null)
            {
                BattleObjectFactory.DestroyBattleObject(battleObj);
            }
        }
        campDict.Clear();
    }
    public void Release()
    {
        DestroyTeam(redCampDict);
        DestroyTeam(blueCampDict);
    }
    public void Run()
    {
        foreach (var item in redCampDict)
        {
            item.Value.Run();
        }
        foreach (var item in blueCampDict)
        {
            item.Value.Run();
        }
    }
}
Main/Battle/BattleObject/BattleObjMgr.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Battle/BattleObject/BattleObjMgr.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: bd22d86c92725e347a15a74138ba1896
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Battle/BattleObject/BattleObject.cs
@@ -2,206 +2,129 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
/// <summary>
/// 战斗对象阵营枚举
/// </summary>
public enum BattleCamp
{
    Friendly,   // 友方
    Enemy       // 敌方
    Friendly,
    Enemy
}
/// <summary>
/// 战斗状态枚举
/// </summary>
[Flags]
public enum BattleState
{
    None = 0,
    Stunned = 1 << 0,     // 眩晕
    Poisoned = 1 << 1,    // 中毒
    Bleeding = 1 << 2,    // 流血
    Silenced = 1 << 3,    // 沉默
    Frozen = 1 << 4,      // 冰冻
    Burned = 1 << 5       // 灼烧
    Stunned = 1 << 0,
    Poisoned = 1 << 1,
    Bleeding = 1 << 2,
    Silenced = 1 << 3,
    Frozen = 1 << 4,
    Burned = 1 << 5
}
/// <summary>
/// 战斗对象基类
/// </summary>
public class BattleObject
{
    /// <summary>
    /// 战斗对象ID
    /// </summary>
    public string BattleObjectId { get; protected set; }
    
    /// <summary>
    /// 战斗对象阵营
    /// </summary>
    public BattleCamp Camp { get; protected set; } = BattleCamp.Friendly;
    
    // Buff系统
    // List<BuffInfo> buffList;         // 所有buff列表
    // List<BuffInfo> gainBuffList;     // 增益buff列表
    // List<BuffInfo> debuffList;       // 减益buff列表
    public TeamCard teamCard { get; protected set; }
    protected MotionBase motionBase;
    protected GameObject cardGO;
    
    /// <summary>
    /// 初始化战斗对象
    /// </summary>
    /// <param name="id">战斗对象ID</param>
    /// <param name="camp">战斗对象阵营</param>
    public virtual void Initialize(string id, BattleCamp camp)
    public virtual void Init(TeamCard _teamCard)
    {
        BattleObjectId = id;
        Camp = camp;
        this.teamCard = _teamCard;
        motionBase = new MotionBase();
    }
    protected void LoadCard()
    {
        
        // 初始化Buff列表
        // buffList = new List<BuffInfo>();
        // gainBuffList = new List<BuffInfo>();
        // debuffList = new List<BuffInfo>();
    }
    
    #region Buff系统(待实现)
    // /// <summary>
    // /// 添加Buff
    // /// </summary>
    // /// <param name="buff">Buff信息</param>
    // public virtual void AddBuff(BuffInfo buff)
    // {
    //     // 添加Buff到列表
    //     // 根据Buff类型添加到对应列表
    //     // 应用Buff效果
    // }
    //
    // /// <summary>
    // /// 移除Buff
    // /// </summary>
    // /// <param name="buffId">Buff ID</param>
    // public virtual void RemoveBuff(string buffId)
    // {
    //     // 从列表中移除Buff
    //     // 移除Buff效果
    // }
    //
    // /// <summary>
    // /// 更新所有Buff
    // /// </summary>
    // public virtual void UpdateBuffs()
    // {
    //     // 更新所有Buff的持续时间
    //     // 移除已过期的Buff
    //     // 应用Buff的持续效果
    // }
    //
    // /// <summary>
    // /// 获取所有Buff
    // /// </summary>
    // /// <returns>Buff列表</returns>
    // public virtual List<BuffInfo> GetAllBuffs()
    // {
    //     return buffList;
    // }
    //
    // /// <summary>
    // /// 获取所有增益Buff
    // /// </summary>
    // /// <returns>增益Buff列表</returns>
    // public virtual List<BuffInfo> GetGainBuffs()
    // {
    //     return gainBuffList;
    // }
    //
    // /// <summary>
    // /// 获取所有减益Buff
    // /// </summary>
    // /// <returns>减益Buff列表</returns>
    // public virtual List<BuffInfo> GetDebuffs()
    // {
    //     return debuffList;
    // }
    #endregion
    
    #region 战斗相关函数
    
    /// <summary>
    /// 攻击目标
    /// </summary>
    /// <param name="target">攻击目标</param>
    /// <param name="damage">伤害值</param>
    /// <param name="isCritical">是否暴击</param>
    /// <returns>实际造成的伤害</returns>
    public virtual float AttackTarget(BattleObject target)
    public virtual void AttackTarget(List<BattleObject> targets)
    {
        // 子类实现具体逻辑
        return 0;
        // 找离自己最近的
        if (0 == targets.Count) return;
        BattleObject target = targets[0];
        if (1 != targets.Count)
        {
            for (int i = 1; i < targets.Count; i++)
            {
                if (Vector3.Distance(cardGO.transform.position, targets[i].cardGO.transform.position) < Vector3.Distance(cardGO.transform.position, target.cardGO.transform.position))
                {
                    target = targets[i];
                }
            }
        }
        Vector3 tempPos = cardGO.transform.position;
        motionBase.OnAttackAnimationComplete = () => {
            // 攻击动画结束之后 回到原来的位置
            cardGO.transform.DOMove(tempPos, 1f).OnComplete(() => {
                // motionBase.ClearEvent();// = null;
                //  通知本次攻击行动结束
                //  通过battleFieldId来告知BattleFieldMgr
            });
        };
        cardGO.transform.DOMove(target.cardGO.transform.position, 1f).OnComplete(() => {
            // 播放攻击动画
            motionBase.OnAttackHitEvent = (int attackIndex) => {
                for (int i = 0; i < targets.Count; i++)
                {
                    targets[i].UnderAttack(this);
                }
            };
            //普攻是hit1
            motionBase.PlayAnimationEx(MotionName.atk1, false, new List<int>(){
                5//假设是5帧 目前还没有数据
            });
        });
    }
    public virtual void CastSkill(List<BattleObject> targets)
    {
        //  需不需要move 攻击目标是谁
    }
    
    /// <summary>
    /// 被攻击
    /// </summary>
    /// <param name="attacker">攻击者</param>
    /// <param name="damage">伤害值</param>
    /// <param name="isCritical">是否暴击</param>
    /// <returns>实际受到的伤害</returns>
    public virtual float UnderAttack(BattleObject attacker)
    {
        // 子类实现具体逻辑
        return 0;
    }
    
    /// <summary>
    /// 治疗目标
    /// </summary>
    /// <param name="target">治疗目标</param>
    /// <param name="healAmount">治疗量</param>
    /// <param name="isCritical">是否暴击</param>
    /// <returns>实际治疗量</returns>
    public virtual float HealTargets(List<BattleObject> targets)
    {
        // 子类实现具体逻辑
        return 0;
    }
    
    /// <summary>
    /// 被治疗
    /// </summary>
    /// <param name="healer">治疗者</param>
    /// <param name="healAmount">治疗量</param>
    /// <param name="isCritical">是否暴击</param>
    /// <returns>实际被治疗量</returns>
    public virtual float BeHealed(BattleObject healer, float healAmount)
    {
        // 子类实现具体逻辑
        return 0;
    }
    
    /// <summary>
    /// 复活目标
    /// </summary>
    /// <param name="target">复活目标</param>
    /// <param name="healthPercent">复活后的生命值百分比</param>
    /// <returns>是否复活成功</returns>
    public virtual bool Revive(BattleObject target)
    {
        // 子类实现具体逻辑
        return false;
    }
    
    /// <summary>
    /// 被复活
    /// </summary>
    /// <param name="reviver">复活者</param>
    /// <param name="healthPercent">复活后的生命值百分比</param>
    /// <returns>是否被复活成功</returns>
    public virtual bool BeRevived(BattleObject reviver, float healthPercent = 0.5f)
    {
        // 子类实现具体逻辑
        return false;
    }
    
@@ -209,35 +132,23 @@
    
    #region 辅助函数
    
    /// <summary>
    /// 判断是否为敌对关系
    /// </summary>
    /// <param name="other">其他战斗对象</param>
    /// <returns>是否为敌对关系</returns>
    public virtual bool IsEnemy(BattleObject other)
    {
        if (other == null) return false;
        
        // 不同阵营为敌对关系
        return Camp != other.Camp;
    }
    
    /// <summary>
    /// 判断是否为友好关系
    /// </summary>
    /// <param name="other">其他战斗对象</param>
    /// <returns>是否为友好关系</returns>
    public virtual bool IsFriendly(BattleObject other)
    {
        if (other == null) return false;
        
        // 相同阵营为友好关系
        return Camp == other.Camp;
    }
    public virtual void Run()
    {
        // 子类实现具体逻辑
        motionBase.Run();
    }
    
    #endregion
Main/Battle/BattleObject/BattleObjectFactory.cs
New file
@@ -0,0 +1,23 @@
using System.Collections.Generic;
using System;
using UnityEngine;
public class BattleObjectFactory
{
    public static BattleObject CreateBattleObject(TeamCard teamCard)
    {
        BattleObject battleObject = null;
        // switch (teamCard.cardInfo.cardConfig.)
        // {
        // }
        return battleObject;
    }
    public static void DestroyBattleObject(BattleObject battleObj)
    {
    }
}
Main/Battle/BattleObject/BattleObjectFactory.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Battle/BattleObject/BattleObjectFactory.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: c6bc9f2359387db48afd7d6762f5b566
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Battle/BattleObject/CardObject.cs
Main/Battle/BattleObject/CardObject.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Battle/BattleObject/CardObject.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: 7379cb2482b831b43bb037d44c4239ec
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Battle/Motion/MotionBase.cs
@@ -74,7 +74,7 @@
    /// 初始化动画组件
    /// </summary>
    /// <param name="skeletonGraphic">骨骼动画组件</param>
    public virtual void Initialize(SkeletonGraphic skeletonGraphic)
    public virtual void Init(SkeletonGraphic skeletonGraphic)
    {
        this.skeletonGraphic = skeletonGraphic;
        
Main/Battle/RecordPlayer.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4ee9cd11a2bf7a84fb6ff9b973614dcc
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Battle/RecordPlayer/RecordAction.cs
New file
@@ -0,0 +1,21 @@
using System.Collections.Generic;
using System;
public class RecordAction
{
    public RecordActionType actionType;
    public int casterId;
    public bool IsFinished()
    {
        return false;
    }
    public void Run()
    {
    }
}
Main/Battle/RecordPlayer/RecordAction.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Battle/RecordPlayer/RecordAction.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: a97982175afec5a4cb25b9a2479808d4
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Battle/RecordPlayer/RecordActionType.cs
New file
@@ -0,0 +1,10 @@
public enum RecordActionType
{
    None,
    Attack,//攻击
    Heal,//治疗
    Buff,//增益&减益
    Guard,//格挡
    Skill,//技能
}
Main/Battle/RecordPlayer/RecordActionType.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Battle/RecordPlayer/RecordActionType.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: 4402c0d2b31ada242a0ed9c262de1d3a
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Battle/RecordPlayer/RecordPlayer.cs
New file
@@ -0,0 +1,59 @@
using System.Collections.Generic;
using System;
using UnityEngine;
public class RecordPlayer
{
    protected BattleField battleField;
    private Queue<RecordAction> recordActionQueue = new Queue<RecordAction>();
    protected RecordAction currentRecordAction;
    public void Init(BattleField _battleField)
    {
        battleField = _battleField;
    }
    public void PlayRecord(RecordAction recordAction)
    {
        recordActionQueue.Enqueue(recordAction);
    }
    public void PlayRecord(List<RecordAction> recordActions)
    {
        for (int i = 0; i < recordActions.Count; i++)
        {
            recordActionQueue.Enqueue(recordActions[i]);
        }
    }
    public void StartGame()
    {
    }
    public void PlayNext()
    {
    }
    public void Run()
    {
        if (recordActionQueue.Count == 0)
        {
            return;
        }
        if (currentRecordAction == null || currentRecordAction.IsFinished())
        {
            currentRecordAction = recordActionQueue.Dequeue();
        }
        if (currentRecordAction != null)
        {
            currentRecordAction.Run();
        }
    }
}
Main/Battle/RecordPlayer/RecordPlayer.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Battle/RecordPlayer/RecordPlayer.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: 8379b2c101d7f194f884daf79705726c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Card/CardInfo.Properties.cs
@@ -8,6 +8,17 @@
    // 反击时必命中目标
    // 武将属性需时时计算,根据技能、BUFF、装备等属性来源改变而改变
    // 基础属性
    // 生命
    public int hp = 0;
    // 攻击力
    public int attack = 0;
    // 防御力
    public int defense = 0;
    // 速度
    public int speed = 0;
    //战斗属性
    //闪避概率
Main/Common/EventBroadcast.cs
New file
@@ -0,0 +1,271 @@
using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 事件广播系统
/// </summary>
public class EventBroadcast
{
    private static EventBroadcast _instance;
    public static EventBroadcast Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new EventBroadcast();
            }
            return _instance;
        }
    }
    // 事件字典,存储事件ID和对应的委托列表
    private Dictionary<string, Delegate> eventDict = new Dictionary<string, Delegate>();
    // 防止外部实例化
    private EventBroadcast() { }
    #region 添加监听
    /// <summary>
    /// 添加无参事件监听
    /// </summary>
    /// <param name="eventId">事件ID</param>
    /// <param name="callback">回调函数</param>
    public void AddListener(string eventId, Action callback)
    {
        OnListenerAdding(eventId, callback);
        eventDict[eventId] = (Action)eventDict[eventId] + callback;
    }
    /// <summary>
    /// 添加单参数事件监听
    /// </summary>
    public void AddListener<T>(string eventId, Action<T> callback)
    {
        OnListenerAdding(eventId, callback);
        eventDict[eventId] = (Action<T>)eventDict[eventId] + callback;
    }
    /// <summary>
    /// 添加双参数事件监听
    /// </summary>
    public void AddListener<T, U>(string eventId, Action<T, U> callback)
    {
        OnListenerAdding(eventId, callback);
        eventDict[eventId] = (Action<T, U>)eventDict[eventId] + callback;
    }
    /// <summary>
    /// 添加三参数事件监听
    /// </summary>
    public void AddListener<T, U, V>(string eventId, Action<T, U, V> callback)
    {
        OnListenerAdding(eventId, callback);
        eventDict[eventId] = (Action<T, U, V>)eventDict[eventId] + callback;
    }
    #endregion
    #region 移除监听
    /// <summary>
    /// 移除无参事件监听
    /// </summary>
    /// <param name="eventId">事件ID</param>
    /// <param name="callback">回调函数</param>
    public void RemoveListener(string eventId, Action callback)
    {
        if (OnListenerRemoving(eventId, callback))
        {
            eventDict[eventId] = (Action)eventDict[eventId] - callback;
            OnListenerRemoved(eventId);
        }
    }
    /// <summary>
    /// 移除单参数事件监听
    /// </summary>
    public void RemoveListener<T>(string eventId, Action<T> callback)
    {
        if (OnListenerRemoving(eventId, callback))
        {
            eventDict[eventId] = (Action<T>)eventDict[eventId] - callback;
            OnListenerRemoved(eventId);
        }
    }
    /// <summary>
    /// 移除双参数事件监听
    /// </summary>
    public void RemoveListener<T, U>(string eventId, Action<T, U> callback)
    {
        if (OnListenerRemoving(eventId, callback))
        {
            eventDict[eventId] = (Action<T, U>)eventDict[eventId] - callback;
            OnListenerRemoved(eventId);
        }
    }
    /// <summary>
    /// 移除三参数事件监听
    /// </summary>
    public void RemoveListener<T, U, V>(string eventId, Action<T, U, V> callback)
    {
        if (OnListenerRemoving(eventId, callback))
        {
            eventDict[eventId] = (Action<T, U, V>)eventDict[eventId] - callback;
            OnListenerRemoved(eventId);
        }
    }
    #endregion
    #region 触发事件
    /// <summary>
    /// 触发无参事件
    /// </summary>
    /// <param name="eventId">事件ID</param>
    public void Broadcast(string eventId)
    {
        if (eventDict.TryGetValue(eventId, out Delegate d))
        {
            Action callback = d as Action;
            if (callback != null)
            {
                callback();
            }
            else
            {
                Debug.LogError($"事件 {eventId} 的委托类型不匹配");
            }
        }
    }
    /// <summary>
    /// 触发单参数事件
    /// </summary>
    public void Broadcast<T>(string eventId, T arg)
    {
        if (eventDict.TryGetValue(eventId, out Delegate d))
        {
            Action<T> callback = d as Action<T>;
            if (callback != null)
            {
                callback(arg);
            }
            else
            {
                Debug.LogError($"事件 {eventId} 的委托类型不匹配");
            }
        }
    }
    /// <summary>
    /// 触发双参数事件
    /// </summary>
    public void Broadcast<T, U>(string eventId, T arg1, U arg2)
    {
        if (eventDict.TryGetValue(eventId, out Delegate d))
        {
            Action<T, U> callback = d as Action<T, U>;
            if (callback != null)
            {
                callback(arg1, arg2);
            }
            else
            {
                Debug.LogError($"事件 {eventId} 的委托类型不匹配");
            }
        }
    }
    /// <summary>
    /// 触发三参数事件
    /// </summary>
    public void Broadcast<T, U, V>(string eventId, T arg1, U arg2, V arg3)
    {
        if (eventDict.TryGetValue(eventId, out Delegate d))
        {
            Action<T, U, V> callback = d as Action<T, U, V>;
            if (callback != null)
            {
                callback(arg1, arg2, arg3);
            }
            else
            {
                Debug.LogError($"事件 {eventId} 的委托类型不匹配");
            }
        }
    }
    #endregion
    #region 辅助方法
    /// <summary>
    /// 添加监听前的处理
    /// </summary>
    private void OnListenerAdding(string eventId, Delegate callback)
    {
        if (!eventDict.ContainsKey(eventId))
        {
            eventDict.Add(eventId, null);
        }
        Delegate d = eventDict[eventId];
        if (d != null && d.GetType() != callback.GetType())
        {
            Debug.LogError($"尝试为事件 {eventId} 添加不同类型的委托,当前类型:{d.GetType()},尝试添加类型:{callback.GetType()}");
        }
    }
    /// <summary>
    /// 移除监听前的处理
    /// </summary>
    private bool OnListenerRemoving(string eventId, Delegate callback)
    {
        if (!eventDict.ContainsKey(eventId))
        {
            Debug.LogWarning($"尝试移除不存在的事件 {eventId}");
            return false;
        }
        Delegate d = eventDict[eventId];
        if (d == null)
        {
            Debug.LogWarning($"尝试移除事件 {eventId} 的空委托");
            return false;
        }
        else if (d.GetType() != callback.GetType())
        {
            Debug.LogError($"尝试为事件 {eventId} 移除不同类型的委托,当前类型:{d.GetType()},尝试移除类型:{callback.GetType()}");
            return false;
        }
        return true;
    }
    /// <summary>
    /// 移除监听后的处理
    /// </summary>
    private void OnListenerRemoved(string eventId)
    {
        if (eventDict[eventId] == null)
        {
            eventDict.Remove(eventId);
        }
    }
    /// <summary>
    /// 清空所有事件
    /// </summary>
    public void ClearAllEvents()
    {
        eventDict.Clear();
    }
    #endregion
}
Main/Common/EventBroadcast.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Common/EventBroadcast.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: bbd3b492fe5154d4fb0627f43bcdf214
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Common/EventName.cs
New file
@@ -0,0 +1,7 @@
public class EventName
{
    public const string BATTLE_ACTION_OVER = "BATTLE_ACTION_OVER"; //战斗 行为结束了(一个战报播完)
}
Main/Common/EventName.cs.meta
copy from Main/Common/FieldPrint.cs.meta copy to Main/Common/EventName.cs.meta
File was copied from Main/Common/FieldPrint.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8426254dd294aa428e2078f8e48cd5e
guid: 4ff830a863c35ec4ca5ccdf718064055
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
Main/Common/FieldPrint.cs
File was deleted
Main/Main.cs
@@ -55,7 +55,6 @@
        Debug.Log("初始化游戏场景");
        // 初始化游戏系统
        managers.Add(PlaceManager.Instance);
        managers.Add(BattleManager.Instance);
        foreach (var manager in managers)
Main/Manager/GameSystemManager/BattleManager.cs
@@ -1,9 +1,17 @@
using System.Collections.Generic;
using UnityEngine;
public class BattleManager : GameSystemManager<BattleManager>
{
    protected Dictionary<int, BattleField> battleFields = new Dictionary<int, BattleField>();
    public override void Init()
    {
        base.Init();
        EventBroadcast.Instance.AddListener<int, int>(EventName.BATTLE_ACTION_OVER, OnActionOver);
    }
    public override void Release()
@@ -11,4 +19,25 @@
        base.Release();
    }
    private void OnActionOver(int battleFieldId, int attackId)
    {
        BattleField battleField = null;
        if (battleFields.TryGetValue(battleFieldId, out battleField))
        {
            battleField.OnActionOver(attackId);
        }
        else
        {
            Debug.LogError("BattleManager OnActionOver battleFieldId:" + battleFieldId + " not find");
        }
    }
    public void Run()
    {
        foreach (var battleField in battleFields)
        {
            battleField.Value.Run();
        }
    }
}
Main/Manager/GameSystemManager/PlaceManager.cs
File was deleted
Main/Manager/GameSystemManager/PlaceManager.cs.meta
File was deleted
Main/NetworkPackage/GameNetSystem.cs
@@ -30,9 +30,9 @@
                    case NetState.AccountLogin:
                        accountLoginState.OnExit();
                        break;
                    case NetState.CreateOrSelectRole:
                        // createOrSelectRoleState.OnExit();
                        break;
                    // case NetState.CreateOrSelectRole:
                    //     // createOrSelectRoleState.OnExit();
                    //     break;
                    case NetState.RoleLogin:
                        roleLoginState.OnExit();
                        break;
@@ -53,9 +53,9 @@
                    case NetState.AccountLogin:
                        accountLoginState.OnEnter();
                        break;
                    case NetState.CreateOrSelectRole:
                        // createOrSelectRoleState.OnEnter();
                        break;
                    // case NetState.CreateOrSelectRole:
                    //     // createOrSelectRoleState.OnEnter();
                    //     break;
                    case NetState.RoleLogin:
                        roleLoginState.OnEnter();
                        break;
@@ -409,7 +409,7 @@
    {
        NerverConnect = 1,
        AccountLogin = 2,
        CreateOrSelectRole = 3,
        // CreateOrSelectRole = 3,
        RoleLogin = 4,
        Connected = 5,
        DisConnected = 6,
Main/Place/PlaceDataStructs.cs
File was deleted
Main/Place/PlaceDataStructs.cs.meta
File was deleted
Main/Place/PlaceDrop.cs
File was deleted
Main/Place/PlaceDrop.cs.meta
File was deleted
Main/Place/PlaceField.cs
File was deleted
Main/Place/PlaceField.cs.meta
File was deleted
Main/Place/PlaceUnit.cs
File was deleted
Main/Place/PlaceUnit.cs.meta
File was deleted
Main/Team/TeamBase.cs
@@ -75,4 +75,9 @@
    {
        return GetTeamCardCount() == 0;
    }
    public void InitByLevelId(int levelId)
    {
    }
}
Main/Utility.meta
Main/Utility/Bezier.cs
File was renamed from Utility/Bezier.cs
@@ -1,39 +1,39 @@
using UnityEngine;
public class Bezier
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="P0"></param>
    /// <param name="P1"></param>
    /// <param name="P2"></param>
    /// <param name="t">0.0 >= t <= 1.0 </param>
    /// <returns></returns>
    public static Vector3 BezierCurve(Vector3 P0, Vector3 P1, Vector3 P2, float t)
    {
        var t1 = (1 - t) * (1 - t);
        var t2 = t * (1 - t);
        var t3 = t * t;
        return P0 * t1 + 2 * t2 * P1 + t3 * P2;
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="P0"></param>
    /// <param name="P1"></param>
    /// <param name="P2"></param>
    /// <param name="P3"></param>
    /// <param name="t">0.0 >= t <= 1.0 </param>
    /// <returns></returns>
    public static Vector3 BezierCurve(Vector3 P0, Vector3 P1, Vector3 P2, Vector3 P3, float t)
    {
        var t1 = (1 - t) * (1 - t) * (1 - t);
        var t2 = (1 - t) * (1 - t) * t;
        var t3 = t * t * (1 - t);
        var t4 = t * t * t;
        return P0 * t1 + 3 * t2 * P1 + 3 * t3 * P2 + P3 * t4;
    }
using UnityEngine;
public class Bezier
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="P0"></param>
    /// <param name="P1"></param>
    /// <param name="P2"></param>
    /// <param name="t">0.0 >= t <= 1.0 </param>
    /// <returns></returns>
    public static Vector3 BezierCurve(Vector3 P0, Vector3 P1, Vector3 P2, float t)
    {
        var t1 = (1 - t) * (1 - t);
        var t2 = t * (1 - t);
        var t3 = t * t;
        return P0 * t1 + 2 * t2 * P1 + t3 * P2;
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="P0"></param>
    /// <param name="P1"></param>
    /// <param name="P2"></param>
    /// <param name="P3"></param>
    /// <param name="t">0.0 >= t <= 1.0 </param>
    /// <returns></returns>
    public static Vector3 BezierCurve(Vector3 P0, Vector3 P1, Vector3 P2, Vector3 P3, float t)
    {
        var t1 = (1 - t) * (1 - t) * (1 - t);
        var t2 = (1 - t) * (1 - t) * t;
        var t3 = t * t * (1 - t);
        var t4 = t * t * t;
        return P0 * t1 + 3 * t2 * P1 + 3 * t3 * P2 + P3 * t4;
    }
}
Main/Utility/Bezier.cs.meta
Main/Utility/BezierMove.cs
Main/Utility/BezierMove.cs.meta
Main/Utility/CameraManager.cs
Main/Utility/CameraManager.cs.meta
Main/Utility/ColorUtility.cs
Main/Utility/ColorUtility.cs.meta
Main/Utility/ComponentExtersion.cs
File was renamed from Utility/ComponentExtersion.cs
@@ -1,234 +1,234 @@
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using System;
public static class ComponentExtersion
{
    public static Component FindComponent(this Component _component, string _type, string _path)
    {
        try
        {
            if (_component == null)
            {
                return null;
            }
            var transform = _component.transform.Find(_path);
            if (transform == null)
            {
                return null;
            }
            return transform.GetComponent(_type);
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            return null;
        }
    }
    public static T AddMissingComponent<T>(this Component _compoent) where T : Component
    {
        if (_compoent == null)
        {
            return null;
        }
        T component = _compoent.GetComponent<T>();
        if (component == null)
        {
            component = _compoent.gameObject.AddComponent<T>();
        }
        return component;
    }
    public static T AddMissingComponent<T>(this Transform _transform) where T : Component
    {
        if (_transform == null)
        {
            return null;
        }
        T component = _transform.GetComponent<T>();
        if (component == null)
        {
            component = _transform.gameObject.AddComponent<T>();
        }
        return component;
    }
    public static T AddMissingComponent<T>(this GameObject _gameObject) where T : Component
    {
        if (_gameObject == null)
        {
            return null;
        }
        T component = _gameObject.GetComponent<T>();
        if (component == null)
        {
            component = _gameObject.AddComponent<T>();
        }
        return component;
    }
    public static void AddListener(this Button _button, UnityAction _action)
    {
        if (_button == null)
        {
            return;
        }
        _button.onClick.RemoveAllListeners();
        //_button.onClick.RemoveListener(_action);
        _button.onClick.AddListener(_action);
    }
    public static void RemoveAllListeners(this Button _button)
    {
        if (_button == null)
        {
            return;
        }
        _button.onClick.RemoveAllListeners();
    }
    public static void SetListener(this Button button, UnityAction action)
    {
        if (button == null)
        {
            return;
        }
        button.onClick.RemoveAllListeners();
        button.AddListener(action);
    }
    public static void AddListener(this Toggle _toggle, UnityAction<bool> _action)
    {
        if (_toggle == null)
        {
            return;
        }
        _toggle.onValueChanged.AddListener(_action);
    }
    public static void SetListener(this Toggle toggle, UnityAction<bool> action)
    {
        if (toggle == null)
        {
            return;
        }
        toggle.onValueChanged.RemoveAllListeners();
        toggle.onValueChanged.AddListener(action);
    }
    public static void RemoveAllListeners(this Toggle _toggle)
    {
        if (_toggle == null)
        {
            return;
        }
        _toggle.onValueChanged.RemoveAllListeners();
    }
    public static void AddListener(this Slider _slider, UnityAction<float> _action)
    {
        if (_slider == null)
        {
            return;
        }
        _slider.onValueChanged.AddListener(_action);
    }
    public static void SetListener(this Slider slider, UnityAction<float> action)
    {
        if (slider == null)
        {
            return;
        }
        slider.onValueChanged.RemoveAllListeners();
        slider.onValueChanged.AddListener(action);
    }
    public static void RemoveAllListeners(this Slider _slider)
    {
        if (_slider == null)
        {
            return;
        }
        _slider.onValueChanged.RemoveAllListeners();
    }
    public static void AddListener(this InputField _inputField, UnityAction<string> _action)
    {
        if (_inputField == null)
        {
            return;
        }
        _inputField.onValueChanged.AddListener(_action);
    }
    public static void SetListener(this InputField inputField, UnityAction<string> action)
    {
        if (inputField == null)
        {
            return;
        }
        inputField.onValueChanged.RemoveAllListeners();
        inputField.onValueChanged.AddListener(action);
    }
    public static void RemoveAllListeners(this InputField _inputField)
    {
        if (_inputField == null)
        {
            return;
        }
        _inputField.onValueChanged.RemoveAllListeners();
    }
    public static void SetListener(this Dropdown dropdown, UnityAction<int> action)
    {
        if (dropdown == null)
        {
            return;
        }
        dropdown.onValueChanged.RemoveAllListeners();
        dropdown.onValueChanged.AddListener(action);
    }
    public static void SetActive(this Component compoent, bool active)
    {
        if (compoent != null)
        {
            if (active && !compoent.gameObject.activeSelf)
            {
                compoent.gameObject.SetActive(true);
            }
            else if (!active && compoent.gameObject.activeSelf)
            {
                compoent.gameObject.SetActive(false);
            }
        }
    }
}
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using System;
public static class ComponentExtersion
{
    public static Component FindComponent(this Component _component, string _type, string _path)
    {
        try
        {
            if (_component == null)
            {
                return null;
            }
            var transform = _component.transform.Find(_path);
            if (transform == null)
            {
                return null;
            }
            return transform.GetComponent(_type);
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            return null;
        }
    }
    public static T AddMissingComponent<T>(this Component _compoent) where T : Component
    {
        if (_compoent == null)
        {
            return null;
        }
        T component = _compoent.GetComponent<T>();
        if (component == null)
        {
            component = _compoent.gameObject.AddComponent<T>();
        }
        return component;
    }
    public static T AddMissingComponent<T>(this Transform _transform) where T : Component
    {
        if (_transform == null)
        {
            return null;
        }
        T component = _transform.GetComponent<T>();
        if (component == null)
        {
            component = _transform.gameObject.AddComponent<T>();
        }
        return component;
    }
    public static T AddMissingComponent<T>(this GameObject _gameObject) where T : Component
    {
        if (_gameObject == null)
        {
            return null;
        }
        T component = _gameObject.GetComponent<T>();
        if (component == null)
        {
            component = _gameObject.AddComponent<T>();
        }
        return component;
    }
    public static void AddListener(this Button _button, UnityAction _action)
    {
        if (_button == null)
        {
            return;
        }
        _button.onClick.RemoveAllListeners();
        //_button.onClick.RemoveListener(_action);
        _button.onClick.AddListener(_action);
    }
    public static void RemoveAllListeners(this Button _button)
    {
        if (_button == null)
        {
            return;
        }
        _button.onClick.RemoveAllListeners();
    }
    public static void SetListener(this Button button, UnityAction action)
    {
        if (button == null)
        {
            return;
        }
        button.onClick.RemoveAllListeners();
        button.AddListener(action);
    }
    public static void AddListener(this Toggle _toggle, UnityAction<bool> _action)
    {
        if (_toggle == null)
        {
            return;
        }
        _toggle.onValueChanged.AddListener(_action);
    }
    public static void SetListener(this Toggle toggle, UnityAction<bool> action)
    {
        if (toggle == null)
        {
            return;
        }
        toggle.onValueChanged.RemoveAllListeners();
        toggle.onValueChanged.AddListener(action);
    }
    public static void RemoveAllListeners(this Toggle _toggle)
    {
        if (_toggle == null)
        {
            return;
        }
        _toggle.onValueChanged.RemoveAllListeners();
    }
    public static void AddListener(this Slider _slider, UnityAction<float> _action)
    {
        if (_slider == null)
        {
            return;
        }
        _slider.onValueChanged.AddListener(_action);
    }
    public static void SetListener(this Slider slider, UnityAction<float> action)
    {
        if (slider == null)
        {
            return;
        }
        slider.onValueChanged.RemoveAllListeners();
        slider.onValueChanged.AddListener(action);
    }
    public static void RemoveAllListeners(this Slider _slider)
    {
        if (_slider == null)
        {
            return;
        }
        _slider.onValueChanged.RemoveAllListeners();
    }
    public static void AddListener(this InputField _inputField, UnityAction<string> _action)
    {
        if (_inputField == null)
        {
            return;
        }
        _inputField.onValueChanged.AddListener(_action);
    }
    public static void SetListener(this InputField inputField, UnityAction<string> action)
    {
        if (inputField == null)
        {
            return;
        }
        inputField.onValueChanged.RemoveAllListeners();
        inputField.onValueChanged.AddListener(action);
    }
    public static void RemoveAllListeners(this InputField _inputField)
    {
        if (_inputField == null)
        {
            return;
        }
        _inputField.onValueChanged.RemoveAllListeners();
    }
    public static void SetListener(this Dropdown dropdown, UnityAction<int> action)
    {
        if (dropdown == null)
        {
            return;
        }
        dropdown.onValueChanged.RemoveAllListeners();
        dropdown.onValueChanged.AddListener(action);
    }
    public static void SetActive(this Component compoent, bool active)
    {
        if (compoent != null)
        {
            if (active && !compoent.gameObject.activeSelf)
            {
                compoent.gameObject.SetActive(true);
            }
            else if (!active && compoent.gameObject.activeSelf)
            {
                compoent.gameObject.SetActive(false);
            }
        }
    }
}
Main/Utility/ComponentExtersion.cs.meta
Main/Utility/Datumline.cs
Main/Utility/Datumline.cs.meta
Main/Utility/DeviceUtility.cs
File was renamed from Utility/DeviceUtility.cs
@@ -1,169 +1,169 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net.NetworkInformation;
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text.RegularExpressions;
#if UNITY_IOS
using UnityEngine.iOS;
#endif
public class DeviceUtility
{
    static string mac = string.Empty;
    public static string GetMac()
    {
        if (string.IsNullOrEmpty(mac))
        {
            try
            {
                var netInterfaces = NetworkInterface.GetAllNetworkInterfaces();
                if (netInterfaces != null && netInterfaces.Length > 0)
                {
                    mac = netInterfaces[0].GetPhysicalAddress().ToString();
                }
            }
            catch (Exception ex)
            {
                Debug.Log(ex);
            }
        }
        return mac;
    }
    static string ipPattern = "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}";
    static string ip = string.Empty;
    public static string GetIp()
    {
        try
        {
            if (string.IsNullOrEmpty(ip))
            {
                string url = "http://pv.sohu.com/cityjson";
                WebRequest wRequest = WebRequest.Create(url);
                wRequest.Method = "GET";
                wRequest.ContentType = "text/html;charset=UTF-8";
                WebResponse wResponse = wRequest.GetResponse();
                Stream stream = wResponse.GetResponseStream();
                StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default);
                string str = reader.ReadToEnd();
                reader.Close();
                wResponse.Close();
                var match = Regex.Match(str, ipPattern);
                if (match != null)
                {
                    ip = match.Value;
                }
            }
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
        }
        return ip;
    }
    public static string GetDeviceUniquenessIdentify()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.advertisingIdentifier;
#else
        return SystemInfo.deviceUniqueIdentifier;
#endif
    }
    public static string GetDeviceOSLevel()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.systemVersion;
#else
        return SystemInfo.operatingSystem;
#endif
    }
    public static string GetDeviceName()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.generation.ToString();
#else
        return SystemInfo.deviceName;
#endif
    }
    public static string GetDeviceModel()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.generation.ToString();
#else
        return SystemInfo.deviceModel;
#endif
    }
    public static bool IsLowMemory()
    {
#if UNITY_IOS
        if (Application.platform == RuntimePlatform.IPhonePlayer)
        {
            switch (Device.generation)
            {
                case DeviceGeneration.iPadMini2Gen:
                case DeviceGeneration.iPhone5S:
                case DeviceGeneration.iPhone6:
                case DeviceGeneration.iPhone6Plus:
                    return true;
                default:
                    return false;
            }
        }
        else
        {
            return false;
        }
#endif
        return false;
    }
    public static int cpu = 2;
    public static int memory = 2 * 1024;
    public static void GetCpuAndMemory(out int _cpu, out int _memory)//内存单位是MB
    {
        try
        {
            _cpu = Environment.ProcessorCount;
            switch (Application.platform)
            {
                case RuntimePlatform.Android:
                    _memory = 0; //TODO YL collect device memory //ynmbxxjUtil.Instance.Device.totalMemory;
                    break;
                case RuntimePlatform.IPhonePlayer:
                    _memory = IsLowMemory() ? 1 : 2 * 1024;
                    break;
                default:
                    _memory = 4 * 1024;
                    break;
            }
            cpu = _cpu;
            memory = _memory;
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            _cpu = 2;
            _memory = 2 * 1024;
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net.NetworkInformation;
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text.RegularExpressions;
#if UNITY_IOS
using UnityEngine.iOS;
#endif
public class DeviceUtility
{
    static string mac = string.Empty;
    public static string GetMac()
    {
        if (string.IsNullOrEmpty(mac))
        {
            try
            {
                var netInterfaces = NetworkInterface.GetAllNetworkInterfaces();
                if (netInterfaces != null && netInterfaces.Length > 0)
                {
                    mac = netInterfaces[0].GetPhysicalAddress().ToString();
                }
            }
            catch (Exception ex)
            {
                Debug.Log(ex);
            }
        }
        return mac;
    }
    static string ipPattern = "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}";
    static string ip = string.Empty;
    public static string GetIp()
    {
        try
        {
            if (string.IsNullOrEmpty(ip))
            {
                string url = "http://pv.sohu.com/cityjson";
                WebRequest wRequest = WebRequest.Create(url);
                wRequest.Method = "GET";
                wRequest.ContentType = "text/html;charset=UTF-8";
                WebResponse wResponse = wRequest.GetResponse();
                Stream stream = wResponse.GetResponseStream();
                StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default);
                string str = reader.ReadToEnd();
                reader.Close();
                wResponse.Close();
                var match = Regex.Match(str, ipPattern);
                if (match != null)
                {
                    ip = match.Value;
                }
            }
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
        }
        return ip;
    }
    public static string GetDeviceUniquenessIdentify()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.advertisingIdentifier;
#else
        return SystemInfo.deviceUniqueIdentifier;
#endif
    }
    public static string GetDeviceOSLevel()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.systemVersion;
#else
        return SystemInfo.operatingSystem;
#endif
    }
    public static string GetDeviceName()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.generation.ToString();
#else
        return SystemInfo.deviceName;
#endif
    }
    public static string GetDeviceModel()
    {
#if UNITY_IOS
        return UnityEngine.iOS.Device.generation.ToString();
#else
        return SystemInfo.deviceModel;
#endif
    }
    public static bool IsLowMemory()
    {
#if UNITY_IOS
        if (Application.platform == RuntimePlatform.IPhonePlayer)
        {
            switch (Device.generation)
            {
                case DeviceGeneration.iPadMini2Gen:
                case DeviceGeneration.iPhone5S:
                case DeviceGeneration.iPhone6:
                case DeviceGeneration.iPhone6Plus:
                    return true;
                default:
                    return false;
            }
        }
        else
        {
            return false;
        }
#endif
        return false;
    }
    public static int cpu = 2;
    public static int memory = 2 * 1024;
    public static void GetCpuAndMemory(out int _cpu, out int _memory)//内存单位是MB
    {
        try
        {
            _cpu = Environment.ProcessorCount;
            switch (Application.platform)
            {
                case RuntimePlatform.Android:
                    _memory = 0; //TODO YL collect device memory //ynmbxxjUtil.Instance.Device.totalMemory;
                    break;
                case RuntimePlatform.IPhonePlayer:
                    _memory = IsLowMemory() ? 1 : 2 * 1024;
                    break;
                default:
                    _memory = 4 * 1024;
                    break;
            }
            cpu = _cpu;
            memory = _memory;
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
            _cpu = 2;
            _memory = 2 * 1024;
        }
    }
}
Main/Utility/DeviceUtility.cs.meta
Main/Utility/DontDestroyOnLoad.cs
File was renamed from Utility/DontDestroyOnLoad.cs
@@ -1,11 +1,11 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DontDestroyOnLoad : MonoBehaviour
{
    void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DontDestroyOnLoad : MonoBehaviour
{
    void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
}
Main/Utility/DontDestroyOnLoad.cs.meta
Main/Utility/DrawUtility.cs
Main/Utility/DrawUtility.cs.meta
Main/Utility/EffectRenderSort.cs
Main/Utility/EffectRenderSort.cs.meta
Main/Utility/EnumHelper.cs
File was renamed from Utility/EnumHelper.cs
@@ -1,1922 +1,1922 @@

public enum E_ActorClassType
{
    UnDefine,
    Hero,
    Player,
    Guard,
    NpcFightNorm,
    NpcFightBoss,
    NpcSummonFunc,
    NpcCollect,
    NpcSummonFight,
    NpcFunc,
    Pet,
    NpcTouchKilled,
    NpcClientFightNorm,
    NpcClientFightBoss,
    NpcClientFunc,
    NpcFightVirtualPlayer,
    PlayerXmzz,
    ClientPlayer,
    PlayerZZ,
    PlayerSgzcRobot,
    PVPClientPlayer,
    ILClientPlayer,
    NpcClientCollect,
    JiaPlayer,
}
public enum E_ActorState
{
    Idle,
    CtrlRun,
    AutoRun,
    Hurt,
    Die,
    CommonAtk,
    CastSkill,
    DaZuo,
    Roll,
    Mocked,
}
public enum E_4012Status
{
    Normal,//无 0
    Freezed,//定身状态 1
    Slow,//减速状态 2
    LoseBlood,//持续掉血状态 3
    Shield,//麒麟佑身4
    DamBackShield,//东皇附体5
    Sneer,//嘲讽 6
    Stun,//晕眩状态 7
    AddAtk,//加攻状态 8
    WeakDef,//减防状态 9
    LimitSkill,//禁魔状态 10
    LimitAddHP,//禁疗状态 11
    Blind,//致盲状态 12
    Burn,//灼烧 13
    LoseBlood2,//职业2持续掉血状态 14
    LoseBlood3,//职业3持续掉血状态 15
    MissSneerAtk,//对嘲讽攻击免疫表现为miss 16
    BeInAir,//浮空(做法同眩晕类) 17
    zqdlj,//紫气东来金灵根技能状态 18
    Ice,//寒冰状态(同减速) 19
}
public enum E_BuffType
{
    bfBuff = 1,     // buff
    bfDeBuff,       // debuff
    bfAura,         // aura,光环
    bfIncBuff,      // inc buff增值BUFF 玩家不可手动清除
    btPassiveBuf,   // 被动BUF
    bfEquipBuff,    // 装备BUF
    bfMapBuff,      // 场景BUF
    bfActionBuff,   // 行为Buf
    bfProcessBuff,  // 一定间隔处理一次持续一定时间的Buff
    bfProcessDeBuff,// 一定间隔处理一次,持续一定时间的DeBuff
    btBufMax        // BUF类型数
}
public enum E_MonsterType
{
    Normal,//0 普通怪;
    Elite,//1 精英怪;
    BlueBoss,//2 蓝BOSS;
    PurpleBoss,//3 紫BOSS;
    Danger,//4 危险怪;
    DarkGoldBoss,//5 暗金BOSS,
    SmallLead,//6 小头目,
    MissionBoss,//7 任务BOSS
}
public enum E_ActorGroup
{
    User,
    Player,
    Enemy,
    Neutral,
    Collect,// 收集类
    FuncNpc,// 功能性npc
}
public enum E_ClientNpcType
{
    Func,
    Fight,
}
public enum E_NpcType
{
    Func = 0,//功能NPC填写“0”
    Defend = 1,//守卫NPC填写“1”
    Fight = 2,//战斗NPC填写“2”
    Summon = 3,//召唤NPC填写“3”
    Ghost = 4,//灵NPC填写  “4”
    Trap = 5,//陷阱NPC填写 "5"
    Car = 6,//镖车NPC填写 "6"
    Sprite = 7,//精灵NPC填写 "7"
    VirtualPlayer = 8,// 虚拟助战英雄
    Flag = 9,//旗类NPC填写 "9"
    Collect = 14,//采集NPC填定 "14"
    Catch = 15,//可捕捉NPC 15
    Pet = 16,//宠物         16
    TouchKilled = 17,//守护     17
    FMBoss = 18,// 封魔坛boss    18
    BreakableObj = 19,//场景可被攻击物     19
    FightAssist = 20,// 助战
    SGZC_FightAssist = 21,// 上古战场助战
    MonsterTime = 22,// 按时间掉血
    PersonalEnemy = 23,// 专属敌人
    PersonalEnemyPVP = 24,// 专属敌人
    OpenWorldMap = 99,// 打开世界地图
}
public enum E_MovingState
{
    Normal,
    Fly,
    Ride,
}
public enum WindowType
{
    Base = 0,
    Normal = 1,
    Modal = 2,
    Tip = 3,
    System = 4,
    Loading = 5,
    Flag = 99,
}
public enum GestureType
{
    Left,
    Right,
    Up,
    Down
}
public enum UnityPlatform
{
    Editor,
    Android,
    Iphone,
    Standalone,
}
public enum RoleRenameResult
{
    MoneyErr = 0, //金钱不足
    NameRuleErr = 1, //名字不合法
    NameLengErr = 2, //名字长度错误
    NameRepeatErr = 3, //重名
    RenameFailErr = 4, //改名失败
    RenameSuccess = 5, //成功
}
/// <summary>
/// <para>无意义 0</para>
/// <para>自己 1</para>
/// <para>队伍 2</para>
/// <para>友好 3</para>
/// <para>可攻击 4</para>
/// <para>自己及友好 5</para>
/// <para>玩家尸体 6</para>
/// <para>非死亡玩家 7</para>
/// <para>可攻击怪物 8</para>
/// <para>可攻击玩家 9</para>
/// <para>所有单位 10</para>
/// <para>宠物对主人 11</para>
/// <para>召唤物对主人 12</para>
/// <para>小怪包括精英 13</para>
/// </summary>
public enum E_SkillCastTarget
{
    None,
    Self,
    TeamMate,
    Friend,
    CanAttacked,
    SelfAndFriend,
    PlayerDeadBody,
    UnDeadPlayer,
    CanAttackedMonster,
    CanAttackedPlayer,
    All,
    PetToOwner,
    SummonToOwner,
    Monster,
    FriendNpc,
}
/// <summary>
/// 技能类型
/// </summary>
public enum E_SkillType
{
    Special, // 特殊   0
    Attack, // 攻击类   1
    Recover,// 恢复类   2
    ContinuousGain, // 持续增益BUFF  3
    SustainedReduction,// 持续减益BUFF  4
    GainBuff,// 增益BUFF 5
    ReductionBuff,// 减益BUFF 6
    Passive,// 被动技   7
    Reborn,// 复活     8
    ValueAdded,// 增值技能(不可清除)9
    Halo,// 光环技能  10
    Equip,// 装备技能  11
    Area,// 区域技能  12
    Summon,// 召唤      13
    ControlBuff,// 控制型BUFF 14
    MutilHurtBuffAtk,// 多段伤害buff攻击类型(类xp技能) 15
    PassiveGainBuff,// 被动触发增益类buff 16
    PassiveReductionBuff,// 被动触发减益类buff 17
    PassiveControlBuff,// 被动触发的控制类buff 18
    Property,// 属性类技能 20(如坐骑属性,宠物属性)
    PassiveBuff,// 被动buff 19(暂时不知道干啥的)
    PassiveContinuousGain,// 被动触发持续类增益类buff 21
    PassiveSustainedReduction,// 被动触发持续类减益类buff 22
}
public enum E_SkillFuncType
{
    Common,// 0为通用技能
    FaBaoActiveSkill,// 1为法宝功能获得的主动技能
    FaBaoPassiveSkills,// 2为法宝功能获得的被动技能
    FaBaoSpSkill,// 3为法宝功能获得的SP技能
    TalentSkills,// 4为天赋技能
    RiderSkill,// 5为坐骑技能
    PetSkill,// 6为宠物技能
    GodWeaponSkill,// 7为神兵技能
    NormalAttack,// 8为普攻
    SpLv15Skill,// 9为sp15级技能
    Roll,// 10为翻滚
    RealmSkill,// 11为境界
    MythicalAnimal,// 12为神兽技能
    ZhuxianSkill,// 13为诛仙技能
}
/// <summary>
/// <para>无对象 0</para>
/// <para>有对象 1</para>
/// <para>地面 2</para>
/// </summary>
public enum E_SkillCastType
{
    None,// 无对象 0
    NeedTarget,// 有对象 1
    Ground,// 地面 2
}
public enum MapTransferType
{
    WorldTransport = 1,
    BigMapTransport = 2,
    MissionTransport = 3,
}
public enum DropItemType
{
    Pattern0 = 0,
    Pattern1 = 1,
    Pattern2 = 2,
    Pattern3 = 3,
}
public enum DailyQuestType
{
    BountyMission = 1,
    IceCrystal = 2,
    FairyFeast = 3,
    BlastStove = 4,
    Kirin = 5,
    FairyLand = 6,
    GuardSky = 7,
    Demon = 8,
    Trial = 9,
    AncientBattleGround = 10,
    EmperorRelic = 11,
    WyTaiChi = 12,
    FairyLeague = 13,
    HeavenBattle = 14,
    Prayer = 15,
    WorldBoss = 16,
    DemonJar = 17,
    FairyTask = 18,
    RuneTowerSweep = 19,
    RuneTower = 21,
    TreasureCollectSoul = 22,
    BossHome = 24,
    PersonalBoss = 25,
    ElderGodArea = 26,
    FairyGrabBoss = 27,
    KillMonster = 28,
    DungeonAssist = 29,
    GatherSoulDungeon = 30,
    CrossServerPk = 31,
    AllianceBoss = 32,
    RidingPetActivity = 34,
    HazyRegion = 35,
    SkyTower = 36,
    Auction = 37,
    JadeDynastyBoss = 38,
    CrossServerBoss = 39,
    FairyChuanGong = 40, //仙盟传功
    ActivityPlace = 41, //秘境探索
    ArenaPK = 43,//竞技场PK
    //后续IL开发添加预设
    default1,
    default2,
    default3,   //46 仙盟打坐
    default4,   //47 古神战场
    default5,   //48 通用副本
    default6,   //49 通用副本
    default7,   //50 通用副本
    default8,   //51 通用副本
    default9,   //52 聚魂通用副本
    default10,
    default11,
    default12,
    default13,
    default14,
    default15,
    default16,
    default17,
    default18,
    default19,
    default20,
}
/// <summary>
/// 服务端下发的副本倒计时类型
/// </summary>
public enum DungeonCoolDownType
{
    LeaveMap = 0,//退出倒计时
    WaitStart = 1,//开始倒计时
    FightStart = 2,//战斗倒计时
    FlagTake = 3,
    NextRound = 4,//下一波倒计时
    FBAddTime = 6,
    ElderGodAreaDeadTime = 7,//古神禁地倒计时
    PickUpTime = 8,//副本捡装备倒计时
    WaitPlayer = 9, //等待对手倒计时
    PlayerLeave = 10, //对手掉线倒计时
}
/// <summary>
/// 装备部位索引
/// </summary>
public enum RoleEquipType
{
    Weapon = 1,         // 主手
    Weapon2 = 2,       // 副手
    Hat = 3,                // 帽子
    Clothes = 4,          // 衣服
    Belt = 5,                // 腰带
    Trousers = 6,         // 裤子
    Shoes = 7,             // 鞋子
    Glove = 8,              //手套
    Neck = 9,               //项链
    FairyCan1 = 10,      //仙器
    FairyCan2 = 11,      //仙器
    Jade = 12,              //玉佩
    Wing = 13,               //翅膀
    Guard = 14,            //守护
    PeerlessWeapon1 = 16,//绝世武器
    PeerlessWeapon2 = 17,//绝世副手
    Mount = 19,              //当前的坐骑
    FashionWeapon = 20,//时装武器
    FashionClothes = 21, //时装衣服
    FashionWeapon2 = 22,//时装副手
    retMax,
};
//tagObjInfoRefresh,更新枚举值必须同时更新注释
/**主角属性刷新类型*/
public enum PlayerDataType
{
    AccountID = 0,             //帐号名   该角色所在的帐号的用户名 0,
    PlayerID = 1,                     //角色ID,1,
    PlayerName = 2,                   //角色名,size , 14  2,
    Sex = 3,                          //性别    3,
    Hair = 4,                         //发型  1.标准型(男) 2.名仕型 3.浪子型 4.标准型(女) 5.马髻型 6.妩媚型    4,
    HairColor = 5,                    //头发颜色  5种  5,
    Face = 6,                         //基本脸型 6,
    Job = 7,                          //职业
    LV = 8,                           //等级 8,
    TotalExp = 9,                     //总经验    9,
    Family = 10,                       //家族 10,
    Country = 11,                       //国家  0.秦国 1.魏国 2.楚国   阵营   11,
    TeamHornor = 12,                    //组队荣誉   12,
    PKValue = 13,                      //PK值 13,
    FamilyHornor = 14,                  //家族贡献 14,
    FamilyActiveValue = 15,             //家族活跃度 15,
    CountryHornor = 16,                 //本周国家荣誉值   16,
    Mate = 17,                         //伴侣,17,
    Gold = 18,                          //金子   18,
    GoldPaper = 19,                     //金票  19,
    Silver = 20,                       //银子 20,
    SilverPaper = 21,                  //银票    21,
    FightPoint = 22,                   //战斗值  22,
    HappyPoint = 23,                   //娱乐值  23,
    MapID = 24,                        //角色所在地图  24,
    PosX = 25,                         //角色坐标 25,
    PosY = 26,                         //26,
    State = 27,                        //角色状态   1.封存 2.死亡 3.正常  以后还有陆续添加 27,
    MaxHP = 28,                        //最大HP    28,
    HP = 29,                           //当前HP   29,
    MaxMP = 30,                        //最大MP    30,
    MP = 31,                           //当前MP   31,
    XP = 32,                           //当前XP   32
    HPRestoreSetting = 33,             //少于这个值%自动喝血 33,
    MPRestoreSetting = 34,             //少于这个值%自动喝魔 34,
    ExpRate = 35,                      //当前经验倍率    单位为百分比  35,
    FreePoint = 36,                    //未分配点数 36,
    FreeSkillPoint = 37,               //未分配技能点数   37,
    STR = 38,                          //力量    38,
    PNE = 39,                          //灵力    39,
    PHY = 40,                          //身法    40,
    CON = 41,                          //体质    41,
    DEF = 42,                          //防御    42,
    MINATK = 43,                        //外攻最小 43
    MAXATK = 44,                        //外攻最大 44
    MAtkMin = 45,                       //内功最大 45
    MAtkMax = 46,                       //内功最小 46
    MDef = 47,                          //内防     47
    HIT = 48,                           //命中 48
    POISIONATK = 49,                    //毒攻 49
    FIREATK = 50,                       //火攻 50
    REALATK = 51,                        //真实伤害 51
    THUNDERATK = 52,                    //雷攻 52
    WINDATK = 53,                       //风攻 53
    POISIONDEF = 54,                    //毒防 54
    FIREDEF = 55,                       //火防 55
    REALDEF = 56,                        //真实抵抗 56
    THUNDERDEF = 57,                    //雷防 57
    WINDDEF = 58,                       //风防 58
    Miss = 59,                         //闪避   59,
    SuperHit = 60,                     //暴击伤害 60,
    Buff = 61,                         //最多12个BUFF 如果超过12个按先进先出的顺序覆盖  61,
    Skill = 62,                        //该玩家所学会的全部技能 目前最多22个 日后可能再增加   62,
    Mark = 63,                         //称号该玩家所拥有的全部称号,上限未定   63,
    SettingH = 64,                     //快捷栏(横)   64,
    SettingV = 65,                     //快捷栏(竖)   65,
    FightPK = 66,                      //衡量PK能力的一项属性 由攻防计算而得   66,
    ActiveValue = 67,                  //击杀敌国阵营玩家和NPC的统计值    67,
    PlayerType = 68,                   //角色的五行属性,组队用 1. 金 2. 木 3. 水 4. 土 5. 火   68,
    NameColor = 69,                    //角色名字颜色  69,
    AtkInterval = 70,                  //攻击速度 70,
    Speed = 71,                        //速度   71,
    SuperHitRate = 72,                 //暴击率 72,
    PickupDist = 73,                   //拾取距离 73,
    CountryLastWeekHornor = 74,        //上周国家荣誉值   74,
    LastWeekOnlineTime = 75,           //上周在线时间  75,
    LastWeekFamilyActiveValue = 76,    //上周活跃度  76,
    FBID = 77,                         //玩家的副本ID    77,
    FamilyLV = 78,                     //家族等级 78,
    RealMapID = 79,                    //数据地图ID   79,
    GMLevel = 80,                      //gm等级改变   80,
    TeamID = 81,                       //gm等级改变    81,
    TeamLV = 82,                       //gm等级改变    82,
    FightPower = 83,                    //战斗力    83,
    RebornMapID = 84,                   //重生地图ID  84,
    RebornPosX = 85,                    //重生点x   85,
    RebornPosY = 86,                    //重生点y   86,
    Coin = 87,                         //当前点券数目   87,
    BillboardLV = 88,                  //排行榜等级  88,
    Tick = 89,                         //当前Tick   89,
    CurrentPlayerType = 90,            //当前五行 90,
    FriendFavor = 91,                   //好友人气值刷新   91
    BackpackLV = 92,                    //背包等级   92
    ReincarnationLV = 93,               //转生等级 93
    BaseSTR = 94,                      //裸体力量    94,
    BasePNE = 95,                      //裸体精神    95,
    BasePHY = 96,                      //裸体敏捷    96,
    BaseCON = 97,                      //裸体体质    97,
    //  BaseINT ,                      //裸体智力
    //  BaseLUCK ,                     //裸体幸运
    ReceivedSalary = 98,                //玩家本次领取的工资    98
    WarehouseLV = 99,                   //仓库等级   99
    EquipShowSwitch = 100,               //装备显隐开关   100
    LuckValue = 101,                     //幸运值   101
    ExAttr1 = 102,                       //扩展属性1   102魔仆伤害24
    ExAttr2 = 103,                       //扩展属性2   103组队是否需要审核
    ExAttr3 = 104,                       //扩展属性3   104元素攻击26
    ExAttr4 = 105,                       //扩展属性4   105元素防御27
    ExAttr5 = 106,                       //扩展属性5   106
    Faction = 107,                       //阵营        107
    InfamyValue = 108,                   //恶名值      108
    RealmLevel = 109,                  //官阶        109
    IsFindByLabel = 110,                  //是否允许标签检索        110
    IsCloseFriendLabel = 111,            //是否关闭好友签名        111
    ChangeCoinPointTotal = 112,           //兑换的点数总计        112
    VIPLv = 113,                          //VIP等级         113
    ExAttr6 = 114,                       //扩展属性6   114流血伤害31
    ExAttr7 = 115,                       //扩展属性7   法宝sp,非亿位
    ExAttr8 = 116,                       //扩展属性8   法宝sp,亿位
    ExAttr9 = 117,                       //扩展属性9   117控制抵抗34
    ExAttr10 = 118,                       //扩展属性10  118输出伤害35
    ModelMark = 119,                       //变形模型Mark  119
    PrizeCoin = 120,                       //奖励点券数   120
    ExAttr11 = 121,                       //扩展属性11  121 现金代币(代金券)
    ExAttr12 = 122,                       //扩展属性12 退出仙盟时间
    ExAttr13 = 123,                       //扩展属性13 服务器组ID
    ExAttr14 = 124,                       //扩展属性14  124
    SkillAtkRate = 125,                  ///战斗属性--技能攻击伤害     125
    LuckyHitRate = 126,                  ///战斗属性--会心一击机率万分率  126
    LuckyHitVal = 127,                   ///战斗属性--会心一击额外伤害    127
    GreatHitRate = 128,                  ///战斗属性--卓越一击机率万分率  128
    GreatHitVal = 129,                   ///战斗属性--卓越一击额外伤害    129
    KillBackHP = 130,                    ///战斗属性--杀怪回血            130
    KillBackMP = 131,                    ///战斗属性--杀怪回魔            131
    DamageReduceRate = 132,              ///没有使用
    DamageBackRate = 133,                ///战斗属性--反伤万分比          133
    GoldFoundRate = 134,                 ///战斗属性--金钱寻获加成万分比  134
    IgnoreDefRate = 135,                 ///战斗属性--无视防御机率万分率  135
    BattleValEx1 = 136,                  ///战斗属性--扩展1 攻速              136
    BattleValEx2 = 137,                  //战斗属性--扩展2   攻击回血            137
    BattleValEx3 = 138,                  //战斗属性--扩展3               138  增伤
    BattleValEx4 = 139,                  //战斗属性--扩展4               139
    BattleValEx5 = 140,                  //战斗属性--扩展5               140
    HPRestorePer = 141,                  //生命回复                141
    LVEx = 142,                          //玩家等级副本,用于转生        142
    LV2 = 143,                           //大师等级                      143
    ExpPoint = 144,                      //扩展经验点数                  144
    OperateInfo = 145,                   //玩家运营商附加信息,如QQ黄钻等145
    SuperHitReduce = 146,                //暴击抗性                   146
    LuckyHitRateReduce = 147,                //会心一击抗性                   147
    SkillAtkRateReduce = 148,               ///技能减伤
    DamagePVP = 149,                      //PVP增加伤害       149 对应191 PVP增加减少
    SpeedValue = 150,                  //移动速度                 150
    DamagePVE = 151,                  ///暂时没用                 151
    PetDamPer = 152,                  //灵兽增加伤害                 152
    IgnoreDefRateReduce = 153,                  //无视防御抗性        153
    DamChanceDef = 154,                  //抵御        154
    BleedDamage = 155,                      //流血伤害 155
    FaintRate = 156,                    //击晕 156
    FaintDefRate = 157,                       //控制抵抗 157
    FinalHurt = 158,                       //输出伤害158
    FinalHurtReduce = 159,                //减少承受伤害 159
    DamagePerPVP = 160,              //PVP增加伤害 160
    DamagePerPVPReduce = 161,              //PVP减少伤害 161
    ComboDamRate = 162,                    //连击几率162
    ComboDamPer = 163,                    //连击伤害163
    MaxProDef = 164,                    //最大防护值 164
    FamilyContribution = 167,              //仙盟贡献度     167
    FamilyStoreScore = 168,                //获取仙盟仓库积分
    RuneSplinters = 169,                  //符印精华        169
    Rune = 170,                  //符印碎片        170
    RealmPoint = 171,           //境界修炼点       171
    MagicEssence = 172,//魔精 172
    UnionLiven = 173, //仙盟活跃令
    FBHelpPoint = 174,       //副本助战积分  174
    PlayerPKState = 175, //战斗状态
    IsAttackBossState = 176,  //是否在打Boss 1 在 0 不在
    BasicsMinimum = 177,//基础最小攻击
    BasicsMaxAttack = 178,//基础最大攻击
    BasicsLife = 179,//基础生命
    BasicsDefense = 180,//基础防御
    BasicsScoreAHit = 181,//基础命中
    BasicsDodge = 182,//基础闪避
    OnlyFinalHurt = 183,// 额外伤害附加
    CDBPlayerRefresh_ForbidenTalk = 184,//禁言
    CDBPlayerRefresh_FuncDef = 185,  // 功能层防御  185
    CDBPlayerRefresh_TreasureScore = 186, //寻宝商店积分
    CDBPlayerRefresh_Danjing = 187,              // 丹精 187
    CDBPlayerRefresh_NPCHurtAddPer,//对怪物伤害加成 188
    FunalHurtPer = 189,// 最终伤害加成
    CDBPlayerRefresh_TalentPoint = 190,
    CDBPlayerRefresh_GodWeaponLV_1 = 192,
    CDBPlayerRefresh_GodWeaponLV_2 = 193,
    CDBPlayerRefresh_GodWeaponLV_3 = 194,
    CDBPlayerRefresh_GodWeaponLV_4 = 195,
    CDBPlayerRefresh_SoulDust = 196,//聚魂-魂尘
    CDBPlayerRefresh_SoulSplinters = 197,//聚魂-碎片
    CDBPlayerRefresh_SoulCore = 198,//聚魂-核心环
    CDBPlayerRefresh_Honor = 199, //# 荣誉值
    CDBPlayerRefresh_ZhuxianRate = 200,
    CDBPlayerRefresh_Mater = 201, //# 灵根属性-金
    CDBPlayerRefresh_Wood = 202,//# 灵根属性-木
    CDBPlayerRefresh_Water = 203,//# 灵根属性-水
    CDBPlayerRefresh_Fire = 204,//# 灵根属性-火
    CDBPlayerRefresh_Earth = 205,//# 灵根属性-土
    CDBPlayerRefresh_NormalHurt = 206,////属性普通攻击增伤:普通攻击附加的固定值伤害
    CDBPlayerRefresh_NormalHurtPer = 207,////属性普通攻击增伤:普通攻击附加的固定值伤害
    CDBPlayerRefresh_FabaoHurt = 208,// //属性法宝技能增伤:法宝技能攻击附加的固定值伤害
    CDBPlayerRefresh_FabaoHurtPer = 209,//  //属性法宝技能加成:法宝技能攻击附加的伤害百分比
    CDBPlayerRefresh_SuperHitRateReduce = 210,//暴击抗性
    CDBPlayerRefresh_LuckyHitReduce = 211,//会心一击伤害固定值减免
    CDBPlayerRefresh_FinalHurtReducePer = 212,//最终伤害百分比减少
    CDBPlayerRefresh_YinjiTime = 213,//印记持续时间,单位毫秒
    CDBPlayerRefresh_YinjiCount = 214,//印记持续时间,单位毫秒
    CDBPlayerRefresh_SkillAddPerA = 215,//定海神针技能伤害百分比
    CDBPlayerRefresh_SkillAddPerB = 216, //皓月枪技能伤害百分比
    CDBPlayerRefresh_SkillAddPerC = 217, //鬼牙刃技能伤害百分比
    CDBPlayerRefresh_SkillAddPerD = 218, //磐龙印技能伤害百分比
    CDBPlayerRefresh_SkillAddPerE = 219, //杏黄旗技能伤害百分比
    CDBPlayerRefresh_SkillAddPerF = 220,//嗜天斧技能伤害百分比
    CDBPlayerRefresh_SkillAddPerG = 221, //射日神弓技能伤害百分比
    CDBPlayerRefresh_SkillReducePerA = 222, //定海神针技能减伤百分比
    CDBPlayerRefresh_SkillReducePerB = 223, //皓月枪技能减伤百分比
    CDBPlayerRefresh_SkillReducePerC = 224, //鬼牙刃技能减伤百分比
    CDBPlayerRefresh_SkillReducePerD = 225, //磐龙印技能减伤百分比
    CDBPlayerRefresh_SkillReducePerE = 226, //杏黄旗技能减伤百分比
    CDBPlayerRefresh_SkillReducePerF = 227, //嗜天斧技能减伤百分比
    CDBPlayerRefresh_SkillReducePerG = 228, //射日神弓技能减伤百分比
    //后续IL开发添加预设
    default1,   // 229
    default2,   //230
    default3,   // 功能特权令 231
    default4,   //  环保值 232
    default5,   // 233仙玉负数
    default6,   // 234灵石负数
    default7,
    default8,
    default9,   // 237 地图境界难度
    default10,  // 238 离开仙盟时间戳(包含主动退出或被踢
    default11,  // 239 代表魅力等级
    default12,
    default13,  // 241 古神货币
    default14,  // 242 功德点
    default15,
    default16,
    default17,  // 245 机缘点
    default18,
    default19,  // 247 成就积分
    default20,  // 248 万界积分
    default21,
    default22,
    default23,
    default24,
    default25,
    default26,
    default27,
    default28,
    default29,
    default30,
    default31,
    default32,
    default33,
    default34,  // 262 凭证积分
    default35,  // 263 聚魂精华
    default36,  // 264 Boss最终伤害加成
    default37,  // 265 骑宠积分
    default38,  // 266 古宝养成货币
    default39,  // 267 天道币
    default40,
    default41,  // 269 过期型代金券
    default42,  // 270 仙缘积分
    default43,  // 271 幻境阁积分
    default44,
    default45,
    default46,
    default47,
    default48,
    default49,
    default50,
};
/** 背包类型码定义 */
public enum PackType
{
    Deleted = 0, // 已删除物品,弃用
    Equip = 1, // 装备
    Item = 2, // 物品
    Warehouse = 5, // 仓库
    Horse = 12, // 坐骑背包
    AnyWhere = 13, // 万能背包
    InterimPack = 28,//临时交换背包
    Treasure = 30, // 寻宝背包
    PetPack = 31, //宠物背包
    DogzItem = 32, //神兽物品背包
    DogzEquip = 33, //神兽装备背包(神兽穿戴)
    //后续IL开发添加预设
    default1,   //34 垃圾回收
    default2,
    default3,
    default4,
    default5,
    default6,
    default7,
    default8,
    default9,
    default10,
    GatherSoul = 254,//聚魂
    RunePack = 255,//符印背包
}
public enum ItemType
{
    Copper = 1,// 铜钱
    Drugs = 7,// 药品
    Buff = 9, //Buff类型
    Gemstone = 25,// 宝石
    ComposeSuitStone = 35, //套装石碎片
    WingsMat = 39,              //合成翅膀材料,羽翼精炼材料
    DropCopper = 43,           // 掉落铜钱
    VipTools = 80,                 //vip道具
    Box = 81,                         //宝箱
    Equip_Weapon = 101,         // 主手
    Equip_Weapon2 = 102,       // 副手
    Equip_Hat = 103,                // 帽子
    Equip_Clothes = 104,          // 衣服
    Equip_Belt = 105,                // 腰带
    Equip_Trousers = 106,         // 裤子
    Equip_Shoes = 107,             // 鞋子
    Equip_Glove = 108,              //手套
    Equip_Neck = 109,               //项链
    Equip_FairyCan1 = 110,       //仙器
    Equip_FairyCan2 = 111,       //仙器
    Equip_Jade = 112,               //玉佩
    Equip_Wing = 113,              // 翅膀
    Guard_1 = 114,                  // 灵守 1
    Guard_2 = 115,                   //灵守 2
}
public enum MakeType
{
    OneKeySell = 3,          // 一键出售回应
    EquipStarUpgrade = 8,         // 装备升星
    ItemCompound = 13,      // 物品合成
    DrugRefine = 18,            // 炼丹
    DrugRecycle = 20, //丹药回收
    DogzEquipPlus = 21,// 神兽装备强化
    RuneCompound = 22,//符印合成
    GatherSoulCompound = 23,//聚魂合成
    GatherSoulDecompose = 24,//聚魂分解
}
/// <summary>
/// 称号类型
/// </summary>
public enum TitleType
{
    None = -1,
    Get = 0,//已获得
    Activity = 1, //活动称号
    Vip = 2,       //VIP称号
    Achivement = 3, //成就称号
    UserDefined = 4, //自定义
}
//功能开启限制类型
public enum FuncOpenEnum
{
    Strength = 1,//装备强化
    Gem = 2,//宝石镶嵌
    Wing = 3,//翅膀
    Pet = 6,//灵宠
    Treasure = 7,//法宝
    Mounts = 8,//坐骑
    Rune = 9,//符印
    Realm = 12, //境界
    Fairy = 15,// 仙盟
    FairyTask = 16,
    GodWeapon = 20,  //神兵
    SelfBoss = 22,//个人Boss
    Title = 24, //称号
    Talent = 149,//天赋技能
    Suit = 36,//套装进化
    ExpPray = 60,//经验祈愿
    CoinPray = 61,//铜钱祈愿
    WorldLv = 71,//世界等级
    Rank = 72,//排行榜
    Friend = 73,//好友
    TouchSky = 74,//登天
    Compose = 75,//合成
    HuntTreasure = 76,//打宝
    Market = 77,//市场
    DayDaily = 78,//日常
    Store = 79,//商城
    RuneTower = 80,//符印塔
    SignIn = 81,//签到
    Potential = 82,//潜力加成
    IceCrystal = 83,//冰晶矿脉
    FairyFest = 84,//仙盟宴会
    Kylin = 85,//麒麟之府
    FairyLand = 86,//仙界秘境
    BlastFurnace = 87,//炼丹
    Munekado = 88,//宗门试炼
    GuardSky = 89,//守卫人皇
    WingRefine = 90,//翅膀精炼
    EquipRefine = 91,//装备精炼
    ElderGods = 92,//古神禁地
    EquipCompose = 93,//装备合成
    Guard = 94,//守护
    SkillTreasure = 95,//技能法宝
    WingCompose = 97,//翅膀合成
    Demon = 98,//混乱妖域
    HappyFindTreasure = 99,//欢乐寻宝
    FightPromote = 100,//战力提升
    AncientBattleGround = 101,//上古战场
    Chat = 102,//聊天
    FairyLeague = 111,//仙盟联赛
    Recharge = 113,//充值
    OpenServerRedEnvelope = 122,//开服红包
    EquipDecompose = 123, //装备分解
    TreasureFindHost = 124, //法宝认主
    Dogz = 138, //神兽
    ReikiRoot = 145,//灵根
    CrossServer = 157, //跨服天梯赛
    CrossServerBoss = 162,
    HazyRegion = 173,//缥缈仙域
    DayOnline = 189, //每日在线
    //后续IL开发添加预设
    default1,
    default2,
    default3,
    default4,
    default5,
    default6,//竞技场
    default7,
    default8,
    default9,
}
//属性类型
public enum PropertyType
{
    LV = 1,//等级
    POWER = 2,  //力量
    AGILITY = 3, //敏捷(身法)
    PHYSIQUE = 4,//体质
    MENTALITY = 5,//智力(灵力)
    HP = 6, //生命
    ATK = 7, //攻击
    DEF = 8, //防御
    HIT = 9, //命中
    MISS = 10, //闪避
    ATKSPEED = 11,//攻击速度
    CritChance = 12,//暴击几率
    CritHurt = 13,//暴击伤害
    CritResis = 14,//暴击减伤
    HeartHit = 15,//会心一击
    HeartHurt = 16,//会心伤害
    HeartResis = 17,//会心抗性
    SkillHurt = 18,//技能加成
    PVPAddHurt = 19,//PVP增加伤害
    PVPReduceHurt = 20,//PVP减少伤害
    LifeReply = 21,//生命回复
    HurtReflect = 22,//伤害反射
    MoveSpeed = 23,//移动速度
    PetHurt = 24,//灵兽伤害
    PetAddHurt = 25,//灵兽增加伤害
    RealHurt = 26,//真实伤害
    RealResis = 27,//真实抵抗
    DefyDef = 28,//无视防御
    DefyDefResis = 29,//无视防御抗性
    DefChance = 30,//防御几率
    BloodHurt = 31,//流血伤害
    AktReplyBlood = 32,//攻击回血
    Stun = 33,//击晕
    CtrlResis = 34,//控制抵抗
    AddFinalHurt = 35,//附加伤害
    ReduceFinalHurt = 36,//附加伤害减少
    PVPAddHurtPer = 37,//PVP百分比增加伤害
    PVPReduceHurtPer = 38,//PVP百分比伤害减少
    DleHitChance = 39,//连击几率
    DleHurt = 40,//连击伤害
    BasicAtkPercent = 41, //基础攻击百分比
    BasicHpPercent = 42, //基础生命百分比
    BasicDefPercent = 43, //基础防御百分比
    HitPercent = 44, //命中百分比
    DodgePercent = 45,//闪避百分比
    KillMonsExpPercent = 46,//杀怪经验百分比
    HorcruxBasicAttrPercent = 48, //魂器基础属性
    ReduceSkillHurtPercent = 49, //技能减伤
    HpPercent = 50,//生命百分比
    AtkPercent = 51, //攻击百分比
    EveryLvAddAtk = 52, //每1级+%s攻击
    EveryLvAddHp = 53, //每1级+%s生命
    AddEquipDropPrecent = 54, //增加装备掉落率
    AddCoinsPrecent = 55,//增加金币
    AddRealHurtPer = 61,//百分比增加真实伤害
    ReduceRealHurtPer = 62,//百分比减少真实伤害
    ArmorMaxHPPer = 63,//基础装备生命
    WeaponAtkPer = 65,//基础装备攻击
    ArmorDefPer = 66, //防具防御百分比
    MinAtk = 67, //最小攻击
    MaxAtk = 68, //最大攻击
    DefencePercent = 69,//防御百分比
    CritHurtPercent = 70,//暴击伤害
    MoveSpeedPercent = 71, //移动速度百分比
    MaxProDef = 72, //防护值
    ProDefHPPer = 73,//防护值百分比
    ProDefAbsorb = 74, //护盾吸收伤害百分比
    BaseHitPer = 75, //基础命中百分比
    BaseMissPer = 76, //基础闪避百分比
    PetMinAtk = 77, //灵宠最小攻击
    PetMaxAtk = 78, //灵宠最大攻击
    OnlyFinalHurt = 79, //额外输出伤害
    PVPAtkBackHP = 80, //PVP攻击回血
    ChanceExpRate = 81, //经验暴击
    HorseAtkPer = 82, //坐骑攻击
    StoneBasePer = 83, //宝石基础属性
    RealmBasePer = 84, //境界基础属性
    PetSkillAtkRate = 85, //宠物技能伤害
    WingHPPer = 86, //翅膀生命
    SuiteBasePer = 87, //套装基础属性
    PlusBaseAtkPer = 88,  //强化攻击
    NpcHurtAddPer = 89,//百分比PVE技能加成
    JobAHurtAddPer = 90,//对龙魂伤害增加百分比
    JobBHurtAddPer = 91,//对灵瑶伤害增加百分比
    JobCHurtAddPer = 92,//对弓箭手伤害增加百分比
    JobAAtkReducePer = 93,//承受龙魂伤害减少百分比
    JobBAtkReducePer = 94,//承受灵瑶伤害减少百分比
    JobCAtkReducePer = 95, //承受弓箭手伤害减少百分比
    ZXCloakAttrPer = 96, //诛仙·披风属性百分比
    ZXMaskAttrPer = 97, //诛仙·面罩属性百分比
    ZXGloveAttrPer = 98,//诛仙·手套属性百分比
    ZXRuyiAttrPer = 99,//诛仙·如意属性百分比
    ZXPendantAttrPer = 100, //诛仙·吊坠属性百分比
    ZXRingAttrPer = 101, //诛仙·戒指属性百分比
    SkillAddPerA = 102,//定海神针技能伤害百分比
    SkillAddPerB = 103, //皓月枪技能伤害百分比
    SkillAddPerC = 104, //鬼牙刃技能伤害百分比
    SkillAddPerD = 105, //磐龙印技能伤害百分比
    SkillAddPerE = 106, //杏黄旗技能伤害百分比
    SkillAddPerF = 107,//嗜天斧技能伤害百分比
    SkillAddPerG = 108, //射日神弓技能伤害百分比
    SkillReducePerA = 109, //定海神针技能减伤百分比
    SkillReducePerB = 110, //皓月枪技能减伤百分比
    SkillReducePerC = 111, //鬼牙刃技能减伤百分比
    SkillReducePerD = 112, //磐龙印技能减伤百分比
    SkillReducePerE = 113, //杏黄旗技能减伤百分比
    SkillReducePerF = 114, //嗜天斧技能减伤百分比
    SkillReducePerG = 115, //射日神弓技能减伤百分比
    Luck = 120,//气运
    LuckPer = 133,//气运百分比
    AddNormalHurt = 134,//固定值增加普通攻击伤害
    AddNormalHurtPer = 135,//百分比增加普通攻击伤害
    AddSkillHurt = 136,//固定值增加技能伤害
    AddSkillHurtPer = 137,//百分比增加技能伤害
    ReduceCrit = 138,//减少暴击率
    ReduceHeartHurtPer = 139,//会心减伤
    AddHeartHurtPer = 140,//百分比增加会心一击伤害
    AddPVEHurt = 141,//固定值增加pve伤害
    AddFinalHurtPer = 142,//百分比增加最终伤害
    ReduceFinalHurtPer = 143,//百分比减少最终伤害
    ReduceSkillCDPer = 149, //减少所有技能CD百分比
    //后续IL开发添加预设
    default1,
    default2,
    default3,
    default4,
    default5,
    default6,
    default7,
    default8,
    default9,
    default10,
    default11,
    default12,      //161 仙盟事务速度加成
    default13,      //仙盟BOSS伤害加成
    default14,      //仙盟联赛生命加成
    default15,      //仙盟联赛攻击加成
    default16,      //仙盟打坐经验加成
    default17,
    Mater = 201,//金
    Wood = 202,//木
    Water = 203,//水
    Fire = 204,//火
    Earth = 205,//土
}
public enum TextColType
{
    None = 0,
    White = 1,
    Blue = 2,
    Purple = 3,
    Orange = 4,
    Red = 5,
    Pink = 6,
    /// <summary>
    /// 深褐色 401c06 (64, 28, 6, 255)
    /// </summary>
    NavyBrown,
    Green = 9,//绿色
    Black = 10,
    /// <summary>
    /// 深绿色 109d06 (16, 157, 6, 255)
    /// </summary>
    DarkGreen = 12,
    NavyYellow = 13,
    LightGreen = 14,
    /// <summary>
    /// fff4cd
    /// </summary>
    LightYellow = 15,
    /// <summary>
    /// (204, 204, 204, 255)
    /// </summary>
    Gray = 16,
}
public enum E_ModelResType
{
    Weapon = 1, //武器 1
    Wing, //翅膀 2
    Horse, //坐骑 3
    Suit, //套装 4
    Pet,// 宠物5
    Secondary,// 副手 6
    Hand,// 手臂 7
    Spirit,//灵器 8
}
public enum TreasureCategory
{
    Human = 1,
    Demon = 2,
    Fairy = 3,
    King = 4,
    Zerg = 5,
}
public enum TreasureState
{
    Collected,
    Collecting,
    Locked,
}
public enum FunctionUnlockType
{
    NoneType = 0,
    Treasure = 1,
    Normal = 2,
    TreasureSkill = 3,
    Skill = 4,
    TreasureFunc = 5,
    TreasureChapter = 6,
}
public enum RedPointState
{
    None = 0,
    Simple = 1,
    Quantity = 2,
    Full = 3,
    GetReward = 4,
}
public enum TeamInviteType
{
    Friend,
    Fairy,
    NearBy,
}
public enum TeammatePrepareState
{
    UnPrepared = 0,//未准备
    Prepared = 1,//已准备
    Rejected = 2,//拒绝
}
public enum VipPrivilegeType
{
    TreasureAtk = 1,
    GemHole = 2,
    VipBuff = 3,
    TradeTax = 4,
    PrivateClerk = 5,
    FreeTransfer = 6,
    AutoFairyMisstion = 7,
    Gather = 8,
    Undead = 9,
    KillMonsterExpUp = 10,
    Minion = 11,
    KillMonsterSp = 12,
    GoldWish = 13,
    ExpWish = 14,
    SelfBoss = 15,   //个人boss基础次数
    BossHome = 16,
    PetDungeon = 17,
    BaptizeDungeon = 18,
    ForbiddenArea = 19,
    Fane = 20,
    Chasm = 21,
    DarkDorr = 22,
    FairyDaimondGift = 23,
    MarketPutawayPwd = 24,
    DemonJar = 25,
    BossHomeAwardLimit = 27,
    DemonJarDouble = 28,
    BindJadeWheel = 30,
    PrayForDrug = 31,
    DemonJarAuto = 32,
    AssistXianYuanCoinsAdd = 33,//助战仙缘币上限加成
    AssistXianYuanCoinsRatioAdd = 34,//助战仙缘币获得倍率加成(万分比)
    JadeDynastyBoss = 35,
    BatchAlchemyFairy = 36,//批量炼制仙丹
    BossHomeBuyTimes = 37,//boss之家购买次数
    SelfBossBuyTims = 38, //个人boss购买次数
}
public enum E_AttackMode
{
    Peace,
    All,
    Country,
    Group,
    Team,
    Family,
    GoodEval,
    Contest,
}
public enum E_ItemColor
{
    White = 1,
    Blue,
    Purple,
    Orange,
    Red,
    Pink,
}
public enum FindPreciousType
{
    WorldBoss = 0,
    BossHome = 1,
    PersonalBoss = 2,
    ElderGodArea = 3,
    DemonJar = 4,
    CrossServerBoss = 6,
    JadeDynastyBoss = 7,
    None = 99,
}
public enum GotServerRewardType
{
    Def_RewardType_Activity = 0,
    Def_RewardType_FamilyActivity = 1,
    Def_RewardType_ChampionFamilyDailyReward = 2,
    Def_RewardType_XMZZWinCnt = 3,
    Def_RewardType_FairyDayAward = 4,
    Def_RewardType_XBXZ = 6, // 仙宝寻主奖励6
    Def_RewardType_DayRealmPoint = 7,//日常修行点
    Def_RewardType_GoldGiftFirst = 8,//首冲礼包
    Def_RewardType_TreasureSoul = 9,//法宝魂奖励
    Def_RewardType_ConsumeRebate = 11,//消费返利奖励
    Def_RewardType_BossReborn = 12,//boss复活奖励
    Def_RewardType_FCRecharge = 13,// 仙界盛典充值大礼13W
    Def_RewardType_FCParty = 14,// 仙界盛典全民来嗨14
    Def_RewardType_WishingWell = 16,//  许愿池奖励16
    Def_RewardType_OpenFunc = 17,//功能预告奖励
    Def_RewardType_TotalRecharge = 18,//累计充值奖励
    Def_RewardType_IceLodeStar = 19, //冰晶矿脉星级奖励19
    Def_RewardType_WeekPartyAct = 20, //领取周狂欢活动奖励20
    Def_RewardType_WeekPartyPoint = 21,// 领取周狂欢积分奖励21
    Def_RewardType_ActLoginAwardAct = 22,// 领取登录奖励活动奖励22
    Def_RewardType_NewFairyCRecharge = 23, // 新仙界盛典充值大礼23
    Def_RewardType_NewFairyCParty = 24, // 新仙界盛典全民来嗨24
    Def_RewardType_FeastWeekPartyAct = 25, //领取节日巡礼活动奖励25
    Def_RewardType_FeastWeekPartyPoint = 26, //领取节日巡礼积分奖励26
    Def_RewardType_FairyAdventuresAward = 27,//缥缈奇遇
    Def_RewardType_HistoryChargeAward = 28,//累计充值
    Def_RewardType_DayPackageFree = 29,//每日免费礼包
    Def_RewardType_ActivityPlace = 30,//活跃放置奖励
    Def_RewardType_HolidayLogin = 37,//节日登录奖励
    Def_RewardType_HolidayTravel = 38,//节日游历奖励
}
public enum MapType
{
    OpenCountry = 0,//野外地图
    SingleFB = 1,        //单人副本
    MultipleFB = 2,    //组队副本
    FamilyFB = 3,       //家族副本
    FamilyWarFB = 4, //家族战副本
    CountryExam = 5, //国家答题
    CountryFB = 6,      //国家副本
    AllByCountry = 7,  //阵营副本
    All = 8,                   //所有
    VSRoom = 9,         //pk房间
    CrossAll = 11,       //跨服所有
}
public enum GuideType
{
    NewBie = 1,
    Functional = 2,
}
public enum GuideTriggerType
{
    None = 998,//无限制
    FunctionOpen = 1,//功能开放
    ManualFunctionOpen = 51,//手动功能开放
    Level = 2,               //等级满足条件
    Treasure = 3,//法宝
    EquipQuality = 4,//装备品质
    Item = 5,//指定物品
    TreasureDungeon = 6,//法宝副本
    Map = 11,//地图
    RuneInlay = 12,//符印镶嵌
    RealmSitDown = 13,//境界打坐
    ItemCompound = 14,//物品合成
    HangUpResult = 15,//挂机结算
    TreasureCollectSoul = 16,//法宝集魂
    TreasureAwaken = 17,//法宝觉醒
    Pray = 18,//祈愿
    VIPExperience = 19,//vip体验
    FairyLandBuyTimes = 20,//仙界秘境购买次数
    TeamAutoAccept = 21,//自动接受组队邀请
    TrialExchange = 22,//宗门试炼兑换材料
    QuestCanAccept = 100,//任务可接
    MainLineQuestCanDo = 101,//任务进行中
    MainLineQuestCanAward = 102,//任务可领奖
    MainLineQuestLimit = 106,//任务被限制
    MainLineQuestContinue = 110,//任务可继续
    BranchQuestCando = 201,//支线任务可做
    BranchQuestCanAward = 202,//支线任务可领奖
    BranchQuestLimit = 206,//支线任务被限制
    BranchQuestContinue = 210,//支线任务可继续
}
public enum FuncPowerType
{
    Role = 0,//角色
    Equip = 1,//装备
    Plus = 2,//强化
    Stone = 3,//宝石
    Reiki = 4,//灵根
    Wing = 5,//翅膀
    Wash = 6,//洗炼
    Pet = 7,//灵宠
    Horse = 8,//坐骑
    Realm = 9,//境界
    GodWeapon = 10,//神兵
    Title = 11,//称号
    Rune = 12,//符印
    Star = 13,//升星
    Human = 14,//人族法宝
    Alchemy = 15,//八卦炉
    Demon = 16,//魔族法宝
    Fairy = 17,//仙族法宝
    PetSoul = 18,//灵宠魂石
    HorseSoul = 19,//坐骑魂石
    Dogz = 21,//神兽
    GatherSoul = 22,//聚魂
    King = 23,//王者法宝
    FashionDress = 24,//时装
    JadeDynastyEquip = 25, //诛仙装备
}
public enum E_AtkType
{
    Special, //0 特殊(将走进具体的技能ID进行处理,根据效果ID
    Single,//1 单体目标技能攻击
    Multiple,//2 群体目标技能攻击
    Transmit,//3 群体目标技能攻击(链式) 效果1填伤害,效果2填递增,效果3填跳几次
    ClearHatred,//4 清仇恨 清除目标在释放者仇恨列表内的仇恨百分比 NPC使用
    SingleHatred,//5 单体仇恨技能
    MultipleBuff,//6 群体BUFF
    Summon,//7 召唤(召唤兽的攻击力取NPC表的数值)
    SingleRecoverAtkPer,//8 单体恢复自身攻击百分比血量(仅针对瞬发技能
    FastMove,//9 拦截、暗影步、杀戮盛宴模板 非玩家不可用 技能会造成伤害并且此次RUSH暴击率会提高的,需要填效果AB值,其中:效果1 A值伤害百分比,B值伤害固定值 效果2 A值暴击,B值暴击百分比
    FlashMove,//10 法师闪现
    //11 NPC给召唤兽加BUFF
    //12 有角度的群攻:半径字段为类型:1 直线;2 5格散射攻击 3 6格散射
    //13 清空NPC自己的最大仇恨者
    //15 NPC专用,找到当前仇恨列表中最大仇恨者,如果在视野中则瞬移过去
    //16 召唤兽专用,召唤NPC(召唤兽的攻击力取攻击取玩家的攻击力)
    //17 按血量添加仇恨(肉宠)
    //18 单体恢复自身气血上限百分比血量(针对瞬发技能)效果1a值填百分比,b值填固定值
    //19 群体攻击技能,伤害为范围内所有人分担
    //20 对目标造成目标血量上限百分比的伤害
    //25
    //NPC专用 召唤兽技能模板
    //效果1 A值 召唤兽NPCID
    //      B值 单次召唤数量
    //      C值  总召唤数量
    //21 群体百分比扣血模板
    //28 取消的选中目标模板
    //30 弓箭手姿态模板
    //32 增加吸血效果(非吸血技能,作用于吸血效果万分比),A值填万分率系数
    //33 打出最后一击伤害的X%附加Y值
    default11,
    default12,
    default13,
    default14,
    default15,
    default16,
    default17,
    default18,
    default19,
    default20,
    default21,
    default22,
    default23,
    default24,
    default25,
    default26,
    default27,
    default28,
    default29,
    default30,
    default31,
    default32,
    RushAttack = 34,//34 冲锋+伤害,然后效果半径配0时=单攻伤害,配>0时=群攻格子数,配5就等于说群攻5*5
    //35 蓄力模板,搭配效果值 效果ID 1206  A值为能量次数
    default35,
}
public enum GameObjType
{
    /** 未定义 */
    gotNone = 0,
    /** 玩家 */
    gotPlayer,
    /** NPC */
    gotNPC,
    /** 物品 */
    gotItem,
    /** 飞行物件 */
    gotFlyObj,
    /** 此枚举的值类型的值上限 */
    gotMax
}
/** 伤害类型 */
public enum HurtAttackType
{
    /** 普通伤害 */
    Normal = 1,
    /** 恢复 */
    Recovery = 2,
    /** 反弹伤害 */
    BounceHurt = 3,
    /** 留血 */
    Bleed = 4,
    /** 抵御 */
    Parry = 5,
    /** 连击 */
    DoubleHit = 6,
    /** 暴击 */
    SuperHit = 7,
    /** 会心一击 */
    LuckyHit = 8,
    /** 闪避 */
    Miss = 9,
    /** 免疫 */
    Immune = 10,
    /** 压制 */
    Suppress = 11,
    /**斩杀**/
    ZhanSha = 12,
    /** 诛仙一击 */
    ZhuXianAtk = 13,
    /** 终极斩杀 */
    FinalKill = 14,
    /*致命一击*/
    DeadlyHit = 15,
    ThumpHit = 16,// 重击
    Yinji = 17,// 印记
    Burning = 18,// 灼烧
}
public enum DungeonTargetType
{
    NPC = 1,
    Exp = 2,
    Score = 3,
    Money = 4,
    Wave = 5,
    NpcTotal = 6,
    Stage = 7,
    NPCDialogue = 8,    //npc对话
    VictorySumCnt = 9, //(仙魔胜利总场数)
    StageVictoryCnt = 10, //(阶段胜利场数)
    Collect = 11,
    AttackCount = 12,
}
public enum AchievementType
{
    Level = 1,
    FightPower = 2,
    MainLine = 3,
    KillMonster = 4,
    DailyQuest = 5,
    FairyQuest = 6,
    JobRank = 7,
    MagicWeaponLevel = 8,
    MountCount = 9,
    MountLevel = 10,
    PetCount = 11,
    PetLevel = 12,
    CollectGold = 13,
    CollectBindDiamond = 14,
    CollectDiamond = 15,
    AccumulativeSignIn = 16,
    ContinuousSignIn = 17,
    PackbackGrid = 18,
    FriendCount = 19,
    WorldChat = 20,
    SaleItem = 21,
    BuyItem = 22,
    Dead = 23,
    ClearRedName = 24,
    KillPlayer = 25,
    StrengthenCount = 26,
    EquipStrengthenLevel = 27,
    WorldBoss = 28,
    CircleQuest = 29,
    TreasureDungeon = 30,
    JoinGuild = 31,
    JoinTeam = 32,
    CollectTreasure = 33,
    BeKilledCount = 34,
    PrayCount = 35,
    KillNPC = 36,
    FindWorldMap = 37,
    PutonEquipPlace = 38,
    PutonEquipQuality = 39,
    MissionTranfer = 40,
    PropertyAdd = 41,
    RuneTower = 42,
    Mount = 43,
    GetRune = 44,
    RuneLevel = 45,
    FairyArea = 46,
    ComposeItem = 47,
    InlayGem = 48,
    Kylin = 49,
    Realm = 50,
    RefiningDan = 51,
    ActivevalueAward = 52,
    TreasureLevel = 53,
    AncientBattleGroundKillCnt = 55,
    AncientBattleGroundMultiKill = 56,
    UnLockPet = 57,
    PetRank = 58,
    PetRanks = 59,
    LifeGemInlay = 60,
    AttackGemInlay = 61,
    FairylandExp = 62,
    NuwaGradeS = 63,
    AnyMountLevel = 64,
    DvsFWinningStreak = 65,
}
/// <summary>
/// 物品使用耐久度限制类型
/// </summary>
public enum ItemTimeType
{
    EquipedTime = 3,              //时间(装备的时候-1,此后每分钟-1)
    RealityTime = 9,                //现实时间扣耐久
}
public enum TitleBtnState
{
    Normal,
    Click,
    Locked,
}
public enum LegendAttrType
{
    Normal = 0, //一般
    Pursuit = 1, //追求
    Fixed = 2, //固定
}
public enum ServerState
{
    Maintain = 0,
    Normal = 1,
    Busy = 2,
    Hot = 3,
    Predicted = 4,
}
public enum ItemUseDataKey
{
    mapLoaction = 15,  // 物品记录地图坐标[mapid, posx, posy]
    legendAttrID = 17,  //物品传奇属性ID列表
    itemCount = 18,  // 物品个数,支持20亿,目前仅特殊转化物品会用到
    legendAttrValue = 19,  //物品传奇属性值列表
    outOfPrintAttrID = 21,  //物品绝版属性ID列表
    outOfPrintAttrValue = 23,  //物品绝版属性值列表
    itemColor = 16,  //物品颜色,如果该值没有就取物品
    cancelUseLimit = 20,  //物品取消使用限制
    source = 24,  // 物品来源 1-寻宝;2-商店购买;3-商店兑换;4-击杀虚拟掉落
    wingMaterialItemID = 27,  //翅膀精炼材料ID列表
    wingMaterialItemCount = 29,  //翅膀精炼材料个数列表
    suiteLV = 30,  //套装等级
    dogzEquipPlus = 31,  // 神兽装备强化信息列表 [强化等级, 强化熟练度]
    hasOpenCnt = 32,  // 物品累积开启次数
    itemDecompound = 33,  //合成物品拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
    createItemLoginDay = 34,  //创建物品时的登录天数
    lastOpenItemLoginDay = 36,  //上一次开启物品时的登录天数
    equipSkills = 37, //装备技能,没有记录则读取表
    runeLV = 38,  // 符印等级
    birthChartLV = 40,  // 命格等级
    wingProgressValue = 42, //羽翼精炼值
    createTime = 44, // 时效物品的创建时间
    totalTime = 48, // 时效物品的剩余时间
    auctionItemCreateTime = 50,//拍品创建时间
    // 神装属性
    shenAttrID = 51,  //物品神品属性ID列表
    xianAttrID = 53,  //物品仙品属性ID列表
    jiAttrID = 55,  //物品极品属性ID列表
    shenAttrValue = 61,  //物品神品属性值列表
    xianAttrValue = 63,  //物品仙品属性值列表
    jiAttrValue = 65,  //物品极品属性值列表
    //后续IL开发添加预设
    default1,
    default2,
    default3,
    default4,
    default5,
    default6,
    default7,
    default8,
    default9,
    default10,
    #region 200~300 宠物数据用
    pet_NPCID = 200,  //npcID
    pet_Skill = 201,  //技能列表
    pet_ClassLV = 202,  // 阶级
    pet_State = 204,  // 当前状态, 对应 Def_PetStateList
    pet_QualityLV = 206,  // 品质
    default81,
    default82,
    default83,
    default84,
    default85,
    default86,
    default87,
    default88,
    default89,
    default90,
    default91,
    default92,
    default93,
    default94,
    default95,
    default96,
    default97,
    default98,
    default99,
    default100,
    #endregion
}
public enum ItemOperateType
{
    makeUse, //使用
    putOn, //穿上
    dismantle, //拆解合成装备
    split, //拆分
    putAway,//上架
    compose,//合成
    sell, //出售
    putOff, //脱下
    putIn, //放入
    putOut, //取出
    exchange,//兑换
    buy,//购买
    putItemout,//物品下架
    renewal,//续费
    refine, //精炼
    LevelUp,//升级
    Resolve,//分解
    Wear,//佩戴
    Replace,//替换
    gotoPuton,//前往穿上
    strength, //强化
    inlay, //镶嵌
    train,//洗炼
    star,//升星
    lsExchange, //灵石兑换
    //后续IL开发添加预设
    default1, //升阶
    default2,
    default3,
}
public enum ItemWinType
{
    itemWin, //普通物品弹框
    boxWin, //宝箱弹框
    equipWin,  //装备弹框
    wingsWin,  //翅膀弹框
    guardWin,//守护弹框
    buyItemWin, //购买物品弹框
    buyBoxWin,  //购买宝箱弹框
    petMatWin,  //解锁宠物和坐骑道具弹框
    buyPetMatWin,  //购买解锁宠物和坐骑道具弹框
    gatherSoul,//聚魂
    kingTreasure, //王者法宝
}
public enum ItemTipChildType
{
    Normal, //普通的装备弹框
    Buy, //购买弹框
    UnionWarehouseDonation, //捐献装备
    UnionWarehouseExchange, //兑换装备
    GetEquipPath,  //装备获取途径
    GetWingsPath,//翅膀获取途径
}
public enum InstalledAsset
{
    NullAsset = 0,
    HalfAsset = 1,
    FullAsset = 2,
    IngoreDownLoad = 3,
}
public enum VersionAuthority
{
    InterTest = 0,
    Release = 1,
}
public enum FootAudioType
{
    Walk = 1,
    Ride = 2,
    Fly = 3,
}
public enum AttackFailType
{
    SkillFail_Other,      // 其他
    SkillFail_CD,      // 技能CD
    SkillFail_AtkInterval, // 攻击间隔
}
public enum DungeonFightStage
{
    None,
    Prepare,
    Normal,
    PickUp,
    ExitPrepare,
    ElderGodAreaNearDead,
}
public enum RankType
{
    FightPower = 0,
    Job1FightPower = 1,
    Job2FightPower = 2,
    Job3FightPower = 3,
    Level = 4,
    Mount = 5,
    Pet = 6,
    RuneTower = 7,
    OfflineExp = 8,
    Realm = 9,
    OpenServerStrengthen = 11,
    OpenServerMount = 12,
    OpenServerGem = 13,
    OpenServerLv = 14,
    OpenServerRealm = 15,
    OpenServerFightPower = 16,
    Def_BT_FCCostGold = 17,  //消费排行榜(仙界盛典)
    OpenServerRune = 18,
    Assist = 19,//助战榜
    OpenServerGodWeapon = 20,
    OpenServerRecharge = 21,
    OpenServerPet = 22,
    Def_BT_NewFCCostGold = 23, //消费排行榜(新仙界盛典)  23
    OpenServerReikiPoint = 24,//灵根点
    OpenServerStartLevel = 25,
    OpenServereEquipTrain = 26, //装备洗练
    default1,
    default2,
    default3,
    default4,
}
public enum PetOrMount
{
    None,
    Pet,
    Mount,
}
//OpenServerActivityCenter.ActivityType.AT_Activity2的活动  历史原因不要用100
public enum NewDayActivityID
{
    BossTrial = 200,    //boss凭证
    LoginAct = 201, //登录活动
    MissionAct = 202,   //任务活动
    RechargeGiftAct = 203,  //充值礼包(充值次数奖励)
    CrossBossTrial = 204,   //跨服boss凭证 必须和BossTrial 一起
    FamilyRechargeConnAct = 205, //仙盟协助
    CustomizedGiftWin = 206, //自选礼包
    SecretPlaceXB = 207, //秘境寻宝
    SecretPlaceXBCross = 208, //秘境寻宝 跨服
    RechargeGiftAct31 = 209,  //自选充值 + 商店礼包
    PetHorseAct = 210,  //宠物坐骑活动
    PetHorseActCross = 211,  //宠物坐骑活动 跨服
    TreasurePavilionAct = 212,  //古宝活动
    TreasurePavilionActCross = 213,  //古宝活动 跨服
    FairyAffinityLoginAct = 214,  //仙缘登陆活动
    FairyAffinityMissionAct = 215,  //仙缘任务活动
    FairyAffinityRechargeGiftAct = 216,  //仙缘礼包活动
    CycleHallAct = 217,  //轮回殿活动
    YunShiXBAct = 218,  //运势寻宝活动
    YunShiMissionAct = 219,  //运势任务活动
    YunShiRechargeGiftAct = 220,  //运势礼包活动
    LianQiActCross = 221,    //仙匠大会活动 跨服
    LianQiRechargeGiftActCross = 222, //仙匠大会礼包活动 跨服
}
//仙玉购买的二次确认框类型
public enum BuyStoreItemCheckType
{
    All = 0,    //默认全局, 非特殊可以统一用这个
    ActGift = 1, //活动礼包
    MJXB = 2,   //秘境寻宝
    GatherSoulXB = 3,   //聚魂寻宝
    TreasurePavilion = 4,   //古宝寻宝
    BestXB = 5,   //极品寻宝
    RuneXB = 6,   //符文寻宝
}
//查询其他玩家数据 用途类型
public enum ViewPlayerType
{
    viewPlayerEquip = 0,    //查看玩家基本信息(装备由请求大境界阶决定),并打开界面
    viewPlayerFightPower = 1,  //查看玩家战力详情,并打开界面
    viewPlayerData = 2,  //查看玩家基本信息,公用
    viewPlayerDataZZ = 3,  //助战场景使用
    viewPlayerDataArena = 4,  //本服竞技场场景使用
    viewPlayerDataFairyKing = 5,  //仙盟联赛王者UI使用
    //查询跨服数据从100开始
    viewCrossPlayerEquip = 100,    //查看玩家基本信息(装备由请求大境界阶决定),并打开界面
    viewCrossPlayerFightPower = 101,  //查看玩家战力详情,并打开界面
    viewCrossPlayerData = 102,  //查看玩家基本信息,公用
    viewCrossPlayerDataBlessedLand = 103,  //福地驱赶

public enum E_ActorClassType
{
    UnDefine,
    Hero,
    Player,
    Guard,
    NpcFightNorm,
    NpcFightBoss,
    NpcSummonFunc,
    NpcCollect,
    NpcSummonFight,
    NpcFunc,
    Pet,
    NpcTouchKilled,
    NpcClientFightNorm,
    NpcClientFightBoss,
    NpcClientFunc,
    NpcFightVirtualPlayer,
    PlayerXmzz,
    ClientPlayer,
    PlayerZZ,
    PlayerSgzcRobot,
    PVPClientPlayer,
    ILClientPlayer,
    NpcClientCollect,
    JiaPlayer,
}
public enum E_ActorState
{
    Idle,
    CtrlRun,
    AutoRun,
    Hurt,
    Die,
    CommonAtk,
    CastSkill,
    DaZuo,
    Roll,
    Mocked,
}
public enum E_4012Status
{
    Normal,//无 0
    Freezed,//定身状态 1
    Slow,//减速状态 2
    LoseBlood,//持续掉血状态 3
    Shield,//麒麟佑身4
    DamBackShield,//东皇附体5
    Sneer,//嘲讽 6
    Stun,//晕眩状态 7
    AddAtk,//加攻状态 8
    WeakDef,//减防状态 9
    LimitSkill,//禁魔状态 10
    LimitAddHP,//禁疗状态 11
    Blind,//致盲状态 12
    Burn,//灼烧 13
    LoseBlood2,//职业2持续掉血状态 14
    LoseBlood3,//职业3持续掉血状态 15
    MissSneerAtk,//对嘲讽攻击免疫表现为miss 16
    BeInAir,//浮空(做法同眩晕类) 17
    zqdlj,//紫气东来金灵根技能状态 18
    Ice,//寒冰状态(同减速) 19
}
public enum E_BuffType
{
    bfBuff = 1,     // buff
    bfDeBuff,       // debuff
    bfAura,         // aura,光环
    bfIncBuff,      // inc buff增值BUFF 玩家不可手动清除
    btPassiveBuf,   // 被动BUF
    bfEquipBuff,    // 装备BUF
    bfMapBuff,      // 场景BUF
    bfActionBuff,   // 行为Buf
    bfProcessBuff,  // 一定间隔处理一次持续一定时间的Buff
    bfProcessDeBuff,// 一定间隔处理一次,持续一定时间的DeBuff
    btBufMax        // BUF类型数
}
public enum E_MonsterType
{
    Normal,//0 普通怪;
    Elite,//1 精英怪;
    BlueBoss,//2 蓝BOSS;
    PurpleBoss,//3 紫BOSS;
    Danger,//4 危险怪;
    DarkGoldBoss,//5 暗金BOSS,
    SmallLead,//6 小头目,
    MissionBoss,//7 任务BOSS
}
public enum E_ActorGroup
{
    User,
    Player,
    Enemy,
    Neutral,
    Collect,// 收集类
    FuncNpc,// 功能性npc
}
public enum E_ClientNpcType
{
    Func,
    Fight,
}
public enum E_NpcType
{
    Func = 0,//功能NPC填写“0”
    Defend = 1,//守卫NPC填写“1”
    Fight = 2,//战斗NPC填写“2”
    Summon = 3,//召唤NPC填写“3”
    Ghost = 4,//灵NPC填写  “4”
    Trap = 5,//陷阱NPC填写 "5"
    Car = 6,//镖车NPC填写 "6"
    Sprite = 7,//精灵NPC填写 "7"
    VirtualPlayer = 8,// 虚拟助战英雄
    Flag = 9,//旗类NPC填写 "9"
    Collect = 14,//采集NPC填定 "14"
    Catch = 15,//可捕捉NPC 15
    Pet = 16,//宠物         16
    TouchKilled = 17,//守护     17
    FMBoss = 18,// 封魔坛boss    18
    BreakableObj = 19,//场景可被攻击物     19
    FightAssist = 20,// 助战
    SGZC_FightAssist = 21,// 上古战场助战
    MonsterTime = 22,// 按时间掉血
    PersonalEnemy = 23,// 专属敌人
    PersonalEnemyPVP = 24,// 专属敌人
    OpenWorldMap = 99,// 打开世界地图
}
public enum E_MovingState
{
    Normal,
    Fly,
    Ride,
}
public enum WindowType
{
    Base = 0,
    Normal = 1,
    Modal = 2,
    Tip = 3,
    System = 4,
    Loading = 5,
    Flag = 99,
}
public enum GestureType
{
    Left,
    Right,
    Up,
    Down
}
public enum UnityPlatform
{
    Editor,
    Android,
    Iphone,
    Standalone,
}
public enum RoleRenameResult
{
    MoneyErr = 0, //金钱不足
    NameRuleErr = 1, //名字不合法
    NameLengErr = 2, //名字长度错误
    NameRepeatErr = 3, //重名
    RenameFailErr = 4, //改名失败
    RenameSuccess = 5, //成功
}
/// <summary>
/// <para>无意义 0</para>
/// <para>自己 1</para>
/// <para>队伍 2</para>
/// <para>友好 3</para>
/// <para>可攻击 4</para>
/// <para>自己及友好 5</para>
/// <para>玩家尸体 6</para>
/// <para>非死亡玩家 7</para>
/// <para>可攻击怪物 8</para>
/// <para>可攻击玩家 9</para>
/// <para>所有单位 10</para>
/// <para>宠物对主人 11</para>
/// <para>召唤物对主人 12</para>
/// <para>小怪包括精英 13</para>
/// </summary>
public enum E_SkillCastTarget
{
    None,
    Self,
    TeamMate,
    Friend,
    CanAttacked,
    SelfAndFriend,
    PlayerDeadBody,
    UnDeadPlayer,
    CanAttackedMonster,
    CanAttackedPlayer,
    All,
    PetToOwner,
    SummonToOwner,
    Monster,
    FriendNpc,
}
/// <summary>
/// 技能类型
/// </summary>
public enum E_SkillType
{
    Special, // 特殊   0
    Attack, // 攻击类   1
    Recover,// 恢复类   2
    ContinuousGain, // 持续增益BUFF  3
    SustainedReduction,// 持续减益BUFF  4
    GainBuff,// 增益BUFF 5
    ReductionBuff,// 减益BUFF 6
    Passive,// 被动技   7
    Reborn,// 复活     8
    ValueAdded,// 增值技能(不可清除)9
    Halo,// 光环技能  10
    Equip,// 装备技能  11
    Area,// 区域技能  12
    Summon,// 召唤      13
    ControlBuff,// 控制型BUFF 14
    MutilHurtBuffAtk,// 多段伤害buff攻击类型(类xp技能) 15
    PassiveGainBuff,// 被动触发增益类buff 16
    PassiveReductionBuff,// 被动触发减益类buff 17
    PassiveControlBuff,// 被动触发的控制类buff 18
    Property,// 属性类技能 20(如坐骑属性,宠物属性)
    PassiveBuff,// 被动buff 19(暂时不知道干啥的)
    PassiveContinuousGain,// 被动触发持续类增益类buff 21
    PassiveSustainedReduction,// 被动触发持续类减益类buff 22
}
public enum E_SkillFuncType
{
    Common,// 0为通用技能
    FaBaoActiveSkill,// 1为法宝功能获得的主动技能
    FaBaoPassiveSkills,// 2为法宝功能获得的被动技能
    FaBaoSpSkill,// 3为法宝功能获得的SP技能
    TalentSkills,// 4为天赋技能
    RiderSkill,// 5为坐骑技能
    PetSkill,// 6为宠物技能
    GodWeaponSkill,// 7为神兵技能
    NormalAttack,// 8为普攻
    SpLv15Skill,// 9为sp15级技能
    Roll,// 10为翻滚
    RealmSkill,// 11为境界
    MythicalAnimal,// 12为神兽技能
    ZhuxianSkill,// 13为诛仙技能
}
/// <summary>
/// <para>无对象 0</para>
/// <para>有对象 1</para>
/// <para>地面 2</para>
/// </summary>
public enum E_SkillCastType
{
    None,// 无对象 0
    NeedTarget,// 有对象 1
    Ground,// 地面 2
}
public enum MapTransferType
{
    WorldTransport = 1,
    BigMapTransport = 2,
    MissionTransport = 3,
}
public enum DropItemType
{
    Pattern0 = 0,
    Pattern1 = 1,
    Pattern2 = 2,
    Pattern3 = 3,
}
public enum DailyQuestType
{
    BountyMission = 1,
    IceCrystal = 2,
    FairyFeast = 3,
    BlastStove = 4,
    Kirin = 5,
    FairyLand = 6,
    GuardSky = 7,
    Demon = 8,
    Trial = 9,
    AncientBattleGround = 10,
    EmperorRelic = 11,
    WyTaiChi = 12,
    FairyLeague = 13,
    HeavenBattle = 14,
    Prayer = 15,
    WorldBoss = 16,
    DemonJar = 17,
    FairyTask = 18,
    RuneTowerSweep = 19,
    RuneTower = 21,
    TreasureCollectSoul = 22,
    BossHome = 24,
    PersonalBoss = 25,
    ElderGodArea = 26,
    FairyGrabBoss = 27,
    KillMonster = 28,
    DungeonAssist = 29,
    GatherSoulDungeon = 30,
    CrossServerPk = 31,
    AllianceBoss = 32,
    RidingPetActivity = 34,
    HazyRegion = 35,
    SkyTower = 36,
    Auction = 37,
    JadeDynastyBoss = 38,
    CrossServerBoss = 39,
    FairyChuanGong = 40, //仙盟传功
    ActivityPlace = 41, //秘境探索
    ArenaPK = 43,//竞技场PK
    //后续IL开发添加预设
    default1,
    default2,
    default3,   //46 仙盟打坐
    default4,   //47 古神战场
    default5,   //48 通用副本
    default6,   //49 通用副本
    default7,   //50 通用副本
    default8,   //51 通用副本
    default9,   //52 聚魂通用副本
    default10,
    default11,
    default12,
    default13,
    default14,
    default15,
    default16,
    default17,
    default18,
    default19,
    default20,
}
/// <summary>
/// 服务端下发的副本倒计时类型
/// </summary>
public enum DungeonCoolDownType
{
    LeaveMap = 0,//退出倒计时
    WaitStart = 1,//开始倒计时
    FightStart = 2,//战斗倒计时
    FlagTake = 3,
    NextRound = 4,//下一波倒计时
    FBAddTime = 6,
    ElderGodAreaDeadTime = 7,//古神禁地倒计时
    PickUpTime = 8,//副本捡装备倒计时
    WaitPlayer = 9, //等待对手倒计时
    PlayerLeave = 10, //对手掉线倒计时
}
/// <summary>
/// 装备部位索引
/// </summary>
public enum RoleEquipType
{
    Weapon = 1,         // 主手
    Weapon2 = 2,       // 副手
    Hat = 3,                // 帽子
    Clothes = 4,          // 衣服
    Belt = 5,                // 腰带
    Trousers = 6,         // 裤子
    Shoes = 7,             // 鞋子
    Glove = 8,              //手套
    Neck = 9,               //项链
    FairyCan1 = 10,      //仙器
    FairyCan2 = 11,      //仙器
    Jade = 12,              //玉佩
    Wing = 13,               //翅膀
    Guard = 14,            //守护
    PeerlessWeapon1 = 16,//绝世武器
    PeerlessWeapon2 = 17,//绝世副手
    Mount = 19,              //当前的坐骑
    FashionWeapon = 20,//时装武器
    FashionClothes = 21, //时装衣服
    FashionWeapon2 = 22,//时装副手
    retMax,
};
//tagObjInfoRefresh,更新枚举值必须同时更新注释
/**主角属性刷新类型*/
public enum PlayerDataType
{
    AccountID = 0,             //帐号名   该角色所在的帐号的用户名 0,
    PlayerID = 1,                     //角色ID,1,
    PlayerName = 2,                   //角色名,size , 14  2,
    Sex = 3,                          //性别    3,
    Hair = 4,                         //发型  1.标准型(男) 2.名仕型 3.浪子型 4.标准型(女) 5.马髻型 6.妩媚型    4,
    HairColor = 5,                    //头发颜色  5种  5,
    Face = 6,                         //基本脸型 6,
    Job = 7,                          //职业
    LV = 8,                           //等级 8,
    TotalExp = 9,                     //总经验    9,
    Family = 10,                       //家族 10,
    Country = 11,                       //国家  0.秦国 1.魏国 2.楚国   阵营   11,
    TeamHornor = 12,                    //组队荣誉   12,
    PKValue = 13,                      //PK值 13,
    FamilyHornor = 14,                  //家族贡献 14,
    FamilyActiveValue = 15,             //家族活跃度 15,
    CountryHornor = 16,                 //本周国家荣誉值   16,
    Mate = 17,                         //伴侣,17,
    Gold = 18,                          //金子   18,
    GoldPaper = 19,                     //金票  19,
    Silver = 20,                       //银子 20,
    SilverPaper = 21,                  //银票    21,
    FightPoint = 22,                   //战斗值  22,
    HappyPoint = 23,                   //娱乐值  23,
    MapID = 24,                        //角色所在地图  24,
    PosX = 25,                         //角色坐标 25,
    PosY = 26,                         //26,
    State = 27,                        //角色状态   1.封存 2.死亡 3.正常  以后还有陆续添加 27,
    MaxHP = 28,                        //最大HP    28,
    HP = 29,                           //当前HP   29,
    MaxMP = 30,                        //最大MP    30,
    MP = 31,                           //当前MP   31,
    XP = 32,                           //当前XP   32
    HPRestoreSetting = 33,             //少于这个值%自动喝血 33,
    MPRestoreSetting = 34,             //少于这个值%自动喝魔 34,
    ExpRate = 35,                      //当前经验倍率    单位为百分比  35,
    FreePoint = 36,                    //未分配点数 36,
    FreeSkillPoint = 37,               //未分配技能点数   37,
    STR = 38,                          //力量    38,
    PNE = 39,                          //灵力    39,
    PHY = 40,                          //身法    40,
    CON = 41,                          //体质    41,
    DEF = 42,                          //防御    42,
    MINATK = 43,                        //外攻最小 43
    MAXATK = 44,                        //外攻最大 44
    MAtkMin = 45,                       //内功最大 45
    MAtkMax = 46,                       //内功最小 46
    MDef = 47,                          //内防     47
    HIT = 48,                           //命中 48
    POISIONATK = 49,                    //毒攻 49
    FIREATK = 50,                       //火攻 50
    REALATK = 51,                        //真实伤害 51
    THUNDERATK = 52,                    //雷攻 52
    WINDATK = 53,                       //风攻 53
    POISIONDEF = 54,                    //毒防 54
    FIREDEF = 55,                       //火防 55
    REALDEF = 56,                        //真实抵抗 56
    THUNDERDEF = 57,                    //雷防 57
    WINDDEF = 58,                       //风防 58
    Miss = 59,                         //闪避   59,
    SuperHit = 60,                     //暴击伤害 60,
    Buff = 61,                         //最多12个BUFF 如果超过12个按先进先出的顺序覆盖  61,
    Skill = 62,                        //该玩家所学会的全部技能 目前最多22个 日后可能再增加   62,
    Mark = 63,                         //称号该玩家所拥有的全部称号,上限未定   63,
    SettingH = 64,                     //快捷栏(横)   64,
    SettingV = 65,                     //快捷栏(竖)   65,
    FightPK = 66,                      //衡量PK能力的一项属性 由攻防计算而得   66,
    ActiveValue = 67,                  //击杀敌国阵营玩家和NPC的统计值    67,
    PlayerType = 68,                   //角色的五行属性,组队用 1. 金 2. 木 3. 水 4. 土 5. 火   68,
    NameColor = 69,                    //角色名字颜色  69,
    AtkInterval = 70,                  //攻击速度 70,
    Speed = 71,                        //速度   71,
    SuperHitRate = 72,                 //暴击率 72,
    PickupDist = 73,                   //拾取距离 73,
    CountryLastWeekHornor = 74,        //上周国家荣誉值   74,
    LastWeekOnlineTime = 75,           //上周在线时间  75,
    LastWeekFamilyActiveValue = 76,    //上周活跃度  76,
    FBID = 77,                         //玩家的副本ID    77,
    FamilyLV = 78,                     //家族等级 78,
    RealMapID = 79,                    //数据地图ID   79,
    GMLevel = 80,                      //gm等级改变   80,
    TeamID = 81,                       //gm等级改变    81,
    TeamLV = 82,                       //gm等级改变    82,
    FightPower = 83,                    //战斗力    83,
    RebornMapID = 84,                   //重生地图ID  84,
    RebornPosX = 85,                    //重生点x   85,
    RebornPosY = 86,                    //重生点y   86,
    Coin = 87,                         //当前点券数目   87,
    BillboardLV = 88,                  //排行榜等级  88,
    Tick = 89,                         //当前Tick   89,
    CurrentPlayerType = 90,            //当前五行 90,
    FriendFavor = 91,                   //好友人气值刷新   91
    BackpackLV = 92,                    //背包等级   92
    ReincarnationLV = 93,               //转生等级 93
    BaseSTR = 94,                      //裸体力量    94,
    BasePNE = 95,                      //裸体精神    95,
    BasePHY = 96,                      //裸体敏捷    96,
    BaseCON = 97,                      //裸体体质    97,
    //  BaseINT ,                      //裸体智力
    //  BaseLUCK ,                     //裸体幸运
    ReceivedSalary = 98,                //玩家本次领取的工资    98
    WarehouseLV = 99,                   //仓库等级   99
    EquipShowSwitch = 100,               //装备显隐开关   100
    LuckValue = 101,                     //幸运值   101
    ExAttr1 = 102,                       //扩展属性1   102魔仆伤害24
    ExAttr2 = 103,                       //扩展属性2   103组队是否需要审核
    ExAttr3 = 104,                       //扩展属性3   104元素攻击26
    ExAttr4 = 105,                       //扩展属性4   105元素防御27
    ExAttr5 = 106,                       //扩展属性5   106
    Faction = 107,                       //阵营        107
    InfamyValue = 108,                   //恶名值      108
    RealmLevel = 109,                  //官阶        109
    IsFindByLabel = 110,                  //是否允许标签检索        110
    IsCloseFriendLabel = 111,            //是否关闭好友签名        111
    ChangeCoinPointTotal = 112,           //兑换的点数总计        112
    VIPLv = 113,                          //VIP等级         113
    ExAttr6 = 114,                       //扩展属性6   114流血伤害31
    ExAttr7 = 115,                       //扩展属性7   法宝sp,非亿位
    ExAttr8 = 116,                       //扩展属性8   法宝sp,亿位
    ExAttr9 = 117,                       //扩展属性9   117控制抵抗34
    ExAttr10 = 118,                       //扩展属性10  118输出伤害35
    ModelMark = 119,                       //变形模型Mark  119
    PrizeCoin = 120,                       //奖励点券数   120
    ExAttr11 = 121,                       //扩展属性11  121 现金代币(代金券)
    ExAttr12 = 122,                       //扩展属性12 退出仙盟时间
    ExAttr13 = 123,                       //扩展属性13 服务器组ID
    ExAttr14 = 124,                       //扩展属性14  124
    SkillAtkRate = 125,                  ///战斗属性--技能攻击伤害     125
    LuckyHitRate = 126,                  ///战斗属性--会心一击机率万分率  126
    LuckyHitVal = 127,                   ///战斗属性--会心一击额外伤害    127
    GreatHitRate = 128,                  ///战斗属性--卓越一击机率万分率  128
    GreatHitVal = 129,                   ///战斗属性--卓越一击额外伤害    129
    KillBackHP = 130,                    ///战斗属性--杀怪回血            130
    KillBackMP = 131,                    ///战斗属性--杀怪回魔            131
    DamageReduceRate = 132,              ///没有使用
    DamageBackRate = 133,                ///战斗属性--反伤万分比          133
    GoldFoundRate = 134,                 ///战斗属性--金钱寻获加成万分比  134
    IgnoreDefRate = 135,                 ///战斗属性--无视防御机率万分率  135
    BattleValEx1 = 136,                  ///战斗属性--扩展1 攻速              136
    BattleValEx2 = 137,                  //战斗属性--扩展2   攻击回血            137
    BattleValEx3 = 138,                  //战斗属性--扩展3               138  增伤
    BattleValEx4 = 139,                  //战斗属性--扩展4               139
    BattleValEx5 = 140,                  //战斗属性--扩展5               140
    HPRestorePer = 141,                  //生命回复                141
    LVEx = 142,                          //玩家等级副本,用于转生        142
    LV2 = 143,                           //大师等级                      143
    ExpPoint = 144,                      //扩展经验点数                  144
    OperateInfo = 145,                   //玩家运营商附加信息,如QQ黄钻等145
    SuperHitReduce = 146,                //暴击抗性                   146
    LuckyHitRateReduce = 147,                //会心一击抗性                   147
    SkillAtkRateReduce = 148,               ///技能减伤
    DamagePVP = 149,                      //PVP增加伤害       149 对应191 PVP增加减少
    SpeedValue = 150,                  //移动速度                 150
    DamagePVE = 151,                  ///暂时没用                 151
    PetDamPer = 152,                  //灵兽增加伤害                 152
    IgnoreDefRateReduce = 153,                  //无视防御抗性        153
    DamChanceDef = 154,                  //抵御        154
    BleedDamage = 155,                      //流血伤害 155
    FaintRate = 156,                    //击晕 156
    FaintDefRate = 157,                       //控制抵抗 157
    FinalHurt = 158,                       //输出伤害158
    FinalHurtReduce = 159,                //减少承受伤害 159
    DamagePerPVP = 160,              //PVP增加伤害 160
    DamagePerPVPReduce = 161,              //PVP减少伤害 161
    ComboDamRate = 162,                    //连击几率162
    ComboDamPer = 163,                    //连击伤害163
    MaxProDef = 164,                    //最大防护值 164
    FamilyContribution = 167,              //仙盟贡献度     167
    FamilyStoreScore = 168,                //获取仙盟仓库积分
    RuneSplinters = 169,                  //符印精华        169
    Rune = 170,                  //符印碎片        170
    RealmPoint = 171,           //境界修炼点       171
    MagicEssence = 172,//魔精 172
    UnionLiven = 173, //仙盟活跃令
    FBHelpPoint = 174,       //副本助战积分  174
    PlayerPKState = 175, //战斗状态
    IsAttackBossState = 176,  //是否在打Boss 1 在 0 不在
    BasicsMinimum = 177,//基础最小攻击
    BasicsMaxAttack = 178,//基础最大攻击
    BasicsLife = 179,//基础生命
    BasicsDefense = 180,//基础防御
    BasicsScoreAHit = 181,//基础命中
    BasicsDodge = 182,//基础闪避
    OnlyFinalHurt = 183,// 额外伤害附加
    CDBPlayerRefresh_ForbidenTalk = 184,//禁言
    CDBPlayerRefresh_FuncDef = 185,  // 功能层防御  185
    CDBPlayerRefresh_TreasureScore = 186, //寻宝商店积分
    CDBPlayerRefresh_Danjing = 187,              // 丹精 187
    CDBPlayerRefresh_NPCHurtAddPer,//对怪物伤害加成 188
    FunalHurtPer = 189,// 最终伤害加成
    CDBPlayerRefresh_TalentPoint = 190,
    CDBPlayerRefresh_GodWeaponLV_1 = 192,
    CDBPlayerRefresh_GodWeaponLV_2 = 193,
    CDBPlayerRefresh_GodWeaponLV_3 = 194,
    CDBPlayerRefresh_GodWeaponLV_4 = 195,
    CDBPlayerRefresh_SoulDust = 196,//聚魂-魂尘
    CDBPlayerRefresh_SoulSplinters = 197,//聚魂-碎片
    CDBPlayerRefresh_SoulCore = 198,//聚魂-核心环
    CDBPlayerRefresh_Honor = 199, //# 荣誉值
    CDBPlayerRefresh_ZhuxianRate = 200,
    CDBPlayerRefresh_Mater = 201, //# 灵根属性-金
    CDBPlayerRefresh_Wood = 202,//# 灵根属性-木
    CDBPlayerRefresh_Water = 203,//# 灵根属性-水
    CDBPlayerRefresh_Fire = 204,//# 灵根属性-火
    CDBPlayerRefresh_Earth = 205,//# 灵根属性-土
    CDBPlayerRefresh_NormalHurt = 206,////属性普通攻击增伤:普通攻击附加的固定值伤害
    CDBPlayerRefresh_NormalHurtPer = 207,////属性普通攻击增伤:普通攻击附加的固定值伤害
    CDBPlayerRefresh_FabaoHurt = 208,// //属性法宝技能增伤:法宝技能攻击附加的固定值伤害
    CDBPlayerRefresh_FabaoHurtPer = 209,//  //属性法宝技能加成:法宝技能攻击附加的伤害百分比
    CDBPlayerRefresh_SuperHitRateReduce = 210,//暴击抗性
    CDBPlayerRefresh_LuckyHitReduce = 211,//会心一击伤害固定值减免
    CDBPlayerRefresh_FinalHurtReducePer = 212,//最终伤害百分比减少
    CDBPlayerRefresh_YinjiTime = 213,//印记持续时间,单位毫秒
    CDBPlayerRefresh_YinjiCount = 214,//印记持续时间,单位毫秒
    CDBPlayerRefresh_SkillAddPerA = 215,//定海神针技能伤害百分比
    CDBPlayerRefresh_SkillAddPerB = 216, //皓月枪技能伤害百分比
    CDBPlayerRefresh_SkillAddPerC = 217, //鬼牙刃技能伤害百分比
    CDBPlayerRefresh_SkillAddPerD = 218, //磐龙印技能伤害百分比
    CDBPlayerRefresh_SkillAddPerE = 219, //杏黄旗技能伤害百分比
    CDBPlayerRefresh_SkillAddPerF = 220,//嗜天斧技能伤害百分比
    CDBPlayerRefresh_SkillAddPerG = 221, //射日神弓技能伤害百分比
    CDBPlayerRefresh_SkillReducePerA = 222, //定海神针技能减伤百分比
    CDBPlayerRefresh_SkillReducePerB = 223, //皓月枪技能减伤百分比
    CDBPlayerRefresh_SkillReducePerC = 224, //鬼牙刃技能减伤百分比
    CDBPlayerRefresh_SkillReducePerD = 225, //磐龙印技能减伤百分比
    CDBPlayerRefresh_SkillReducePerE = 226, //杏黄旗技能减伤百分比
    CDBPlayerRefresh_SkillReducePerF = 227, //嗜天斧技能减伤百分比
    CDBPlayerRefresh_SkillReducePerG = 228, //射日神弓技能减伤百分比
    //后续IL开发添加预设
    default1,   // 229
    default2,   //230
    default3,   // 功能特权令 231
    default4,   //  环保值 232
    default5,   // 233仙玉负数
    default6,   // 234灵石负数
    default7,
    default8,
    default9,   // 237 地图境界难度
    default10,  // 238 离开仙盟时间戳(包含主动退出或被踢
    default11,  // 239 代表魅力等级
    default12,
    default13,  // 241 古神货币
    default14,  // 242 功德点
    default15,
    default16,
    default17,  // 245 机缘点
    default18,
    default19,  // 247 成就积分
    default20,  // 248 万界积分
    default21,
    default22,
    default23,
    default24,
    default25,
    default26,
    default27,
    default28,
    default29,
    default30,
    default31,
    default32,
    default33,
    default34,  // 262 凭证积分
    default35,  // 263 聚魂精华
    default36,  // 264 Boss最终伤害加成
    default37,  // 265 骑宠积分
    default38,  // 266 古宝养成货币
    default39,  // 267 天道币
    default40,
    default41,  // 269 过期型代金券
    default42,  // 270 仙缘积分
    default43,  // 271 幻境阁积分
    default44,
    default45,
    default46,
    default47,
    default48,
    default49,
    default50,
};
/** 背包类型码定义 */
public enum PackType
{
    Deleted = 0, // 已删除物品,弃用
    Equip = 1, // 装备
    Item = 2, // 物品
    Warehouse = 5, // 仓库
    Horse = 12, // 坐骑背包
    AnyWhere = 13, // 万能背包
    InterimPack = 28,//临时交换背包
    Treasure = 30, // 寻宝背包
    PetPack = 31, //宠物背包
    DogzItem = 32, //神兽物品背包
    DogzEquip = 33, //神兽装备背包(神兽穿戴)
    //后续IL开发添加预设
    default1,   //34 垃圾回收
    default2,
    default3,
    default4,
    default5,
    default6,
    default7,
    default8,
    default9,
    default10,
    GatherSoul = 254,//聚魂
    RunePack = 255,//符印背包
}
public enum ItemType
{
    Copper = 1,// 铜钱
    Drugs = 7,// 药品
    Buff = 9, //Buff类型
    Gemstone = 25,// 宝石
    ComposeSuitStone = 35, //套装石碎片
    WingsMat = 39,              //合成翅膀材料,羽翼精炼材料
    DropCopper = 43,           // 掉落铜钱
    VipTools = 80,                 //vip道具
    Box = 81,                         //宝箱
    Equip_Weapon = 101,         // 主手
    Equip_Weapon2 = 102,       // 副手
    Equip_Hat = 103,                // 帽子
    Equip_Clothes = 104,          // 衣服
    Equip_Belt = 105,                // 腰带
    Equip_Trousers = 106,         // 裤子
    Equip_Shoes = 107,             // 鞋子
    Equip_Glove = 108,              //手套
    Equip_Neck = 109,               //项链
    Equip_FairyCan1 = 110,       //仙器
    Equip_FairyCan2 = 111,       //仙器
    Equip_Jade = 112,               //玉佩
    Equip_Wing = 113,              // 翅膀
    Guard_1 = 114,                  // 灵守 1
    Guard_2 = 115,                   //灵守 2
}
public enum MakeType
{
    OneKeySell = 3,          // 一键出售回应
    EquipStarUpgrade = 8,         // 装备升星
    ItemCompound = 13,      // 物品合成
    DrugRefine = 18,            // 炼丹
    DrugRecycle = 20, //丹药回收
    DogzEquipPlus = 21,// 神兽装备强化
    RuneCompound = 22,//符印合成
    GatherSoulCompound = 23,//聚魂合成
    GatherSoulDecompose = 24,//聚魂分解
}
/// <summary>
/// 称号类型
/// </summary>
public enum TitleType
{
    None = -1,
    Get = 0,//已获得
    Activity = 1, //活动称号
    Vip = 2,       //VIP称号
    Achivement = 3, //成就称号
    UserDefined = 4, //自定义
}
//功能开启限制类型
public enum FuncOpenEnum
{
    Strength = 1,//装备强化
    Gem = 2,//宝石镶嵌
    Wing = 3,//翅膀
    Pet = 6,//灵宠
    Treasure = 7,//法宝
    Mounts = 8,//坐骑
    Rune = 9,//符印
    Realm = 12, //境界
    Fairy = 15,// 仙盟
    FairyTask = 16,
    GodWeapon = 20,  //神兵
    SelfBoss = 22,//个人Boss
    Title = 24, //称号
    Talent = 149,//天赋技能
    Suit = 36,//套装进化
    ExpPray = 60,//经验祈愿
    CoinPray = 61,//铜钱祈愿
    WorldLv = 71,//世界等级
    Rank = 72,//排行榜
    Friend = 73,//好友
    TouchSky = 74,//登天
    Compose = 75,//合成
    HuntTreasure = 76,//打宝
    Market = 77,//市场
    DayDaily = 78,//日常
    Store = 79,//商城
    RuneTower = 80,//符印塔
    SignIn = 81,//签到
    Potential = 82,//潜力加成
    IceCrystal = 83,//冰晶矿脉
    FairyFest = 84,//仙盟宴会
    Kylin = 85,//麒麟之府
    FairyLand = 86,//仙界秘境
    BlastFurnace = 87,//炼丹
    Munekado = 88,//宗门试炼
    GuardSky = 89,//守卫人皇
    WingRefine = 90,//翅膀精炼
    EquipRefine = 91,//装备精炼
    ElderGods = 92,//古神禁地
    EquipCompose = 93,//装备合成
    Guard = 94,//守护
    SkillTreasure = 95,//技能法宝
    WingCompose = 97,//翅膀合成
    Demon = 98,//混乱妖域
    HappyFindTreasure = 99,//欢乐寻宝
    FightPromote = 100,//战力提升
    AncientBattleGround = 101,//上古战场
    Chat = 102,//聊天
    FairyLeague = 111,//仙盟联赛
    Recharge = 113,//充值
    OpenServerRedEnvelope = 122,//开服红包
    EquipDecompose = 123, //装备分解
    TreasureFindHost = 124, //法宝认主
    Dogz = 138, //神兽
    ReikiRoot = 145,//灵根
    CrossServer = 157, //跨服天梯赛
    CrossServerBoss = 162,
    HazyRegion = 173,//缥缈仙域
    DayOnline = 189, //每日在线
    //后续IL开发添加预设
    default1,
    default2,
    default3,
    default4,
    default5,
    default6,//竞技场
    default7,
    default8,
    default9,
}
//属性类型
public enum PropertyType
{
    LV = 1,//等级
    POWER = 2,  //力量
    AGILITY = 3, //敏捷(身法)
    PHYSIQUE = 4,//体质
    MENTALITY = 5,//智力(灵力)
    HP = 6, //生命
    ATK = 7, //攻击
    DEF = 8, //防御
    HIT = 9, //命中
    MISS = 10, //闪避
    ATKSPEED = 11,//攻击速度
    CritChance = 12,//暴击几率
    CritHurt = 13,//暴击伤害
    CritResis = 14,//暴击减伤
    HeartHit = 15,//会心一击
    HeartHurt = 16,//会心伤害
    HeartResis = 17,//会心抗性
    SkillHurt = 18,//技能加成
    PVPAddHurt = 19,//PVP增加伤害
    PVPReduceHurt = 20,//PVP减少伤害
    LifeReply = 21,//生命回复
    HurtReflect = 22,//伤害反射
    MoveSpeed = 23,//移动速度
    PetHurt = 24,//灵兽伤害
    PetAddHurt = 25,//灵兽增加伤害
    RealHurt = 26,//真实伤害
    RealResis = 27,//真实抵抗
    DefyDef = 28,//无视防御
    DefyDefResis = 29,//无视防御抗性
    DefChance = 30,//防御几率
    BloodHurt = 31,//流血伤害
    AktReplyBlood = 32,//攻击回血
    Stun = 33,//击晕
    CtrlResis = 34,//控制抵抗
    AddFinalHurt = 35,//附加伤害
    ReduceFinalHurt = 36,//附加伤害减少
    PVPAddHurtPer = 37,//PVP百分比增加伤害
    PVPReduceHurtPer = 38,//PVP百分比伤害减少
    DleHitChance = 39,//连击几率
    DleHurt = 40,//连击伤害
    BasicAtkPercent = 41, //基础攻击百分比
    BasicHpPercent = 42, //基础生命百分比
    BasicDefPercent = 43, //基础防御百分比
    HitPercent = 44, //命中百分比
    DodgePercent = 45,//闪避百分比
    KillMonsExpPercent = 46,//杀怪经验百分比
    HorcruxBasicAttrPercent = 48, //魂器基础属性
    ReduceSkillHurtPercent = 49, //技能减伤
    HpPercent = 50,//生命百分比
    AtkPercent = 51, //攻击百分比
    EveryLvAddAtk = 52, //每1级+%s攻击
    EveryLvAddHp = 53, //每1级+%s生命
    AddEquipDropPrecent = 54, //增加装备掉落率
    AddCoinsPrecent = 55,//增加金币
    AddRealHurtPer = 61,//百分比增加真实伤害
    ReduceRealHurtPer = 62,//百分比减少真实伤害
    ArmorMaxHPPer = 63,//基础装备生命
    WeaponAtkPer = 65,//基础装备攻击
    ArmorDefPer = 66, //防具防御百分比
    MinAtk = 67, //最小攻击
    MaxAtk = 68, //最大攻击
    DefencePercent = 69,//防御百分比
    CritHurtPercent = 70,//暴击伤害
    MoveSpeedPercent = 71, //移动速度百分比
    MaxProDef = 72, //防护值
    ProDefHPPer = 73,//防护值百分比
    ProDefAbsorb = 74, //护盾吸收伤害百分比
    BaseHitPer = 75, //基础命中百分比
    BaseMissPer = 76, //基础闪避百分比
    PetMinAtk = 77, //灵宠最小攻击
    PetMaxAtk = 78, //灵宠最大攻击
    OnlyFinalHurt = 79, //额外输出伤害
    PVPAtkBackHP = 80, //PVP攻击回血
    ChanceExpRate = 81, //经验暴击
    HorseAtkPer = 82, //坐骑攻击
    StoneBasePer = 83, //宝石基础属性
    RealmBasePer = 84, //境界基础属性
    PetSkillAtkRate = 85, //宠物技能伤害
    WingHPPer = 86, //翅膀生命
    SuiteBasePer = 87, //套装基础属性
    PlusBaseAtkPer = 88,  //强化攻击
    NpcHurtAddPer = 89,//百分比PVE技能加成
    JobAHurtAddPer = 90,//对龙魂伤害增加百分比
    JobBHurtAddPer = 91,//对灵瑶伤害增加百分比
    JobCHurtAddPer = 92,//对弓箭手伤害增加百分比
    JobAAtkReducePer = 93,//承受龙魂伤害减少百分比
    JobBAtkReducePer = 94,//承受灵瑶伤害减少百分比
    JobCAtkReducePer = 95, //承受弓箭手伤害减少百分比
    ZXCloakAttrPer = 96, //诛仙·披风属性百分比
    ZXMaskAttrPer = 97, //诛仙·面罩属性百分比
    ZXGloveAttrPer = 98,//诛仙·手套属性百分比
    ZXRuyiAttrPer = 99,//诛仙·如意属性百分比
    ZXPendantAttrPer = 100, //诛仙·吊坠属性百分比
    ZXRingAttrPer = 101, //诛仙·戒指属性百分比
    SkillAddPerA = 102,//定海神针技能伤害百分比
    SkillAddPerB = 103, //皓月枪技能伤害百分比
    SkillAddPerC = 104, //鬼牙刃技能伤害百分比
    SkillAddPerD = 105, //磐龙印技能伤害百分比
    SkillAddPerE = 106, //杏黄旗技能伤害百分比
    SkillAddPerF = 107,//嗜天斧技能伤害百分比
    SkillAddPerG = 108, //射日神弓技能伤害百分比
    SkillReducePerA = 109, //定海神针技能减伤百分比
    SkillReducePerB = 110, //皓月枪技能减伤百分比
    SkillReducePerC = 111, //鬼牙刃技能减伤百分比
    SkillReducePerD = 112, //磐龙印技能减伤百分比
    SkillReducePerE = 113, //杏黄旗技能减伤百分比
    SkillReducePerF = 114, //嗜天斧技能减伤百分比
    SkillReducePerG = 115, //射日神弓技能减伤百分比
    Luck = 120,//气运
    LuckPer = 133,//气运百分比
    AddNormalHurt = 134,//固定值增加普通攻击伤害
    AddNormalHurtPer = 135,//百分比增加普通攻击伤害
    AddSkillHurt = 136,//固定值增加技能伤害
    AddSkillHurtPer = 137,//百分比增加技能伤害
    ReduceCrit = 138,//减少暴击率
    ReduceHeartHurtPer = 139,//会心减伤
    AddHeartHurtPer = 140,//百分比增加会心一击伤害
    AddPVEHurt = 141,//固定值增加pve伤害
    AddFinalHurtPer = 142,//百分比增加最终伤害
    ReduceFinalHurtPer = 143,//百分比减少最终伤害
    ReduceSkillCDPer = 149, //减少所有技能CD百分比
    //后续IL开发添加预设
    default1,
    default2,
    default3,
    default4,
    default5,
    default6,
    default7,
    default8,
    default9,
    default10,
    default11,
    default12,      //161 仙盟事务速度加成
    default13,      //仙盟BOSS伤害加成
    default14,      //仙盟联赛生命加成
    default15,      //仙盟联赛攻击加成
    default16,      //仙盟打坐经验加成
    default17,
    Mater = 201,//金
    Wood = 202,//木
    Water = 203,//水
    Fire = 204,//火
    Earth = 205,//土
}
public enum TextColType
{
    None = 0,
    White = 1,
    Blue = 2,
    Purple = 3,
    Orange = 4,
    Red = 5,
    Pink = 6,
    /// <summary>
    /// 深褐色 401c06 (64, 28, 6, 255)
    /// </summary>
    NavyBrown,
    Green = 9,//绿色
    Black = 10,
    /// <summary>
    /// 深绿色 109d06 (16, 157, 6, 255)
    /// </summary>
    DarkGreen = 12,
    NavyYellow = 13,
    LightGreen = 14,
    /// <summary>
    /// fff4cd
    /// </summary>
    LightYellow = 15,
    /// <summary>
    /// (204, 204, 204, 255)
    /// </summary>
    Gray = 16,
}
public enum E_ModelResType
{
    Weapon = 1, //武器 1
    Wing, //翅膀 2
    Horse, //坐骑 3
    Suit, //套装 4
    Pet,// 宠物5
    Secondary,// 副手 6
    Hand,// 手臂 7
    Spirit,//灵器 8
}
public enum TreasureCategory
{
    Human = 1,
    Demon = 2,
    Fairy = 3,
    King = 4,
    Zerg = 5,
}
public enum TreasureState
{
    Collected,
    Collecting,
    Locked,
}
public enum FunctionUnlockType
{
    NoneType = 0,
    Treasure = 1,
    Normal = 2,
    TreasureSkill = 3,
    Skill = 4,
    TreasureFunc = 5,
    TreasureChapter = 6,
}
public enum RedPointState
{
    None = 0,
    Simple = 1,
    Quantity = 2,
    Full = 3,
    GetReward = 4,
}
public enum TeamInviteType
{
    Friend,
    Fairy,
    NearBy,
}
public enum TeammatePrepareState
{
    UnPrepared = 0,//未准备
    Prepared = 1,//已准备
    Rejected = 2,//拒绝
}
public enum VipPrivilegeType
{
    TreasureAtk = 1,
    GemHole = 2,
    VipBuff = 3,
    TradeTax = 4,
    PrivateClerk = 5,
    FreeTransfer = 6,
    AutoFairyMisstion = 7,
    Gather = 8,
    Undead = 9,
    KillMonsterExpUp = 10,
    Minion = 11,
    KillMonsterSp = 12,
    GoldWish = 13,
    ExpWish = 14,
    SelfBoss = 15,   //个人boss基础次数
    BossHome = 16,
    PetDungeon = 17,
    BaptizeDungeon = 18,
    ForbiddenArea = 19,
    Fane = 20,
    Chasm = 21,
    DarkDorr = 22,
    FairyDaimondGift = 23,
    MarketPutawayPwd = 24,
    DemonJar = 25,
    BossHomeAwardLimit = 27,
    DemonJarDouble = 28,
    BindJadeWheel = 30,
    PrayForDrug = 31,
    DemonJarAuto = 32,
    AssistXianYuanCoinsAdd = 33,//助战仙缘币上限加成
    AssistXianYuanCoinsRatioAdd = 34,//助战仙缘币获得倍率加成(万分比)
    JadeDynastyBoss = 35,
    BatchAlchemyFairy = 36,//批量炼制仙丹
    BossHomeBuyTimes = 37,//boss之家购买次数
    SelfBossBuyTims = 38, //个人boss购买次数
}
public enum E_AttackMode
{
    Peace,
    All,
    Country,
    Group,
    Team,
    Family,
    GoodEval,
    Contest,
}
public enum E_ItemColor
{
    White = 1,
    Blue,
    Purple,
    Orange,
    Red,
    Pink,
}
public enum FindPreciousType
{
    WorldBoss = 0,
    BossHome = 1,
    PersonalBoss = 2,
    ElderGodArea = 3,
    DemonJar = 4,
    CrossServerBoss = 6,
    JadeDynastyBoss = 7,
    None = 99,
}
public enum GotServerRewardType
{
    Def_RewardType_Activity = 0,
    Def_RewardType_FamilyActivity = 1,
    Def_RewardType_ChampionFamilyDailyReward = 2,
    Def_RewardType_XMZZWinCnt = 3,
    Def_RewardType_FairyDayAward = 4,
    Def_RewardType_XBXZ = 6, // 仙宝寻主奖励6
    Def_RewardType_DayRealmPoint = 7,//日常修行点
    Def_RewardType_GoldGiftFirst = 8,//首冲礼包
    Def_RewardType_TreasureSoul = 9,//法宝魂奖励
    Def_RewardType_ConsumeRebate = 11,//消费返利奖励
    Def_RewardType_BossReborn = 12,//boss复活奖励
    Def_RewardType_FCRecharge = 13,// 仙界盛典充值大礼13W
    Def_RewardType_FCParty = 14,// 仙界盛典全民来嗨14
    Def_RewardType_WishingWell = 16,//  许愿池奖励16
    Def_RewardType_OpenFunc = 17,//功能预告奖励
    Def_RewardType_TotalRecharge = 18,//累计充值奖励
    Def_RewardType_IceLodeStar = 19, //冰晶矿脉星级奖励19
    Def_RewardType_WeekPartyAct = 20, //领取周狂欢活动奖励20
    Def_RewardType_WeekPartyPoint = 21,// 领取周狂欢积分奖励21
    Def_RewardType_ActLoginAwardAct = 22,// 领取登录奖励活动奖励22
    Def_RewardType_NewFairyCRecharge = 23, // 新仙界盛典充值大礼23
    Def_RewardType_NewFairyCParty = 24, // 新仙界盛典全民来嗨24
    Def_RewardType_FeastWeekPartyAct = 25, //领取节日巡礼活动奖励25
    Def_RewardType_FeastWeekPartyPoint = 26, //领取节日巡礼积分奖励26
    Def_RewardType_FairyAdventuresAward = 27,//缥缈奇遇
    Def_RewardType_HistoryChargeAward = 28,//累计充值
    Def_RewardType_DayPackageFree = 29,//每日免费礼包
    Def_RewardType_ActivityPlace = 30,//活跃放置奖励
    Def_RewardType_HolidayLogin = 37,//节日登录奖励
    Def_RewardType_HolidayTravel = 38,//节日游历奖励
}
public enum MapType
{
    OpenCountry = 0,//野外地图
    SingleFB = 1,        //单人副本
    MultipleFB = 2,    //组队副本
    FamilyFB = 3,       //家族副本
    FamilyWarFB = 4, //家族战副本
    CountryExam = 5, //国家答题
    CountryFB = 6,      //国家副本
    AllByCountry = 7,  //阵营副本
    All = 8,                   //所有
    VSRoom = 9,         //pk房间
    CrossAll = 11,       //跨服所有
}
public enum GuideType
{
    NewBie = 1,
    Functional = 2,
}
public enum GuideTriggerType
{
    None = 998,//无限制
    FunctionOpen = 1,//功能开放
    ManualFunctionOpen = 51,//手动功能开放
    Level = 2,               //等级满足条件
    Treasure = 3,//法宝
    EquipQuality = 4,//装备品质
    Item = 5,//指定物品
    TreasureDungeon = 6,//法宝副本
    Map = 11,//地图
    RuneInlay = 12,//符印镶嵌
    RealmSitDown = 13,//境界打坐
    ItemCompound = 14,//物品合成
    HangUpResult = 15,//挂机结算
    TreasureCollectSoul = 16,//法宝集魂
    TreasureAwaken = 17,//法宝觉醒
    Pray = 18,//祈愿
    VIPExperience = 19,//vip体验
    FairyLandBuyTimes = 20,//仙界秘境购买次数
    TeamAutoAccept = 21,//自动接受组队邀请
    TrialExchange = 22,//宗门试炼兑换材料
    QuestCanAccept = 100,//任务可接
    MainLineQuestCanDo = 101,//任务进行中
    MainLineQuestCanAward = 102,//任务可领奖
    MainLineQuestLimit = 106,//任务被限制
    MainLineQuestContinue = 110,//任务可继续
    BranchQuestCando = 201,//支线任务可做
    BranchQuestCanAward = 202,//支线任务可领奖
    BranchQuestLimit = 206,//支线任务被限制
    BranchQuestContinue = 210,//支线任务可继续
}
public enum FuncPowerType
{
    Role = 0,//角色
    Equip = 1,//装备
    Plus = 2,//强化
    Stone = 3,//宝石
    Reiki = 4,//灵根
    Wing = 5,//翅膀
    Wash = 6,//洗炼
    Pet = 7,//灵宠
    Horse = 8,//坐骑
    Realm = 9,//境界
    GodWeapon = 10,//神兵
    Title = 11,//称号
    Rune = 12,//符印
    Star = 13,//升星
    Human = 14,//人族法宝
    Alchemy = 15,//八卦炉
    Demon = 16,//魔族法宝
    Fairy = 17,//仙族法宝
    PetSoul = 18,//灵宠魂石
    HorseSoul = 19,//坐骑魂石
    Dogz = 21,//神兽
    GatherSoul = 22,//聚魂
    King = 23,//王者法宝
    FashionDress = 24,//时装
    JadeDynastyEquip = 25, //诛仙装备
}
public enum E_AtkType
{
    Special, //0 特殊(将走进具体的技能ID进行处理,根据效果ID
    Single,//1 单体目标技能攻击
    Multiple,//2 群体目标技能攻击
    Transmit,//3 群体目标技能攻击(链式) 效果1填伤害,效果2填递增,效果3填跳几次
    ClearHatred,//4 清仇恨 清除目标在释放者仇恨列表内的仇恨百分比 NPC使用
    SingleHatred,//5 单体仇恨技能
    MultipleBuff,//6 群体BUFF
    Summon,//7 召唤(召唤兽的攻击力取NPC表的数值)
    SingleRecoverAtkPer,//8 单体恢复自身攻击百分比血量(仅针对瞬发技能
    FastMove,//9 拦截、暗影步、杀戮盛宴模板 非玩家不可用 技能会造成伤害并且此次RUSH暴击率会提高的,需要填效果AB值,其中:效果1 A值伤害百分比,B值伤害固定值 效果2 A值暴击,B值暴击百分比
    FlashMove,//10 法师闪现
    //11 NPC给召唤兽加BUFF
    //12 有角度的群攻:半径字段为类型:1 直线;2 5格散射攻击 3 6格散射
    //13 清空NPC自己的最大仇恨者
    //15 NPC专用,找到当前仇恨列表中最大仇恨者,如果在视野中则瞬移过去
    //16 召唤兽专用,召唤NPC(召唤兽的攻击力取攻击取玩家的攻击力)
    //17 按血量添加仇恨(肉宠)
    //18 单体恢复自身气血上限百分比血量(针对瞬发技能)效果1a值填百分比,b值填固定值
    //19 群体攻击技能,伤害为范围内所有人分担
    //20 对目标造成目标血量上限百分比的伤害
    //25
    //NPC专用 召唤兽技能模板
    //效果1 A值 召唤兽NPCID
    //      B值 单次召唤数量
    //      C值  总召唤数量
    //21 群体百分比扣血模板
    //28 取消的选中目标模板
    //30 弓箭手姿态模板
    //32 增加吸血效果(非吸血技能,作用于吸血效果万分比),A值填万分率系数
    //33 打出最后一击伤害的X%附加Y值
    default11,
    default12,
    default13,
    default14,
    default15,
    default16,
    default17,
    default18,
    default19,
    default20,
    default21,
    default22,
    default23,
    default24,
    default25,
    default26,
    default27,
    default28,
    default29,
    default30,
    default31,
    default32,
    RushAttack = 34,//34 冲锋+伤害,然后效果半径配0时=单攻伤害,配>0时=群攻格子数,配5就等于说群攻5*5
    //35 蓄力模板,搭配效果值 效果ID 1206  A值为能量次数
    default35,
}
public enum GameObjType
{
    /** 未定义 */
    gotNone = 0,
    /** 玩家 */
    gotPlayer,
    /** NPC */
    gotNPC,
    /** 物品 */
    gotItem,
    /** 飞行物件 */
    gotFlyObj,
    /** 此枚举的值类型的值上限 */
    gotMax
}
/** 伤害类型 */
public enum HurtAttackType
{
    /** 普通伤害 */
    Normal = 1,
    /** 恢复 */
    Recovery = 2,
    /** 反弹伤害 */
    BounceHurt = 3,
    /** 留血 */
    Bleed = 4,
    /** 抵御 */
    Parry = 5,
    /** 连击 */
    DoubleHit = 6,
    /** 暴击 */
    SuperHit = 7,
    /** 会心一击 */
    LuckyHit = 8,
    /** 闪避 */
    Miss = 9,
    /** 免疫 */
    Immune = 10,
    /** 压制 */
    Suppress = 11,
    /**斩杀**/
    ZhanSha = 12,
    /** 诛仙一击 */
    ZhuXianAtk = 13,
    /** 终极斩杀 */
    FinalKill = 14,
    /*致命一击*/
    DeadlyHit = 15,
    ThumpHit = 16,// 重击
    Yinji = 17,// 印记
    Burning = 18,// 灼烧
}
public enum DungeonTargetType
{
    NPC = 1,
    Exp = 2,
    Score = 3,
    Money = 4,
    Wave = 5,
    NpcTotal = 6,
    Stage = 7,
    NPCDialogue = 8,    //npc对话
    VictorySumCnt = 9, //(仙魔胜利总场数)
    StageVictoryCnt = 10, //(阶段胜利场数)
    Collect = 11,
    AttackCount = 12,
}
public enum AchievementType
{
    Level = 1,
    FightPower = 2,
    MainLine = 3,
    KillMonster = 4,
    DailyQuest = 5,
    FairyQuest = 6,
    JobRank = 7,
    MagicWeaponLevel = 8,
    MountCount = 9,
    MountLevel = 10,
    PetCount = 11,
    PetLevel = 12,
    CollectGold = 13,
    CollectBindDiamond = 14,
    CollectDiamond = 15,
    AccumulativeSignIn = 16,
    ContinuousSignIn = 17,
    PackbackGrid = 18,
    FriendCount = 19,
    WorldChat = 20,
    SaleItem = 21,
    BuyItem = 22,
    Dead = 23,
    ClearRedName = 24,
    KillPlayer = 25,
    StrengthenCount = 26,
    EquipStrengthenLevel = 27,
    WorldBoss = 28,
    CircleQuest = 29,
    TreasureDungeon = 30,
    JoinGuild = 31,
    JoinTeam = 32,
    CollectTreasure = 33,
    BeKilledCount = 34,
    PrayCount = 35,
    KillNPC = 36,
    FindWorldMap = 37,
    PutonEquipPlace = 38,
    PutonEquipQuality = 39,
    MissionTranfer = 40,
    PropertyAdd = 41,
    RuneTower = 42,
    Mount = 43,
    GetRune = 44,
    RuneLevel = 45,
    FairyArea = 46,
    ComposeItem = 47,
    InlayGem = 48,
    Kylin = 49,
    Realm = 50,
    RefiningDan = 51,
    ActivevalueAward = 52,
    TreasureLevel = 53,
    AncientBattleGroundKillCnt = 55,
    AncientBattleGroundMultiKill = 56,
    UnLockPet = 57,
    PetRank = 58,
    PetRanks = 59,
    LifeGemInlay = 60,
    AttackGemInlay = 61,
    FairylandExp = 62,
    NuwaGradeS = 63,
    AnyMountLevel = 64,
    DvsFWinningStreak = 65,
}
/// <summary>
/// 物品使用耐久度限制类型
/// </summary>
public enum ItemTimeType
{
    EquipedTime = 3,              //时间(装备的时候-1,此后每分钟-1)
    RealityTime = 9,                //现实时间扣耐久
}
public enum TitleBtnState
{
    Normal,
    Click,
    Locked,
}
public enum LegendAttrType
{
    Normal = 0, //一般
    Pursuit = 1, //追求
    Fixed = 2, //固定
}
public enum ServerState
{
    Maintain = 0,
    Normal = 1,
    Busy = 2,
    Hot = 3,
    Predicted = 4,
}
public enum ItemUseDataKey
{
    mapLoaction = 15,  // 物品记录地图坐标[mapid, posx, posy]
    legendAttrID = 17,  //物品传奇属性ID列表
    itemCount = 18,  // 物品个数,支持20亿,目前仅特殊转化物品会用到
    legendAttrValue = 19,  //物品传奇属性值列表
    outOfPrintAttrID = 21,  //物品绝版属性ID列表
    outOfPrintAttrValue = 23,  //物品绝版属性值列表
    itemColor = 16,  //物品颜色,如果该值没有就取物品
    cancelUseLimit = 20,  //物品取消使用限制
    source = 24,  // 物品来源 1-寻宝;2-商店购买;3-商店兑换;4-击杀虚拟掉落
    wingMaterialItemID = 27,  //翅膀精炼材料ID列表
    wingMaterialItemCount = 29,  //翅膀精炼材料个数列表
    suiteLV = 30,  //套装等级
    dogzEquipPlus = 31,  // 神兽装备强化信息列表 [强化等级, 强化熟练度]
    hasOpenCnt = 32,  // 物品累积开启次数
    itemDecompound = 33,  //合成物品拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
    createItemLoginDay = 34,  //创建物品时的登录天数
    lastOpenItemLoginDay = 36,  //上一次开启物品时的登录天数
    equipSkills = 37, //装备技能,没有记录则读取表
    runeLV = 38,  // 符印等级
    birthChartLV = 40,  // 命格等级
    wingProgressValue = 42, //羽翼精炼值
    createTime = 44, // 时效物品的创建时间
    totalTime = 48, // 时效物品的剩余时间
    auctionItemCreateTime = 50,//拍品创建时间
    // 神装属性
    shenAttrID = 51,  //物品神品属性ID列表
    xianAttrID = 53,  //物品仙品属性ID列表
    jiAttrID = 55,  //物品极品属性ID列表
    shenAttrValue = 61,  //物品神品属性值列表
    xianAttrValue = 63,  //物品仙品属性值列表
    jiAttrValue = 65,  //物品极品属性值列表
    //后续IL开发添加预设
    default1,
    default2,
    default3,
    default4,
    default5,
    default6,
    default7,
    default8,
    default9,
    default10,
    #region 200~300 宠物数据用
    pet_NPCID = 200,  //npcID
    pet_Skill = 201,  //技能列表
    pet_ClassLV = 202,  // 阶级
    pet_State = 204,  // 当前状态, 对应 Def_PetStateList
    pet_QualityLV = 206,  // 品质
    default81,
    default82,
    default83,
    default84,
    default85,
    default86,
    default87,
    default88,
    default89,
    default90,
    default91,
    default92,
    default93,
    default94,
    default95,
    default96,
    default97,
    default98,
    default99,
    default100,
    #endregion
}
public enum ItemOperateType
{
    makeUse, //使用
    putOn, //穿上
    dismantle, //拆解合成装备
    split, //拆分
    putAway,//上架
    compose,//合成
    sell, //出售
    putOff, //脱下
    putIn, //放入
    putOut, //取出
    exchange,//兑换
    buy,//购买
    putItemout,//物品下架
    renewal,//续费
    refine, //精炼
    LevelUp,//升级
    Resolve,//分解
    Wear,//佩戴
    Replace,//替换
    gotoPuton,//前往穿上
    strength, //强化
    inlay, //镶嵌
    train,//洗炼
    star,//升星
    lsExchange, //灵石兑换
    //后续IL开发添加预设
    default1, //升阶
    default2,
    default3,
}
public enum ItemWinType
{
    itemWin, //普通物品弹框
    boxWin, //宝箱弹框
    equipWin,  //装备弹框
    wingsWin,  //翅膀弹框
    guardWin,//守护弹框
    buyItemWin, //购买物品弹框
    buyBoxWin,  //购买宝箱弹框
    petMatWin,  //解锁宠物和坐骑道具弹框
    buyPetMatWin,  //购买解锁宠物和坐骑道具弹框
    gatherSoul,//聚魂
    kingTreasure, //王者法宝
}
public enum ItemTipChildType
{
    Normal, //普通的装备弹框
    Buy, //购买弹框
    UnionWarehouseDonation, //捐献装备
    UnionWarehouseExchange, //兑换装备
    GetEquipPath,  //装备获取途径
    GetWingsPath,//翅膀获取途径
}
public enum InstalledAsset
{
    NullAsset = 0,
    HalfAsset = 1,
    FullAsset = 2,
    IngoreDownLoad = 3,
}
public enum VersionAuthority
{
    InterTest = 0,
    Release = 1,
}
public enum FootAudioType
{
    Walk = 1,
    Ride = 2,
    Fly = 3,
}
public enum AttackFailType
{
    SkillFail_Other,      // 其他
    SkillFail_CD,      // 技能CD
    SkillFail_AtkInterval, // 攻击间隔
}
public enum DungeonFightStage
{
    None,
    Prepare,
    Normal,
    PickUp,
    ExitPrepare,
    ElderGodAreaNearDead,
}
public enum RankType
{
    FightPower = 0,
    Job1FightPower = 1,
    Job2FightPower = 2,
    Job3FightPower = 3,
    Level = 4,
    Mount = 5,
    Pet = 6,
    RuneTower = 7,
    OfflineExp = 8,
    Realm = 9,
    OpenServerStrengthen = 11,
    OpenServerMount = 12,
    OpenServerGem = 13,
    OpenServerLv = 14,
    OpenServerRealm = 15,
    OpenServerFightPower = 16,
    Def_BT_FCCostGold = 17,  //消费排行榜(仙界盛典)
    OpenServerRune = 18,
    Assist = 19,//助战榜
    OpenServerGodWeapon = 20,
    OpenServerRecharge = 21,
    OpenServerPet = 22,
    Def_BT_NewFCCostGold = 23, //消费排行榜(新仙界盛典)  23
    OpenServerReikiPoint = 24,//灵根点
    OpenServerStartLevel = 25,
    OpenServereEquipTrain = 26, //装备洗练
    default1,
    default2,
    default3,
    default4,
}
public enum PetOrMount
{
    None,
    Pet,
    Mount,
}
//OpenServerActivityCenter.ActivityType.AT_Activity2的活动  历史原因不要用100
public enum NewDayActivityID
{
    BossTrial = 200,    //boss凭证
    LoginAct = 201, //登录活动
    MissionAct = 202,   //任务活动
    RechargeGiftAct = 203,  //充值礼包(充值次数奖励)
    CrossBossTrial = 204,   //跨服boss凭证 必须和BossTrial 一起
    FamilyRechargeConnAct = 205, //仙盟协助
    CustomizedGiftWin = 206, //自选礼包
    SecretPlaceXB = 207, //秘境寻宝
    SecretPlaceXBCross = 208, //秘境寻宝 跨服
    RechargeGiftAct31 = 209,  //自选充值 + 商店礼包
    PetHorseAct = 210,  //宠物坐骑活动
    PetHorseActCross = 211,  //宠物坐骑活动 跨服
    TreasurePavilionAct = 212,  //古宝活动
    TreasurePavilionActCross = 213,  //古宝活动 跨服
    FairyAffinityLoginAct = 214,  //仙缘登陆活动
    FairyAffinityMissionAct = 215,  //仙缘任务活动
    FairyAffinityRechargeGiftAct = 216,  //仙缘礼包活动
    CycleHallAct = 217,  //轮回殿活动
    YunShiXBAct = 218,  //运势寻宝活动
    YunShiMissionAct = 219,  //运势任务活动
    YunShiRechargeGiftAct = 220,  //运势礼包活动
    LianQiActCross = 221,    //仙匠大会活动 跨服
    LianQiRechargeGiftActCross = 222, //仙匠大会礼包活动 跨服
}
//仙玉购买的二次确认框类型
public enum BuyStoreItemCheckType
{
    All = 0,    //默认全局, 非特殊可以统一用这个
    ActGift = 1, //活动礼包
    MJXB = 2,   //秘境寻宝
    GatherSoulXB = 3,   //聚魂寻宝
    TreasurePavilion = 4,   //古宝寻宝
    BestXB = 5,   //极品寻宝
    RuneXB = 6,   //符文寻宝
}
//查询其他玩家数据 用途类型
public enum ViewPlayerType
{
    viewPlayerEquip = 0,    //查看玩家基本信息(装备由请求大境界阶决定),并打开界面
    viewPlayerFightPower = 1,  //查看玩家战力详情,并打开界面
    viewPlayerData = 2,  //查看玩家基本信息,公用
    viewPlayerDataZZ = 3,  //助战场景使用
    viewPlayerDataArena = 4,  //本服竞技场场景使用
    viewPlayerDataFairyKing = 5,  //仙盟联赛王者UI使用
    //查询跨服数据从100开始
    viewCrossPlayerEquip = 100,    //查看玩家基本信息(装备由请求大境界阶决定),并打开界面
    viewCrossPlayerFightPower = 101,  //查看玩家战力详情,并打开界面
    viewCrossPlayerData = 102,  //查看玩家基本信息,公用
    viewCrossPlayerDataBlessedLand = 103,  //福地驱赶
}
Main/Utility/EnumHelper.cs.meta
Main/Utility/EnumLabelAttribute.cs
File was renamed from Utility/EnumLabelAttribute.cs
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -8,40 +8,40 @@
#endif
[AttributeUsage(AttributeTargets.Field)]
public class EnumLabelAttribute : PropertyAttribute
public class EnumLabelAttribute : PropertyAttribute
{
    public readonly Type enumType;
    public EnumLabelAttribute(Type type)
    {
        this.enumType = type;
    public EnumLabelAttribute(Type type)
    {
        this.enumType = type;
    }
}
#if UNITY_EDITOR
[CustomPropertyDrawer(typeof(EnumLabelAttribute))]
public class EnumLabelPropertyDrawer : PropertyDrawer
{
    List<string> m_EnumLabels = new List<string>();
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        var customAttribute = (EnumLabelAttribute)attribute;
        if (m_EnumLabels.Count != property.enumNames.Length)
        {
            m_EnumLabels.Clear();
            var enumtype = customAttribute.enumType;
            foreach (var enumName in property.enumNames)
            {
                var enumfield = enumtype.GetField(enumName);
                var customAttributes = enumfield.GetCustomAttributes(typeof(HeaderAttribute), false);
                m_EnumLabels.Add(customAttributes.Length <= 0 ? enumName : ((HeaderAttribute)customAttributes[0]).header);
            }
        }
        EditorGUI.BeginChangeCheck();
        var value = EditorGUI.Popup(position, fieldInfo.Name, property.enumValueIndex, m_EnumLabels.ToArray());
        if (EditorGUI.EndChangeCheck())
        {
            property.enumValueIndex = value;
        }
    }
public class EnumLabelPropertyDrawer : PropertyDrawer
{
    List<string> m_EnumLabels = new List<string>();
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        var customAttribute = (EnumLabelAttribute)attribute;
        if (m_EnumLabels.Count != property.enumNames.Length)
        {
            m_EnumLabels.Clear();
            var enumtype = customAttribute.enumType;
            foreach (var enumName in property.enumNames)
            {
                var enumfield = enumtype.GetField(enumName);
                var customAttributes = enumfield.GetCustomAttributes(typeof(HeaderAttribute), false);
                m_EnumLabels.Add(customAttributes.Length <= 0 ? enumName : ((HeaderAttribute)customAttributes[0]).header);
            }
        }
        EditorGUI.BeginChangeCheck();
        var value = EditorGUI.Popup(position, fieldInfo.Name, property.enumValueIndex, m_EnumLabels.ToArray());
        if (EditorGUI.EndChangeCheck())
        {
            property.enumValueIndex = value;
        }
    }
}
#endif
Main/Utility/EnumLabelAttribute.cs.meta
Main/Utility/Extension.cs
Main/Utility/Extension.cs.meta
Main/Utility/FPS.cs
Main/Utility/FPS.cs.meta
Main/Utility/FieldPrint.cs
Main/Utility/FieldPrint.cs.meta
Main/Utility/FileExtersion.cs
File was renamed from Utility/FileExtersion.cs
@@ -1,207 +1,207 @@
using System.Collections;
using System.Collections.Generic;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class FileExtersion
{
    public readonly static string lineSplit = "\r\n"; //行间隔体
    //创建对应的文件文件夹路径
    public static void MakeSureDirectory(string filePath)
    {
        string dir = Path.GetDirectoryName(filePath);
        if (!Directory.Exists(dir))
        {
            Directory.CreateDirectory(dir);
        }
    }
    public static List<FileInfo> GetFileInfos(string _path, string[] _searchPatterns)
    {
        if (_searchPatterns == null)
        {
            return null;
        }
        if (!Directory.Exists(_path))
        {
            return null;
        }
        var fileInfoes = new List<FileInfo>();
        var directoryInfo = new DirectoryInfo(_path);
        for (int i = 0; i < _searchPatterns.Length; i++)
        {
            fileInfoes.AddRange(directoryInfo.GetFiles(_searchPatterns[i], SearchOption.AllDirectories));
        }
        return fileInfoes;
    }
    public static void GetAllDirectoryFileInfos(string _path, List<FileInfo> _fileInfos)
    {
        var directoryInfo = new DirectoryInfo(_path);
        var allFileSystemInfos = directoryInfo.GetFileSystemInfos();
        for (int i = 0; i < allFileSystemInfos.Length; i++)
        {
            var fileSystemInfo = allFileSystemInfos[i];
            if (fileSystemInfo is DirectoryInfo)
            {
                GetAllDirectoryFileInfos(fileSystemInfo.FullName, _fileInfos);
            }
            if (fileSystemInfo is FileInfo)
            {
                _fileInfos.Add(fileSystemInfo as FileInfo);
            }
        }
    }
    public static string GetFileRelativePath(string _root, string _fileFullName)
    {
        _root = _root.Replace("\\", "/");
        _fileFullName = _fileFullName.Replace("\\", "/");
        var relativePath = _fileFullName.Replace(_root, "");
        if (relativePath.StartsWith("/"))
        {
            relativePath = relativePath.Substring(1, relativePath.Length - 1);
        }
        return relativePath;
    }
    public static int GetVersionFromFileName(string _fileName)
    {
        var index = _fileName.IndexOf("_version_");
        if (index == -1)
        {
            return 0;
        }
        else
        {
            var version = 0;
            int.TryParse(_fileName.Substring(0, index), out version);
            return version;
        }
    }
    public static string RemoveVersionFromFileFullName(string _fullName)
    {
        var fileName = Path.GetFileName(_fullName);
        var index = fileName.IndexOf("_version_");
        if (index != -1)
        {
            var startIndex = index + 9;
            fileName = fileName.Substring(startIndex, fileName.Length - startIndex);
            return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar, fileName);
        }
        else
        {
            return _fullName;
        }
    }
    public static string AddVersionToFileFullName(string _fullName, int _version)
    {
        var fileName = Path.GetFileName(_fullName);
        var index = fileName.IndexOf("_version_");
        if (index != -1)
        {
            fileName = fileName.Substring(0, index);
        }
        return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar, _version, "_version_", fileName);
    }
    public static void DirectoryCopy(string _from, string _to)
    {
        if (!Directory.Exists(_from))
        {
            return;
        }
        if (!Directory.Exists(_to))
        {
            Directory.CreateDirectory(_to);
        }
        var files = Directory.GetFiles(_from);
        foreach (var formFileName in files)
        {
            string fileName = Path.GetFileName(formFileName);
            string toFileName = Path.Combine(_to, fileName);
            File.Copy(formFileName, toFileName, true);
        }
        var fromDirs = Directory.GetDirectories(_from);
        foreach (var fromDirName in fromDirs)
        {
            var dirName = Path.GetFileName(fromDirName);
            var toDirName = Path.Combine(_to, dirName);
            DirectoryCopy(fromDirName, toDirName);
        }
    }
    public static string GetMD5HashFromFile(string fileName)
    {
        try
        {
            var file = new FileStream(fileName, System.IO.FileMode.Open);
            var md5 = new MD5CryptoServiceProvider();
            var retVal = md5.ComputeHash(file);
            file.Close();
            var sb = new StringBuilder();
            for (int i = 0; i < retVal.Length; i++)
            {
                sb.Append(retVal[i].ToString("x2"));
            }
            return sb.ToString();
        }
        catch (Exception ex)
        {
            throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
        }
    }
    public static string GetStringMD5Hash(string str)
    {
        try
        {
            var bytes = Encoding.UTF8.GetBytes(str);
            var md5 = new MD5CryptoServiceProvider();
            var retVal = md5.ComputeHash(bytes);
            var sb = new StringBuilder();
            for (int i = 0; i < retVal.Length; i++)
            {
                sb.Append(retVal[i].ToString("x2"));
            }
            return sb.ToString();
        }
        catch (Exception ex)
        {
            throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
        }
    }
    public static LuaConfigData ReadFileAllLines(string path)
    {
        var lines = File.ReadAllLines(path);
        return new LuaConfigData() { length = lines.Length, lines = lines };
    }
    public struct LuaConfigData
    {
        public int length;
        public string[] lines;
    }
}
using System.Collections;
using System.Collections.Generic;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class FileExtersion
{
    public readonly static string lineSplit = "\r\n"; //行间隔体
    //创建对应的文件文件夹路径
    public static void MakeSureDirectory(string filePath)
    {
        string dir = Path.GetDirectoryName(filePath);
        if (!Directory.Exists(dir))
        {
            Directory.CreateDirectory(dir);
        }
    }
    public static List<FileInfo> GetFileInfos(string _path, string[] _searchPatterns)
    {
        if (_searchPatterns == null)
        {
            return null;
        }
        if (!Directory.Exists(_path))
        {
            return null;
        }
        var fileInfoes = new List<FileInfo>();
        var directoryInfo = new DirectoryInfo(_path);
        for (int i = 0; i < _searchPatterns.Length; i++)
        {
            fileInfoes.AddRange(directoryInfo.GetFiles(_searchPatterns[i], SearchOption.AllDirectories));
        }
        return fileInfoes;
    }
    public static void GetAllDirectoryFileInfos(string _path, List<FileInfo> _fileInfos)
    {
        var directoryInfo = new DirectoryInfo(_path);
        var allFileSystemInfos = directoryInfo.GetFileSystemInfos();
        for (int i = 0; i < allFileSystemInfos.Length; i++)
        {
            var fileSystemInfo = allFileSystemInfos[i];
            if (fileSystemInfo is DirectoryInfo)
            {
                GetAllDirectoryFileInfos(fileSystemInfo.FullName, _fileInfos);
            }
            if (fileSystemInfo is FileInfo)
            {
                _fileInfos.Add(fileSystemInfo as FileInfo);
            }
        }
    }
    public static string GetFileRelativePath(string _root, string _fileFullName)
    {
        _root = _root.Replace("\\", "/");
        _fileFullName = _fileFullName.Replace("\\", "/");
        var relativePath = _fileFullName.Replace(_root, "");
        if (relativePath.StartsWith("/"))
        {
            relativePath = relativePath.Substring(1, relativePath.Length - 1);
        }
        return relativePath;
    }
    public static int GetVersionFromFileName(string _fileName)
    {
        var index = _fileName.IndexOf("_version_");
        if (index == -1)
        {
            return 0;
        }
        else
        {
            var version = 0;
            int.TryParse(_fileName.Substring(0, index), out version);
            return version;
        }
    }
    public static string RemoveVersionFromFileFullName(string _fullName)
    {
        var fileName = Path.GetFileName(_fullName);
        var index = fileName.IndexOf("_version_");
        if (index != -1)
        {
            var startIndex = index + 9;
            fileName = fileName.Substring(startIndex, fileName.Length - startIndex);
            return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar, fileName);
        }
        else
        {
            return _fullName;
        }
    }
    public static string AddVersionToFileFullName(string _fullName, int _version)
    {
        var fileName = Path.GetFileName(_fullName);
        var index = fileName.IndexOf("_version_");
        if (index != -1)
        {
            fileName = fileName.Substring(0, index);
        }
        return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar, _version, "_version_", fileName);
    }
    public static void DirectoryCopy(string _from, string _to)
    {
        if (!Directory.Exists(_from))
        {
            return;
        }
        if (!Directory.Exists(_to))
        {
            Directory.CreateDirectory(_to);
        }
        var files = Directory.GetFiles(_from);
        foreach (var formFileName in files)
        {
            string fileName = Path.GetFileName(formFileName);
            string toFileName = Path.Combine(_to, fileName);
            File.Copy(formFileName, toFileName, true);
        }
        var fromDirs = Directory.GetDirectories(_from);
        foreach (var fromDirName in fromDirs)
        {
            var dirName = Path.GetFileName(fromDirName);
            var toDirName = Path.Combine(_to, dirName);
            DirectoryCopy(fromDirName, toDirName);
        }
    }
    public static string GetMD5HashFromFile(string fileName)
    {
        try
        {
            var file = new FileStream(fileName, System.IO.FileMode.Open);
            var md5 = new MD5CryptoServiceProvider();
            var retVal = md5.ComputeHash(file);
            file.Close();
            var sb = new StringBuilder();
            for (int i = 0; i < retVal.Length; i++)
            {
                sb.Append(retVal[i].ToString("x2"));
            }
            return sb.ToString();
        }
        catch (Exception ex)
        {
            throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
        }
    }
    public static string GetStringMD5Hash(string str)
    {
        try
        {
            var bytes = Encoding.UTF8.GetBytes(str);
            var md5 = new MD5CryptoServiceProvider();
            var retVal = md5.ComputeHash(bytes);
            var sb = new StringBuilder();
            for (int i = 0; i < retVal.Length; i++)
            {
                sb.Append(retVal[i].ToString("x2"));
            }
            return sb.ToString();
        }
        catch (Exception ex)
        {
            throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
        }
    }
    public static LuaConfigData ReadFileAllLines(string path)
    {
        var lines = File.ReadAllLines(path);
        return new LuaConfigData() { length = lines.Length, lines = lines };
    }
    public struct LuaConfigData
    {
        public int length;
        public string[] lines;
    }
}
Main/Utility/FileExtersion.cs.meta
Main/Utility/GameObjectPool.cs
File was renamed from Utility/GameObjectPool.cs
@@ -1,99 +1,99 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameObjectPool
{
    private List<GameObject> m_FreeList;
    private List<GameObject> m_ActiveList;
    private GameObject m_Prefab;
    public int nameHashCode;
    public string name;
    public GameObjectPool(GameObject prefab)
    {
        name = prefab.name;
        nameHashCode = name.GetHashCode();
        m_Prefab = prefab;
        m_FreeList = new List<GameObject>();
        m_ActiveList = new List<GameObject>();
    }
    public GameObject Request()
    {
        GameObject _gameObject = null;
        if (m_FreeList.Count == 0)
        {
            _gameObject = Object.Instantiate(m_Prefab);
            _gameObject.name = name;
        }
        else
        {
            _gameObject = m_FreeList[0];
            m_FreeList.RemoveAt(0);
        }
        m_ActiveList.Add(_gameObject);
        return _gameObject;
    }
    public void Release(GameObject gameObject)
    {
        if (m_ActiveList.Contains(gameObject))
        {
            m_ActiveList.Remove(gameObject);
        }
        else
        {
            Debug.LogWarningFormat("所回收的go对象 {0} 并不是从池里取得的...", gameObject.name);
        }
        m_FreeList.Add(gameObject);
    }
    public void Clear()
    {
        foreach (var _item in m_FreeList)
        {
            Object.Destroy(_item);
        }
        foreach (var _item in m_ActiveList)
        {
            Object.Destroy(_item);
        }
        m_FreeList.Clear();
        m_ActiveList.Clear();
    }
    public void Destroy()
    {
        Clear();
        m_Prefab = null;
        m_FreeList = null;
        m_ActiveList = null;
    }
#if UNITY_EDITOR
    public void ForeachActive(System.Action<GameObject> method)
    {
        for (int i = m_ActiveList.Count - 1; i >= 0; --i)
        {
            method(m_ActiveList[i]);
        }
    }
    public void ForeachFree(System.Action<GameObject> method)
    {
        for (int i = m_FreeList.Count - 1; i >= 0; --i)
        {
            method(m_FreeList[i]);
        }
    }
#endif
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameObjectPool
{
    private List<GameObject> m_FreeList;
    private List<GameObject> m_ActiveList;
    private GameObject m_Prefab;
    public int nameHashCode;
    public string name;
    public GameObjectPool(GameObject prefab)
    {
        name = prefab.name;
        nameHashCode = name.GetHashCode();
        m_Prefab = prefab;
        m_FreeList = new List<GameObject>();
        m_ActiveList = new List<GameObject>();
    }
    public GameObject Request()
    {
        GameObject _gameObject = null;
        if (m_FreeList.Count == 0)
        {
            _gameObject = Object.Instantiate(m_Prefab);
            _gameObject.name = name;
        }
        else
        {
            _gameObject = m_FreeList[0];
            m_FreeList.RemoveAt(0);
        }
        m_ActiveList.Add(_gameObject);
        return _gameObject;
    }
    public void Release(GameObject gameObject)
    {
        if (m_ActiveList.Contains(gameObject))
        {
            m_ActiveList.Remove(gameObject);
        }
        else
        {
            Debug.LogWarningFormat("所回收的go对象 {0} 并不是从池里取得的...", gameObject.name);
        }
        m_FreeList.Add(gameObject);
    }
    public void Clear()
    {
        foreach (var _item in m_FreeList)
        {
            Object.Destroy(_item);
        }
        foreach (var _item in m_ActiveList)
        {
            Object.Destroy(_item);
        }
        m_FreeList.Clear();
        m_ActiveList.Clear();
    }
    public void Destroy()
    {
        Clear();
        m_Prefab = null;
        m_FreeList = null;
        m_ActiveList = null;
    }
#if UNITY_EDITOR
    public void ForeachActive(System.Action<GameObject> method)
    {
        for (int i = m_ActiveList.Count - 1; i >= 0; --i)
        {
            method(m_ActiveList[i]);
        }
    }
    public void ForeachFree(System.Action<GameObject> method)
    {
        for (int i = m_FreeList.Count - 1; i >= 0; --i)
        {
            method(m_FreeList[i]);
        }
    }
#endif
}
Main/Utility/GameObjectPool.cs.meta
Main/Utility/GenerateUICode.cs
Main/Utility/GenerateUICode.cs.meta
Main/Utility/GlobalTimeEvent.cs
File was renamed from Utility/GlobalTimeEvent.cs
@@ -1,190 +1,190 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class GlobalTimeEvent : SingletonMonobehaviour<GlobalTimeEvent>
{
    public event Action secondEvent;
    public event Action fiveSecondEvent;
    public event Action minuteEvent;
    public event Action fiveMinuteEvent;
    public event Action tenMinuteEvent;
    public event Action halfHourEvent;
    public event Action hourEvent;
    public event Action halfMinuteEvent;
    int secondBuf = -1;
    int fiveSecondBuf = -1;
    int minuteBuf = -1;
    int fiveMinuteBuf = -1;
    int tenMinuteBuf = -1;
    int halfHourBuf = -1;
    int hourBuf = -1;
    int halfMinuteBuf = -1;
    public void Begin()
    {
    }
    private void Update()
    {
        var second = DateTime.Now.Second;
        if (second != secondBuf)
        {
            if (secondEvent != null)
            {
                secondEvent();
            }
            secondBuf = second;
        }
        var fiveSecond = second / 5;
        if (fiveSecondBuf != fiveSecond)
        {
            try
            {
                if (fiveSecondEvent != null)
                {
                    fiveSecondEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                fiveSecondBuf = fiveSecond;
            }
        }
        var minute = DateTime.Now.Minute;
        if (minuteBuf != minute)
        {
            try
            {
                if (minuteEvent != null)
                {
                    minuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                minuteBuf = minute;
            }
        }
        var thirtySeconds = second / 30;
        if (halfMinuteBuf != thirtySeconds)
        {
            try
            {
                if (halfMinuteEvent != null)
                {
                    halfMinuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                halfMinuteBuf = thirtySeconds;
            }
        }
        var fiveMinute = minute / 5;
        if (fiveMinuteBuf != fiveMinute)
        {
            try
            {
                if (fiveMinuteEvent != null)
                {
                    fiveMinuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                fiveMinuteBuf = fiveMinute;
            }
        }
        var tenMinute = minute / 10;
        if (tenMinuteBuf != tenMinute)
        {
            try
            {
                if (tenMinuteEvent != null)
                {
                    tenMinuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                tenMinuteBuf = tenMinute;
            }
        }
        var thirtyMinute = minute / 30;
        if (halfHourBuf != thirtyMinute)
        {
            try
            {
                if (halfHourEvent != null)
                {
                    halfHourEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                halfHourBuf = thirtyMinute;
            }
        }
        var hour = DateTime.Now.Hour;
        if (hourBuf != hour)
        {
            try
            {
                if (hourEvent != null)
                {
                    hourEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                hourBuf = hour;
            }
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class GlobalTimeEvent : SingletonMonobehaviour<GlobalTimeEvent>
{
    public event Action secondEvent;
    public event Action fiveSecondEvent;
    public event Action minuteEvent;
    public event Action fiveMinuteEvent;
    public event Action tenMinuteEvent;
    public event Action halfHourEvent;
    public event Action hourEvent;
    public event Action halfMinuteEvent;
    int secondBuf = -1;
    int fiveSecondBuf = -1;
    int minuteBuf = -1;
    int fiveMinuteBuf = -1;
    int tenMinuteBuf = -1;
    int halfHourBuf = -1;
    int hourBuf = -1;
    int halfMinuteBuf = -1;
    public void Begin()
    {
    }
    private void Update()
    {
        var second = DateTime.Now.Second;
        if (second != secondBuf)
        {
            if (secondEvent != null)
            {
                secondEvent();
            }
            secondBuf = second;
        }
        var fiveSecond = second / 5;
        if (fiveSecondBuf != fiveSecond)
        {
            try
            {
                if (fiveSecondEvent != null)
                {
                    fiveSecondEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                fiveSecondBuf = fiveSecond;
            }
        }
        var minute = DateTime.Now.Minute;
        if (minuteBuf != minute)
        {
            try
            {
                if (minuteEvent != null)
                {
                    minuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                minuteBuf = minute;
            }
        }
        var thirtySeconds = second / 30;
        if (halfMinuteBuf != thirtySeconds)
        {
            try
            {
                if (halfMinuteEvent != null)
                {
                    halfMinuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                halfMinuteBuf = thirtySeconds;
            }
        }
        var fiveMinute = minute / 5;
        if (fiveMinuteBuf != fiveMinute)
        {
            try
            {
                if (fiveMinuteEvent != null)
                {
                    fiveMinuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                fiveMinuteBuf = fiveMinute;
            }
        }
        var tenMinute = minute / 10;
        if (tenMinuteBuf != tenMinute)
        {
            try
            {
                if (tenMinuteEvent != null)
                {
                    tenMinuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                tenMinuteBuf = tenMinute;
            }
        }
        var thirtyMinute = minute / 30;
        if (halfHourBuf != thirtyMinute)
        {
            try
            {
                if (halfHourEvent != null)
                {
                    halfHourEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                halfHourBuf = thirtyMinute;
            }
        }
        var hour = DateTime.Now.Hour;
        if (hourBuf != hour)
        {
            try
            {
                if (hourEvent != null)
                {
                    hourEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                hourBuf = hour;
            }
        }
    }
}
Main/Utility/GlobalTimeEvent.cs.meta
Main/Utility/LayerUtility.cs
Main/Utility/LayerUtility.cs.meta
Main/Utility/LocalSave.cs
Main/Utility/LocalSave.cs.meta
Main/Utility/MathUtility.cs
Main/Utility/MathUtility.cs.meta
Main/Utility/MathUtils.cs
Main/Utility/MathUtils.cs.meta
Main/Utility/PathUtility.cs
Main/Utility/PathUtility.cs.meta
Main/Utility/ProfilerPanel.cs
Main/Utility/ProfilerPanel.cs.meta
Main/Utility/RenderOrder.cs
Main/Utility/RenderOrder.cs.meta
Main/Utility/RenderTextureCreator.cs
File was renamed from Utility/RenderTextureCreator.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using UnityEngine;
public class RenderTextureCreator : MonoBehaviour
public class RenderTextureCreator : MonoBehaviour
{
    [SerializeField] Vector2 m_Size;
    [SerializeField] Camera m_TargetCamera;
@@ -10,47 +10,47 @@
    static Dictionary<Vector2, RenderTexture> m_RenderTexDict = new Dictionary<Vector2, RenderTexture>();
    private void Awake()
    {
        if (m_TargetCamera != null && m_TargetCamera.targetTexture == null)
        {
            RenderTexture rt;
            if (m_Reuse && GetRenderTexture(m_Size, out rt))
            {
                m_TargetCamera.targetTexture = rt;
                return;
            }
            rt = new RenderTexture(Mathf.RoundToInt(m_Size.x), Mathf.RoundToInt(m_Size.y), 16);
            switch (Application.platform)
            {
                case RuntimePlatform.OSXEditor:
                case RuntimePlatform.WindowsEditor:
                case RuntimePlatform.WindowsPlayer:
                    rt.format = RenderTextureFormat.ARGB32;
                    break;
                default:
                    rt.format = RenderTextureFormat.ARGB4444;
                    break;
            }
            rt.useMipMap = false;
            rt.wrapMode = TextureWrapMode.Clamp;
            rt.filterMode = FilterMode.Bilinear;
            m_TargetCamera.targetTexture = rt;
            if (!m_RenderTexDict.ContainsKey(m_Size))
            {
                m_RenderTexDict.Add(m_Size, rt);
            }
        }
    private void Awake()
    {
        if (m_TargetCamera != null && m_TargetCamera.targetTexture == null)
        {
            RenderTexture rt;
            if (m_Reuse && GetRenderTexture(m_Size, out rt))
            {
                m_TargetCamera.targetTexture = rt;
                return;
            }
            rt = new RenderTexture(Mathf.RoundToInt(m_Size.x), Mathf.RoundToInt(m_Size.y), 16);
            switch (Application.platform)
            {
                case RuntimePlatform.OSXEditor:
                case RuntimePlatform.WindowsEditor:
                case RuntimePlatform.WindowsPlayer:
                    rt.format = RenderTextureFormat.ARGB32;
                    break;
                default:
                    rt.format = RenderTextureFormat.ARGB4444;
                    break;
            }
            rt.useMipMap = false;
            rt.wrapMode = TextureWrapMode.Clamp;
            rt.filterMode = FilterMode.Bilinear;
            m_TargetCamera.targetTexture = rt;
            if (!m_RenderTexDict.ContainsKey(m_Size))
            {
                m_RenderTexDict.Add(m_Size, rt);
            }
        }
    }
    public static bool GetRenderTexture(Vector2 _Size, out RenderTexture _tex)
    {
        return m_RenderTexDict.TryGetValue(_Size, out _tex);
    public static bool GetRenderTexture(Vector2 _Size, out RenderTexture _tex)
    {
        return m_RenderTexDict.TryGetValue(_Size, out _tex);
    }
}
Main/Utility/RenderTextureCreator.cs.meta
Main/Utility/ResolutionUtility.cs
File was renamed from Utility/ResolutionUtility.cs
@@ -1,64 +1,64 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
public class ResolutionUtility
{
    public static readonly Vector2 originalResolution = new Vector2(Screen.width, Screen.height);
    public static Vector2 currentResolution = new Vector2(Screen.width, Screen.height);
    [Conditional("UNITY_ANDROID")]
    public static void AdjustResolution()
    {
        Screen.SetResolution(Mathf.RoundToInt(currentResolution.x), Mathf.RoundToInt(currentResolution.y), true);
    }
    // public static void AdjustResolution(GameQuality _quality)
    // {
    //     switch (_quality)
    //     {
    //         case GameQuality.Low:
    //             currentResolution = ConvertResolution(new Vector2(1280, 720));
    //             break;
    //         case GameQuality.Medium:
    //             currentResolution = ConvertResolution(new Vector2(1920, 1080));
    //             break;
    //         case GameQuality.High:
    //             currentResolution = ConvertResolution(new Vector2(1920, 1080));
    //             break;
    //     }
    //     Screen.SetResolution(Mathf.RoundToInt(currentResolution.x), Mathf.RoundToInt(currentResolution.y), true);
    // }
    static Vector2 ConvertResolution(Vector2 _inputResolution)
    {
        var resolution = Screen.currentResolution;
        var ratio = (resolution.width / (float)resolution.height) / ((float)16 / 9);
        var height = 0f;
        var width = 0f;
        if (ratio > 1)
        {
            height = _inputResolution[1];
            width = Mathf.RoundToInt(resolution.width / (float)resolution.height * height);
        }
        else
        {
            width = _inputResolution[0];
            height = Mathf.RoundToInt((float)resolution.height / resolution.width * width);
        }
        if (height * width - originalResolution.x * originalResolution.y > 10)
        {
            return originalResolution;
        }
        else
        {
            return new Vector2(width, height);
        }
    }
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
public class ResolutionUtility
{
    public static readonly Vector2 originalResolution = new Vector2(Screen.width, Screen.height);
    public static Vector2 currentResolution = new Vector2(Screen.width, Screen.height);
    [Conditional("UNITY_ANDROID")]
    public static void AdjustResolution()
    {
        Screen.SetResolution(Mathf.RoundToInt(currentResolution.x), Mathf.RoundToInt(currentResolution.y), true);
    }
    // public static void AdjustResolution(GameQuality _quality)
    // {
    //     switch (_quality)
    //     {
    //         case GameQuality.Low:
    //             currentResolution = ConvertResolution(new Vector2(1280, 720));
    //             break;
    //         case GameQuality.Medium:
    //             currentResolution = ConvertResolution(new Vector2(1920, 1080));
    //             break;
    //         case GameQuality.High:
    //             currentResolution = ConvertResolution(new Vector2(1920, 1080));
    //             break;
    //     }
    //     Screen.SetResolution(Mathf.RoundToInt(currentResolution.x), Mathf.RoundToInt(currentResolution.y), true);
    // }
    static Vector2 ConvertResolution(Vector2 _inputResolution)
    {
        var resolution = Screen.currentResolution;
        var ratio = (resolution.width / (float)resolution.height) / ((float)16 / 9);
        var height = 0f;
        var width = 0f;
        if (ratio > 1)
        {
            height = _inputResolution[1];
            width = Mathf.RoundToInt(resolution.width / (float)resolution.height * height);
        }
        else
        {
            width = _inputResolution[0];
            height = Mathf.RoundToInt((float)resolution.height / resolution.width * width);
        }
        if (height * width - originalResolution.x * originalResolution.y > 10)
        {
            return originalResolution;
        }
        else
        {
            return new Vector2(width, height);
        }
    }
}
Main/Utility/ResolutionUtility.cs.meta
Main/Utility/SnxxzUtility.cs
Main/Utility/SnxxzUtility.cs.meta
Main/Utility/SystemCMD.cs
Main/Utility/SystemCMD.cs.meta
Main/Utility/TAny.cs
Main/Utility/TAny.cs.meta
Main/Utility/TBlackBoard.cs
Main/Utility/TBlackBoard.cs.meta
Main/Utility/TransformExtension.cs
Main/Utility/TransformExtension.cs.meta
Main/Utility/UGUIEventListenerContainDrag.cs
Main/Utility/UGUIEventListenerContainDrag.cs.meta
Main/Utility/UIParamCopyTool.cs
Main/Utility/UIParamCopyTool.cs.meta
Main/Utility/VectorUtility.cs
Main/Utility/VectorUtility.cs.meta
Main/Utility/VesselExtension.cs
Main/Utility/VesselExtension.cs.meta