hch
9 天以前 cb653cf75b17b9bdca0b5b9e6b88edf1ca72e90c
Main/Core/GameEngine/Player/PlayerDatas.cs
@@ -14,7 +14,8 @@
    PlayerExtersionData m_Extersion = new PlayerExtersionData();
    public PlayerExtersionData extersion { get { return m_Extersion; } }
    // public PlayerFairyData fairyData = new PlayerFairyData();
    //仙盟
    public PlayerFairyData fairyData = new PlayerFairyData();
    // PlayerSkillDatas m_Skill = new PlayerSkillDatas();
    // public PlayerSkillDatas skill { get { return m_Skill; } }
@@ -37,115 +38,45 @@
    public event Action<long> spNewGetEvent;
    private Dictionary<PlayerDataType, ulong> PlayerDataDict = new Dictionary<PlayerDataType, ulong>();
    private Dictionary<PlayerDataType, long> PlayerDataDict = new Dictionary<PlayerDataType, long>();
    public void InitPlayerData(H0102_tagCDBPlayer data)
    {
        baseData.UpdateData(data);
        if (playerDataUpdateEvent != null)
        {
            playerDataUpdateEvent();
        }
    }
    public void UpdatePlayerData(/*HA112_tagMCDBPlayer data*/)
    {
        // baseData.UpdateData(data);
        // if (hero != null)
        // {
        //     hero.InitBornPos(baseData.PosX, baseData.PosY);
        //     CameraController.Instance.Apply();
        // }
        // if (playerDataUpdateEvent != null)
        // {
        //     playerDataUpdateEvent();
        // }
    }
    public void FightRefreshPlayerHp(ulong hp)
    {
        RefreshProperty(PlayerDataType.HP, (uint)(hp % Constants.ExpPointValue), (uint)(hp/Constants.ExpPointValue));
        baseData.UpdateData(data);
        if (playerDataUpdateEvent != null)
        {
            playerDataUpdateEvent();
        }
    }
        if (playerDataRefreshEvent != null)
    public void RefreshPlayerData(H0418_tagObjInfoRefresh vNetData)
    {
        UpdatePlayerData(vNetData);
        //StoreModel.RefreshTCBPlayerData(vNetData);
    }
    private void UpdatePlayerData(H0418_tagObjInfoRefresh vNetData)
    {
        if (baseData != null && vNetData.ObjID == baseData.PlayerID)
        {
            playerDataRefreshEvent(PlayerDataType.HP);
            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 RefreshPlayerData(/*H0418_tagObjInfoRefresh vNetData*/)
    {
        // UpdatePlayerData(vNetData);
        // //StoreModel.RefreshTCBPlayerData(vNetData);
        // if (playerDataUpdateEvent != null)
        // {
        //     playerDataUpdateEvent();
        // }
    }
    private void UpdatePlayerData(int temp/*H0418_tagObjInfoRefresh vNetData*/)
    {
        // if (baseData != null && vNetData.ObjID == baseData.PlayerID)
        // {
        //     var deltaValue = -1; //变化值用于处理表现
        //     switch ((PlayerDataType)vNetData.RefreshType)
        //     {
        //         case PlayerDataType.MaxHP:
        //             deltaValue = (int)(vNetData.Value + vNetData.ValueEx * Constants.ExpPointValue - extersion.MaxHP);
        //             break;
        //         case PlayerDataType.MAXATK:
        //             deltaValue = (int)(vNetData.Value - extersion.MAXATK);
        //             break;
        //         case PlayerDataType.MINATK:
        //             deltaValue = (int)(vNetData.Value - extersion.MINATK);
        //             break;
        //         case PlayerDataType.DEF:
        //             deltaValue = (int)(vNetData.Value - extersion.DEF);
        //             break;
        //         case PlayerDataType.HIT:
        //             deltaValue = (int)(vNetData.Value - extersion.HIT);
        //             break;
        //         case PlayerDataType.Miss:
        //             deltaValue = (int)(vNetData.Value - extersion.Miss);
        //             break;
        //         case PlayerDataType.BattleValEx1:
        //             deltaValue = (int)(vNetData.Value - extersion.battleValEx1);
        //             break;
        //         case PlayerDataType.SpeedValue:
        //             deltaValue = (int)(vNetData.Value - extersion.SpeedValue);
        //             break;
        //         default:
        //             deltaValue = -1;
        //             break;
        //     }
        //     if (deltaValue > 0 && attributePromoteEvent != null)
        //     {
        //         attributePromoteEvent((PlayerDataType)vNetData.RefreshType, deltaValue);
        //     }
        //     RefreshProperty(vNetData.socketType == ServerType.Main, (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)
@@ -158,30 +89,10 @@
            case PlayerDataType.PlayerID:
                baseData.PlayerID = value;
                break;
            case PlayerDataType.PlayerName:
                break;
            case PlayerDataType.Sex:
                break;
            case PlayerDataType.Job:
                baseData.Job = (byte)value;
                break;
            case PlayerDataType.LV:
                if (baseData.LV != 0 && value > baseData.LV)
                {
                    //  TODO YYL 升级特效
                    // if (hero != null)
                    // {
                    //     if (PlayerDatas.Instance.baseData.MapID == 31080)
                    //     {
                    //         SFXPlayUtility.Instance.PlayBattleEffect(1156, hero);
                    //     }
                    //     else
                    //     {
                    //         SFXPlayUtility.Instance.PlayBattleEffect(1039, hero);
                    //     }
                    // }
                }
                changeLV = value - baseData.LV;
                baseData.LV = (ushort)value;
                if (changeLV > 0)
@@ -195,28 +106,10 @@
            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);
                }
                // TODO YYL
                // if (hero != null)
                // {
                //     hero.ActorInfo.familyID = value;
                //     ReCheckAttackTarget();
                // }
                break;
            case PlayerDataType.TeamHornor:
                break;
            case PlayerDataType.PKValue:
                break;
            case PlayerDataType.FamilyHornor:
                break;
            case PlayerDataType.FamilyActiveValue:
                break;
            case PlayerDataType.CountryHornor:
                break;
            case PlayerDataType.Mate:
                break;
            case PlayerDataType.Gold:
                baseData.diamond = value;
@@ -227,12 +120,6 @@
            case PlayerDataType.Silver:
                baseData.copper = value;
                break;
            case PlayerDataType.SilverPaper:
                break;
            case PlayerDataType.FightPoint:
                break;
            case PlayerDataType.HappyPoint:
                break;
            case PlayerDataType.MapID:
                baseData.MapID = (ushort)value;
                break;
@@ -241,27 +128,6 @@
                break;
            case PlayerDataType.PosY:
                baseData.PosY = (ushort)value;//角色坐标y
                break;
            case PlayerDataType.State:
                break;
            case PlayerDataType.MaxHP:
                extersion.MaxHP = value + valueEx * Constants.ExpPointValue;
                // TODO YYL
                // if (hero != null)
                // {
                //     hero.ActorInfo.ResetHp(-1, (long)extersion.MaxHP);
                // }
                break;
            case PlayerDataType.HP:
                baseData.HP = value + valueEx * Constants.ExpPointValue;
                break;
            case PlayerDataType.MaxMP:
                extersion.MaxMP = (int)value;
                break;
            case PlayerDataType.HPRestoreSetting:
                break;
            case PlayerDataType.MPRestoreSetting:
                break;
            case PlayerDataType.ExpRate:
                extersion.ExpRate = (int)value;
@@ -293,56 +159,20 @@
            case PlayerDataType.MAXATK:
                extersion.MAXATK = (int)value;
                break;
            case PlayerDataType.MAtkMin:
                break;
            case PlayerDataType.MAtkMax:
                break;
            case PlayerDataType.MDef:
                break;
            case PlayerDataType.HIT:
                extersion.HIT = (int)value;
                break;
            case PlayerDataType.POISIONATK:
                break;
            case PlayerDataType.FIREATK:
                break;
            case PlayerDataType.REALATK:
                extersion.realATK = (int)value;
                break;
            case PlayerDataType.THUNDERATK:
                break;
            case PlayerDataType.WINDATK:
                break;
            case PlayerDataType.POISIONDEF:
                break;
            case PlayerDataType.FIREDEF:
                break;
            case PlayerDataType.REALDEF:
                extersion.realDEF = (int)value;
                break;
            case PlayerDataType.THUNDERDEF:
                break;
            case PlayerDataType.WINDDEF:
                break;
            case PlayerDataType.Miss:
                extersion.Miss = (int)value;
                break;
            case PlayerDataType.SuperHit:
                extersion.SuperHit = (int)value;
                break;
            case PlayerDataType.Buff:
                break;
            case PlayerDataType.Skill:
                break;
            case PlayerDataType.Mark:
                break;
            case PlayerDataType.SettingH:
                break;
            case PlayerDataType.SettingV:
                break;
            case PlayerDataType.FightPK:
                break;
            case PlayerDataType.ActiveValue:
                break;
            case PlayerDataType.NameColor:
            case PlayerDataType.AtkInterval:
@@ -357,16 +187,8 @@
            case PlayerDataType.PickupDist:
                extersion.PickupDist = (int)value;
                break;
            case PlayerDataType.CountryLastWeekHornor:
                break;
            case PlayerDataType.LastWeekOnlineTime:
                break;
            case PlayerDataType.LastWeekFamilyActiveValue:
                break;
            case PlayerDataType.FBID:
                baseData.FBID = (byte)value;
                break;
            case PlayerDataType.FamilyLV:
                break;
            case PlayerDataType.RealMapID:
                extersion.RealMapID = (int)value;
@@ -375,103 +197,47 @@
                baseData.GMLevel = (byte)value;
                break;
            case PlayerDataType.TeamID:
                // TODO YYL
                // if (hero != null)
                // {
                //     hero.ActorInfo.teamID = value;
                //     ReCheckAttackTarget();
                // }
                break;
            case PlayerDataType.TeamLV:
                break;
            case PlayerDataType.UseHarmerCount:
                baseData.UseHarmerCount = value;
                break;
            case PlayerDataType.FightPower:
                baseData.FightPoint = value + valueEx * Constants.ExpPointValue;
                // TODO YYL
                // ModelCenter.Instance.GetModel<PlayerMainDate>().PowerAdd(baseData.FightPoint);
                break;
            case PlayerDataType.RebornMapID:
                break;
            case PlayerDataType.RebornPosX:
                break;
            case PlayerDataType.RebornPosY:
                break;
            case PlayerDataType.Coin:
                break;
            case PlayerDataType.BillboardLV:
                PlayerMainDate.Instance.prowNum = baseData.FightPower;
                baseData.FightPower = value + valueEx * Constants.ExpPointValue;
                PlayerMainDate.Instance.PowerAdd(baseData.FightPower);
                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>");
                    }
                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.CurrentPlayerType:
                break;
            case PlayerDataType.FriendFavor:
                break;
            case PlayerDataType.BackpackLV:
                break;
            case PlayerDataType.ReincarnationLV:
                break;
            case PlayerDataType.BaseSTR:
                break;
            case PlayerDataType.BasePNE:
                break;
            case PlayerDataType.BasePHY:
                break;
            case PlayerDataType.BaseCON:
                break;
            case PlayerDataType.ReceivedSalary:
                break;
            case PlayerDataType.WarehouseLV:
                break;
            case PlayerDataType.EquipShowSwitch:
                baseData.equipShowSwitch = value;
                // TODO YYL
