| using UnityEngine; | 
| using System.Collections.Generic; | 
| using System; | 
| using LitJson; | 
|   | 
|   | 
| public class PlayerDatas : Singleton<PlayerDatas> | 
| { | 
|     public uint PlayerId { get { return baseData.PlayerID; } } | 
|   | 
|     PlayerBaseData m_Base = new PlayerBaseData(); | 
|     public PlayerBaseData baseData { get { return m_Base; } } | 
|   | 
|     PlayerExtersionData m_Extersion = new PlayerExtersionData(); | 
|     public PlayerExtersionData extersion { get { return m_Extersion; } } | 
|   | 
|     //仙盟 | 
|     public PlayerFairyData fairyData = new PlayerFairyData(); | 
|   | 
|     // PlayerSkillDatas m_Skill = new PlayerSkillDatas(); | 
|     // public PlayerSkillDatas skill { get { return m_Skill; } } | 
|     // PlayerMethodData method { get { return ModelCenter.Instance.GetModel<PlayerMethodData>(); } } | 
|     // StoreModel StoreModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } } | 
|     // DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel<DungeonAssistModel>(); } } | 
|   | 
|     public int totalExpRate { get; set; } | 
|     public uint worldLv { get; private set; } | 
|     public uint worldExpRate { get; private set; } | 
|     public List<uint> maliciousAtkPlayer = new List<uint>();// 发动恶意攻击的玩家列表 | 
|     private int m_Tick; | 
|     public uint changeLV = 0; //当前升x级 | 
|   | 
|     public event Action worldLevelUpdateEvent; | 
|   | 
|     public event Action playerDataUpdateEvent;    // 无区别更新,慎用 | 
|     public event Action<PlayerDataType> playerDataRefreshEvent; | 
|     public event Action<PlayerDataType, int> attributePromoteEvent; | 
|     public event Action<long> spNewGetEvent; | 
|   | 
|   | 
|     private Dictionary<PlayerDataType, ulong> PlayerDataDict = new Dictionary<PlayerDataType, ulong>(); | 
|   | 
|     public void InitPlayerData(H0102_tagCDBPlayer data) | 
|     { | 
|         baseData.UpdateData(data); | 
|         if (playerDataUpdateEvent != null) | 
|         { | 
|             playerDataUpdateEvent(); | 
|         } | 
|     } | 
|   | 
|     public void RefreshPlayerData(H0418_tagObjInfoRefresh vNetData) | 
|     { | 
|         UpdatePlayerData(vNetData); | 
|         //StoreModel.RefreshTCBPlayerData(vNetData); | 
|   | 
|     } | 
|   | 
|   | 
|     private void UpdatePlayerData(H0418_tagObjInfoRefresh vNetData) | 
|     { | 
|         if (baseData != null && vNetData.ObjID == baseData.PlayerID) | 
|         { | 
|             RefreshProperty((PlayerDataType)vNetData.RefreshType, vNetData.Value, vNetData.ValueEx); | 
|   | 
|             if (PlayerDataDict.ContainsKey((PlayerDataType)vNetData.RefreshType)) | 
|             { | 
|                 PlayerDataDict[(PlayerDataType)vNetData.RefreshType] = vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue; | 
|             } | 
|             else | 
|             { | 
|                 PlayerDataDict.Add((PlayerDataType)vNetData.RefreshType, vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue); | 
|             } | 
|   | 
|             if (playerDataRefreshEvent != null) | 
|             { | 
|                 playerDataRefreshEvent((PlayerDataType)vNetData.RefreshType); | 
|             } | 
|         } | 
|     } | 
|   | 
|     public void RefreshProperty(PlayerDataType _type, uint value, uint valueEx) | 
|     { | 
|         switch (_type) | 
|         { | 
|             case PlayerDataType.AccountID: | 
|                 baseData.AccID = value.ToString(); | 
|                 break; | 
|             case PlayerDataType.PlayerID: | 
|                 baseData.PlayerID = value; | 
|                 break; | 
|             case PlayerDataType.Job: | 
|                 baseData.Job = (byte)value; | 
|                 break; | 
|             case PlayerDataType.LV: | 
|                 changeLV = value - baseData.LV; | 
|                 baseData.LV = (ushort)value; | 
|                 if (changeLV > 0) | 
|                 { | 
|                     SDKUtils.Instance.RoleLevelUp(); | 
|                 } | 
|                 break; | 
|             case PlayerDataType.TotalExp: | 
|                 baseData.TotalExp = value; | 
|                 break; | 
|             case PlayerDataType.Family: | 
|                 baseData.FamilyId = value; | 
|                 if (LocalSave.GetInt("FimilyReport" + PlayerDatas.Instance.baseData.PlayerID) == 0) | 
|                 { | 
|                     SDKUtils.Instance.TraceEvent("joinalliance", "", false); | 
|                     LocalSave.SetInt("FimilyReport" + PlayerDatas.Instance.baseData.PlayerID, 1); | 
|                 } | 
|                 break; | 
|             case PlayerDataType.Gold: | 
|                 baseData.diamond = value; | 
|                 break; | 
|             case PlayerDataType.GoldPaper: | 
|                 baseData.bindDiamond = value; | 
|                 break; | 
|             case PlayerDataType.Silver: | 
|                 baseData.copper = value; | 
|                 break; | 
|             case PlayerDataType.MapID: | 
|                 baseData.MapID = (ushort)value; | 
|                 break; | 
|             case PlayerDataType.PosX: | 
|                 baseData.PosX = (ushort)value;//角色坐标x | 
|                 break; | 
|             case PlayerDataType.PosY: | 
|                 baseData.PosY = (ushort)value;//角色坐标y | 
|                 break; | 
|             case PlayerDataType.ExpRate: | 
|                 extersion.ExpRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.DEF: | 
|                 extersion.DEF = (int)value; | 
|                 break; | 
|             case PlayerDataType.FreePoint: | 
|                 baseData.FreePoint = value; | 
|                 break; | 
|             case PlayerDataType.FreeSkillPoint: | 
|                 baseData.FreeSkillPoint = value; | 
|                 break; | 
|             case PlayerDataType.STR: | 
|                 baseData.STR = (int)value; | 
|                 break; | 
|             case PlayerDataType.PNE: | 
|                 baseData.PNE = (int)value; | 
|                 break; | 
|             case PlayerDataType.PHY: | 
|                 baseData.PHY = (int)value; | 
|                 break; | 
|             case PlayerDataType.CON: | 
|                 baseData.CON = (int)value; | 
|                 break; | 
|             case PlayerDataType.MINATK: | 
|                 extersion.MINATK = (int)value; | 
|                 break; | 
|             case PlayerDataType.MAXATK: | 
|                 extersion.MAXATK = (int)value; | 
|                 break; | 
|             case PlayerDataType.HIT: | 
|                 extersion.HIT = (int)value; | 
|                 break; | 
|             case PlayerDataType.REALATK: | 
|                 extersion.realATK = (int)value; | 
|                 break; | 
|             case PlayerDataType.REALDEF: | 
|                 extersion.realDEF = (int)value; | 
|                 break; | 
|             case PlayerDataType.Miss: | 
|                 extersion.Miss = (int)value; | 
|                 break; | 
|             case PlayerDataType.SuperHit: | 
|                 extersion.SuperHit = (int)value; | 
|                 break; | 
|             case PlayerDataType.NameColor: | 
|             case PlayerDataType.AtkInterval: | 
|                 extersion.AtkInterval = (int)value; | 
|                 break; | 
|             case PlayerDataType.Speed: | 
|                 extersion.Speed = (int)value; | 
|                 break; | 
|             case PlayerDataType.SuperHitRate: | 
|                 extersion.SuperHitRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.PickupDist: | 
|                 extersion.PickupDist = (int)value; | 
|                 break; | 
|             case PlayerDataType.FBID: | 
|                 baseData.FBID = (byte)value; | 
|                 break; | 
|             case PlayerDataType.RealMapID: | 
|                 extersion.RealMapID = (int)value; | 
|                 break; | 
|             case PlayerDataType.GMLevel: | 
|                 baseData.GMLevel = (byte)value; | 
|                 break; | 
|             case PlayerDataType.TeamID: | 
|                 break; | 
|             case PlayerDataType.TeamLV: | 
|                 break; | 
|             case PlayerDataType.FightPower: | 
|                 baseData.FightPoint = value + valueEx * Constants.ExpPointValue; | 
|                 PlayerMainDate.Instance.PowerAdd(baseData.FightPoint); | 
|                 break; | 
|             case PlayerDataType.Tick: | 
| #if UNITY_EDITOR | 
|                 Debug.LogFormat("---- 收到服务端Tick: {0}", value); | 
|                 if (extersion.Tick != 0) | 
|                 { | 
|                     uint _curWorldTick = GetWorldTick(); | 
|                     uint _diffValue = value > _curWorldTick ? value - _curWorldTick : _curWorldTick - value; | 
|                     Debug.LogFormat(" |-------- 当前客户端Tick: {0}, 差异: {1}", _curWorldTick, _diffValue); | 
|                     if (_diffValue > 5000) | 
|                     { | 
|                         Debug.LogFormat(" |-------- <color=red>收到服务端WorldTick与当前的客户端Tick差异超过5秒</color>"); | 
|                     } | 
|                 } | 
| #endif | 
|                 extersion.Tick = value; | 
|                 m_Tick = Environment.TickCount; | 
|   | 
|                 break; | 
|             case PlayerDataType.EquipShowSwitch: | 
|                 baseData.equipShowSwitch = value; | 
|   | 
|                 break; | 
|             case PlayerDataType.LuckValue: | 
|                 extersion.luckValue = (int)value; | 
|                 break; | 
|             case PlayerDataType.ExAttr1: | 
|                 baseData.ExAttr1 = value; | 
|                 break; | 
|             case PlayerDataType.ExAttr2: | 
|                 baseData.teamAutoOperateFlag = value; | 
|                 break; | 
|             case PlayerDataType.ExAttr3: | 
|                 baseData.dungeonLineId = (int)value % 1000; | 
|                 baseData.dungeonMapId = (int)value / 1000; | 
|                 break; | 
|             case PlayerDataType.ExAttr4: | 
|                 baseData.shield = value; | 
|                 break; | 
|   | 
|             case PlayerDataType.Faction: | 
|                 baseData.faction = value; | 
|                 break; | 
|             case PlayerDataType.RealmLevel: | 
|                 baseData.realmLevel = (byte)value; | 
|                 break; | 
|             case PlayerDataType.ChangeCoinPointTotal: | 
|                 baseData.coinPointTotal = value; | 
|                 break; | 
|             case PlayerDataType.VIPLv: | 
|                 baseData.VIPLv = (byte)value; | 
|                 break; | 
|             case PlayerDataType.ExAttr6: | 
|                 baseData.copperExtend = value; | 
|                 break; | 
|             case PlayerDataType.ExAttr10: | 
|                 baseData.bubbleId = value; | 
|                 break; | 
|             case PlayerDataType.ExAttr11: | 
|                 baseData.ExAttr11 = value; | 
|                 break; | 
|             case PlayerDataType.ExAttr13: | 
|                 baseData.ServerGroupId = value; | 
|                 break; | 
|             case PlayerDataType.BattleValEx1: | 
|                 extersion.battleValEx1 = (int)value; | 
|                 break; | 
|             case PlayerDataType.BattleValEx3: | 
|                 extersion.battleValEx3 = (int)value; | 
|                 break; | 
|             case PlayerDataType.DamageReduceRate: | 
|                 extersion.damageReduceRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.LuckyHitRate: | 
|                 extersion.luckHitRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.LuckyHitVal: | 
|                 extersion.luckHitVal = (int)value; | 
|                 break; | 
|             case PlayerDataType.ExpPoint: | 
|                 baseData.ExpPoint = value; | 
|                 break; | 
|             case PlayerDataType.Rune: | 
|                 extersion.runeChip = (int)value; | 
|                 break; | 
|             case PlayerDataType.RuneSplinters: | 
|                 extersion.runeEssence = (int)value; | 
|                 break; | 
|             case PlayerDataType.SuperHitReduce: | 
|                 extersion.SuperHitReduce = (int)value; | 
|                 break; | 
|             case PlayerDataType.LuckyHitRateReduce: | 
|                 extersion.LuckyHitRateReduce = (int)value; | 
|                 break; | 
|             case PlayerDataType.SkillAtkRateReduce: | 
|                 extersion.skillAtkRateReduce = (int)value; | 
|                 break; | 
|             case PlayerDataType.SkillAtkRate: | 
|                 extersion.SkillAtkRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.DamagePVP: | 
|                 extersion.DamagePVP = (int)value; | 
|                 break; | 
|             case PlayerDataType.HPRestorePer: | 
|                 extersion.HPRestorePer = (int)value; | 
|                 break; | 
|             case PlayerDataType.DamageBackRate: | 
|                 extersion.DamageBackRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.SpeedValue: | 
|                 extersion.SpeedValue = (int)value; | 
|                 break; | 
|             case PlayerDataType.PetDamPer: | 
|                 extersion.PetDamPer = (int)value; | 
|                 break; | 
|             case PlayerDataType.IgnoreDefRate: | 
|                 extersion.IgnoreDefRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.IgnoreDefRateReduce: | 
|                 extersion.IgnoreDefRateReduce = (int)value; | 
|                 break; | 
|             case PlayerDataType.DamChanceDef: | 
|                 extersion.DamChanceDef = (int)value; | 
|                 break; | 
|             case PlayerDataType.BleedDamage: | 
|                 extersion.BleedDamage = (int)value; | 
|                 break; | 
|             case PlayerDataType.BattleValEx2: | 
|                 extersion.BattleValEx2 = (int)value; | 
|                 break; | 
|             case PlayerDataType.FaintRate: | 
|                 extersion.FaintRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.FaintDefRate: | 
|                 extersion.FaintDefRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.FinalHurt: | 
|                 extersion.FinalHurt = (int)value; | 
|                 break; | 
|             case PlayerDataType.FinalHurtReduce: | 
|                 extersion.FinalHurtReduce = (int)value; | 
|                 break; | 
|             case PlayerDataType.DamagePerPVP: | 
|                 extersion.DamagePerPVP = (int)value; | 
|                 break; | 
|             case PlayerDataType.DamagePerPVPReduce: | 
|                 extersion.DamagePerPVPReduce = (int)value; | 
|                 break; | 
|             case PlayerDataType.ComboDamPer: | 
|                 extersion.ComboDamPer = (int)value; | 
|                 break; | 
|             case PlayerDataType.MaxProDef: | 
|                 extersion.MaxProDef = (int)value; | 
|                 break; | 
|             case PlayerDataType.ComboDamRate: | 
|                 extersion.ComboDamPerRate = (int)value; | 
|                 break; | 
|             case PlayerDataType.RealmPoint: | 
|                 extersion.realmPoint = (int)value; | 
|                 break; | 
|             case PlayerDataType.MagicEssence: | 
|                 extersion.magicEssence = (int)value; | 
|                 break; | 
|             case PlayerDataType.PlayerPKState: | 
|                 extersion.pkState = (int)value; | 
|                 break; | 
|             case PlayerDataType.IsAttackBossState: | 
|                 extersion.bossState = (int)value; | 
|                 break; | 
|             case PlayerDataType.BasicsMinimum: | 
|                 baseData.BasicsMinimum = (int)value; | 
|                 break; | 
|             case PlayerDataType.BasicsMaxAttack: | 
|                 baseData.BasicsMaxAttack = (int)value; | 
|                 break; | 
|             case PlayerDataType.BasicsLife: | 
|                 baseData.BasicsLife = (int)value; | 
|                 break; | 
|             case PlayerDataType.BasicsDefense: | 
|                 baseData.BasicsDefense = (int)value; | 
|                 break; | 
|             case PlayerDataType.BasicsScoreAHit: | 
|                 baseData.BasicsScoreAHit = (int)value; | 
|                 break; | 
|             case PlayerDataType.BasicsDodge: | 
|                 baseData.BasicsDodge = (int)value; | 
|                 break; | 
|             case PlayerDataType.OnlyFinalHurt: | 
|                 extersion.OnlyFinalHurt = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_NPCHurtAddPer: | 
|                 extersion.NpcHurtAddPer = (int)value; | 
|                 break; | 
|             case PlayerDataType.FunalHurtPer: | 
|                 extersion.FunalHurtPer = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_ForbidenTalk: | 
|                 extersion.forbidenTalk = (int)value; | 
|                 //与服务端约定 0 单角色解封 1 单角色禁言,2设备禁言,3设备解封 | 
|                 if (value == 2) | 
|                 { | 
|                     LocalSave.SetBool("ServerForbidenChatDevice1", true); | 
|                 } | 
|                 else if (value == 3) | 
|                 { | 
|                     //任意账号解封 | 
|                     LocalSave.SetBool("ServerForbidenChatDevice1", false); | 
|                 } | 
|                 //ModelCenter.Instance.GetModel<ChatCenter>().ServerForbidenChat(extersion.forbidenTalk == 1); | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_TalentPoint: | 
|                 extersion.talentPoint = (int)value; | 
|                 break; | 
|   | 
|             case PlayerDataType.CDBPlayerRefresh_SoulDust: | 
|                 extersion.soulDust = value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SoulSplinters: | 
|                 extersion.soulSplinters = value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SoulCore: | 
|                 extersion.soulCore = value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_Honor: | 
|                 extersion.honorValue = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_ZhuxianRate: | 
|                 baseData.ExAttr16 = value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_Mater: | 
|                 baseData.mater = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_Wood: | 
|                 baseData.wood = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_Water: | 
|                 baseData.water = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_Fire: | 
|                 baseData.fire = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_Earth: | 
|                 baseData.earth = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_NormalHurt: | 
|                 baseData.NormalHurt = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_NormalHurtPer: | 
|                 baseData.NormalHurtPer = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_FabaoHurt: | 
|                 baseData.FabaoHurt = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_FabaoHurtPer: | 
|                 baseData.FabaoHurtPer = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SuperHitRateReduce: | 
|                 baseData.reduceCrit = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_LuckyHitReduce: | 
|                 baseData.reduceHeartHurt = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_FinalHurtReducePer: | 
|                 baseData.reduceFinalHurt = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillAddPerA: | 
|                 baseData.skillAddPerA = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillAddPerB: | 
|                 baseData.skillAddPerB = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillAddPerC: | 
|                 baseData.skillAddPerC = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillAddPerD: | 
|                 baseData.skillAddPerD = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillAddPerE: | 
|                 baseData.skillAddPerE = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillAddPerF: | 
|                 baseData.skillAddPerF = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillAddPerG: | 
|                 baseData.skillAddPerG = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillReducePerA: | 
|                 baseData.skillReducePerA = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillReducePerB: | 
|                 baseData.skillReducePerB = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillReducePerC: | 
|                 baseData.skillReducePerC = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillReducePerD: | 
|                 baseData.skillReducePerD = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillReducePerE: | 
|                 baseData.skillReducePerE = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillReducePerF: | 
|                 baseData.skillReducePerF = (int)value; | 
|                 break; | 
|             case PlayerDataType.CDBPlayerRefresh_SkillReducePerG: | 
|                 baseData.skillReducePerG = (int)value; | 
|                 break; | 
|             case PlayerDataType.default9: | 
|                 baseData.mapRealmSelect = (int)value; | 
|                 break; | 
|             case PlayerDataType.default10: | 
|                 baseData.leaveFamilyTime = (int)value; | 
|                 break; | 
|             case PlayerDataType.Face: | 
|                 baseData.face = (int)value; | 
|                 break; | 
|             case PlayerDataType.FacePic: | 
|                 baseData.facePic = (int)value; | 
|                 break; | 
|   | 
|         } | 
|     } | 
|   | 
|     public ulong GetPlayerDataByType(PlayerDataType type) | 
|     { | 
|         ulong value = 0; | 
|         PlayerDataDict.TryGetValue(type, out value); | 
|         return value; | 
|     } | 
|   | 
|     public void ClearPlayerData() | 
|     { | 
|         PlayerDataDict.Clear(); | 
|     } | 
|   | 
|     public void OnRefreshWorldLV(uint worldLv, uint worldExpRate) | 
|     { | 
|         this.worldLv = worldLv; | 
|         this.worldExpRate = worldExpRate; | 
|         if (worldLevelUpdateEvent != null) | 
|         { | 
|             worldLevelUpdateEvent(); | 
|         } | 
|     } | 
|   | 
|     public void OnRecv_SwitchAttackMode(byte attackMode) | 
|     { | 
|         // baseData.AttackMode = attackMode; | 
|         // if (OnSwitchAttackMode != null) | 
|         // { | 
|         //     OnSwitchAttackMode((E_AttackMode)attackMode); | 
|         // } | 
|   | 
|         // if (hero == null) | 
|         // { | 
|         //     return; | 
|         // } | 
|   | 
|         // ReCheckAttackTarget(); | 
|     } | 
|   | 
|     public void ReCheckAttackTarget(/*GA_Player _player = null*/) | 
|     { | 
|         // if (hero == null) | 
|         // { | 
|         //     return; | 
|         // } | 
|   | 
|         // if (_player == null) | 
|         // { | 
|         //     _player = hero.SelectTarget as GA_Player; | 
|         // } | 
|   | 
|         // if (_player != null) | 
|         // { | 
|         //     if (_player.CanAtked()) | 
|         //     { | 
|         //         SelectionManager.Request(SelectionManager.E_Type.Red, _player); | 
|         //     } | 
|         //     else | 
|         //     { | 
|         //         SelectionManager.Request(SelectionManager.E_Type.Green, _player); | 
|   | 
|         //         if (hero.aiHandler.IsAuto()) | 
|         //         { | 
|         //             hero.LockTarget = null; | 
|         //         } | 
|         //         else if (hero.aiHandler.currentType == E_HeroAIType.KillUntilDie) | 
|         //         { | 
|         //             hero.Behaviour.StopKillUntilDieAI(); | 
|         //         } | 
|         //     } | 
|         // } | 
|   | 
|         // hero.SwitchTarget(); | 
|     } | 
|   | 
|     /// <summary> | 
|     /// 是否是装备, 这里的装备指的是: 武器, 帽子, 衣服, 下装, 鞋子, 腰带 | 
|     /// </summary> | 
|     /// <returns></returns> | 
|     public bool IsEquip(ItemType itemType) | 
|     { | 
|         return itemType >= ItemType.Equip_Weapon && itemType <= ItemType.Equip_Shoes; | 
|     } | 
|   | 
|     public void RequestWorldTick() | 
|     { | 
|         CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick(); | 
|         GameNetSystem.Instance.SendInfo(_proto); | 
|     } | 
|   | 
|     public void ClearTick() | 
|     { | 
|         extersion.Tick = 0; | 
|     } | 
|   | 
|     public bool IsTickVaild() | 
|     { | 
|         return extersion.Tick != 0; | 
|     } | 
|   | 
|     public uint GetWorldTick() | 
|     { | 
|         int _currentTick = Environment.TickCount - m_Tick; | 
|         return extersion.Tick + (uint)_currentTick; | 
|     } | 
|   | 
| } |