//                 if (hero != null)
//                 {
//                     hero.SwitchSuit();
//                     hero.ReqLingGenEffect((int)(baseData.equipShowSwitch / 10 % 100), (int)(baseData.equipShowSwitch / 1000 % 1000));
//                     hero.horseAwakeId = (int)(value / 1000000);
// #if UNITY_EDITOR
//                     if (hero.horseAwakeId != 0)
//                     {
//                         Debug.LogFormat("玩家骑宠觉醒ID改变: {0}", hero.horseAwakeId);
//                     }
// #endif
//                 }
                break;
            case PlayerDataType.LuckValue:
                extersion.luckValue = (int)value;
                break;
            case PlayerDataType.ExAttr1:
                // TODO YYL
                // if (hero != null && !hero.ActorInfo.serverDie)
                // {
                //     if (hero.aiHandler.IsAuto())
                //     {
                //         hero.Behaviour.StopHandupAI(true);
                //     }
                // }
                baseData.ExAttr1 = value;
                // TODO YYL
                // if (baseData.ExAttr1 == 0)
                //     assistModel.assistGUID = string.Empty;
                baseData.ExAttr1 = Math.Max((int)value, 10100); //新号初始处理
                break;
            case PlayerDataType.ExAttr2:
                baseData.teamAutoOperateFlag = value;
                baseData.ExAttr2 = Math.Max((int)value, 10101); //新号初始处理
                break;
            case PlayerDataType.ExAttr3:
                baseData.dungeonLineId = (int)value % 1000;
@@ -480,111 +246,33 @@
            case PlayerDataType.ExAttr4:
                baseData.shield = value;
                break;
            case PlayerDataType.ExAttr5:
                var oldExAttr5 = baseData.CrossServerFlag;
                baseData.CrossServerFlag = value;
                // TODO YYL
                // if (oldExAttr5 > 2 && value <= 2)
                // {
                //     if (GameNetSystem.Instance.crossServerConnected_Loigc)
                //     {
                //         GameNetSystem.Instance.crossServerConnected_Loigc = false;
                //         GameNetSystem.Instance.DisconnectCrossServer();
                //         // TODO YYL
                //         // if (hero != null)
                //         // {
                //         //     StatusMgr.Instance.ReleaseActor(hero.ServerInstID);
                //         // }
                //         extersion.pkState = 0;
                //         baseData.MapID = baseData.mainServerMapIdRecord;
                //         baseData.dungeonLineId = 0;
                //         baseData.dungeonMapId = 0;
                //         ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData();
                //         StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
                //         {
                //             toMapId = baseData.MapID,
                //             toLineId = 0,
                //             needEmpty = true,
                //             needLoadResource = true,
                //             isClientLoadMap = true,
                //             refreshPlayerDatas = true
                //         });
                //     }
                // }
                break;
            case PlayerDataType.Faction:
                baseData.faction = value;
                // TODO YYL
                // if (hero != null)
                // {
                //     hero.ActorInfo.faction = (int)value;
                //     ReCheckAttackTarget();
                //     hero.SetFairyLeagueHeadUp(baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
                // }
                break;
            case PlayerDataType.InfamyValue:
                break;
            case PlayerDataType.RealmLevel:
                baseData.realmLevel = (byte)value;
                break;
            case PlayerDataType.IsFindByLabel:
                break;
            case PlayerDataType.IsCloseFriendLabel:
                break;
            case PlayerDataType.ChangeCoinPointTotal:
                baseData.coinPointTotal = value;
                break;
            case PlayerDataType.VIPLv:
                // TODO YYL
                // if (baseData.VIPLv <= 0 && value > 0)
                // {
                //     ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify((int)value);
                // }
                // else if (value <= 0)
                // {
                //     ModelCenter.Instance.GetModel<SetPrivateModel>().SetVipPushNotify(0);
                // }
                baseData.VIPLv = (byte)value;
                break;
            case PlayerDataType.ExAttr6:
                baseData.copperExtend = value;
                break;
            case PlayerDataType.ExAttr7:
                baseData.sp = value;
                break;
            case PlayerDataType.ExAttr8:
                baseData.spExtend = value;
                break;
            case PlayerDataType.ExAttr9:
                break;
            case PlayerDataType.ExAttr10:
                baseData.bubbleId = value;
                break;
            case PlayerDataType.ModelMark:
                break;
            case PlayerDataType.PrizeCoin:
                break;
            case PlayerDataType.ExAttr11:
                baseData.ExAttr11 = value;
                break;
            case PlayerDataType.ExAttr12:
                break;
            case PlayerDataType.ExAttr13:
                baseData.ServerGroupId = value;
                break;
            case PlayerDataType.ExAttr14:
                break;
            case PlayerDataType.BattleValEx1:
                extersion.battleValEx1 = (int)value;
                //  TODO YYL
                // if (hero != null)
                // {
                //     hero.CalculateAtkSpeed((ushort)extersion.battleValEx1);
                // }
                break;
            case PlayerDataType.BattleValEx3:
                extersion.battleValEx3 = (int)value;
@@ -606,12 +294,6 @@
                break;
            case PlayerDataType.RuneSplinters:
                extersion.runeEssence = (int)value;
                break;
            case PlayerDataType.FamilyContribution:
                // TODO YYL
                // method.CepaContribution((int)value);
                break;
            case PlayerDataType.FamilyStoreScore:
                break;
            case PlayerDataType.SuperHitReduce:
                extersion.SuperHitReduce = (int)value;
@@ -636,13 +318,6 @@
                break;
            case PlayerDataType.SpeedValue:
                extersion.SpeedValue = (int)value;
                // TODO YYL
                // if (hero != null)
                // {
                //     hero.CalculateMoveSpeed((ushort)extersion.SpeedValue);
                // }
                break;
            case PlayerDataType.DamagePVE:
                break;
            case PlayerDataType.PetDamPer:
                extersion.PetDamPer = (int)value;
@@ -697,42 +372,9 @@
                break;
            case PlayerDataType.PlayerPKState:
                extersion.pkState = (int)value;
                // TODO YYL
                // if (baseData.MapID != 31220
                //  && baseData.MapID != 32030
                //  && baseData.MapID != 22030)
                // {
                //     if (hero != null)
                //     {
                //         if (value == 1)
                //         {
                //             if (MapArea.IsOutMapArea(hero.CurMapArea, MapArea.E_Type.Neutral))
                //             {
                //                 hero.SwitchGrayName(true);
                //             }
                //         }
                //         else if (value == 0)
                //         {
                //             hero.SwitchGrayName(false);
                //             if (StatusMgr.Instance.IsExist(PlayerId, StatusMgr.Instance.redNameBuffID))
                //             {
                //                 hero.SwitchRedName(true);
                //             }
                //         }
                //     }
                // }
                break;
            case PlayerDataType.IsAttackBossState:
                extersion.bossState = (int)value;
                // TODO YYL
                // if (hero != null)
                // {
                //     if (extersion.bossState == 0)
                //     {
                //         hero.atkBossID = 0;
                //     }
                // }
                break;
            case PlayerDataType.BasicsMinimum:
                baseData.BasicsMinimum = (int)value;
@@ -778,14 +420,7 @@
            case PlayerDataType.CDBPlayerRefresh_TalentPoint:
                extersion.talentPoint = (int)value;
                break;
            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_1:
                break;
            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_2:
                break;
            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_3:
                break;
            case PlayerDataType.CDBPlayerRefresh_GodWeaponLV_4:
                break;
            case PlayerDataType.CDBPlayerRefresh_SoulDust:
                extersion.soulDust = value;
                break;
@@ -837,13 +472,6 @@
            case PlayerDataType.CDBPlayerRefresh_FinalHurtReducePer:
                baseData.reduceFinalHurt = (int)value;
                break;
            case PlayerDataType.CDBPlayerRefresh_YinjiTime:
                baseData.yinjiTime = (int)value;
                break;
            case PlayerDataType.CDBPlayerRefresh_YinjiCount:
                baseData.yinjiCount = (int)value;
                break;
            case PlayerDataType.CDBPlayerRefresh_SkillAddPerA:
                baseData.skillAddPerA = (int)value;
                break;
@@ -892,13 +520,19 @@
            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)
    public long GetPlayerDataByType(PlayerDataType type)
    {
        ulong value = 0;
        long value = 0;
        PlayerDataDict.TryGetValue(type, out value);
        return value;
    }
@@ -980,8 +614,8 @@
    }
    public void RequestWorldTick()
    {
        CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick();
    {
        CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick();
        GameNetSystem.Instance.SendInfo(_proto);
    }