少年修仙传客户端代码仓库
client_Wu Xijin
2018-09-26 a30111b5348ade586142c66ec89b2af3045e1673
3811 【前端】前期BOSS分线修改
4个文件已修改
58 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA9_Function/HA902_tagGCGameWorldBossInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/BossFakeLineUtility.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs
@@ -40,6 +40,11 @@
                BossFakeLineUtility.Instance.lastBossNpcID = 0;
                BossFakeLineUtility.Instance.inMistakeForBossAliveOverTime = Time.realtimeSinceStartup - 61;
            }
            if (_targetFight.NpcConfig.IsBoss > 1 && vNetData.KillerID == PlayerDatas.Instance.baseData.PlayerID)
            {
                BossFakeLineUtility.Instance.RecordBossKillTime(_targetFight.NpcConfig.NPCID,System.DateTime.Now);
            }
        }
        _actor.SetAnimatorSpeed(1);
Core/NetworkPackage/ServerPack/HA9_Function/HA902_tagGCGameWorldBossInfo.cs
@@ -25,6 +25,7 @@
            TransBytes(out BossInfoList[i].RecordLen, vBytes, NetDataType.WORD);
            TransBytes(out BossInfoList[i].KillRecord, vBytes, NetDataType.Chars, BossInfoList[i].RecordLen);
            TransBytes(out BossInfoList[i].RefreshSecond, vBytes, NetDataType.DWORD);
            TransBytes(out BossInfoList[i].RefreshCD, vBytes, NetDataType.DWORD);
        }
    }
@@ -35,6 +36,7 @@
        public ushort RecordLen;        // 长度
        public string KillRecord;        // 最近击杀记录时间玩家名size = RecordLen
        public uint RefreshSecond;        // 刷新倒计时, 秒    
        public uint RefreshCD;        // 刷新总CD时, 秒
    }
}
Fight/BossFakeLineUtility.cs
@@ -2,19 +2,19 @@
using System.Collections.Generic;
using UnityEngine;
using TableConfig;
using System;
using Snxxz.UI;
public class BossFakeLineUtility : Singleton<BossFakeLineUtility>
{
    int m_MakeFakeLineTimes = 0;
    public int makeFakeLineTimes
    {
    public int makeFakeLineTimes {
        get { return m_MakeFakeLineTimes; }
        set { m_MakeFakeLineTimes = Mathf.Clamp(value, 0, int.MaxValue); }
    }
    bool m_ShowFakeLine = false;
    public bool showFakeLine
    {
    public bool showFakeLine {
        get { return m_ShowFakeLine; }
        set { m_ShowFakeLine = value; }
    }
@@ -63,5 +63,46 @@
        }
    }
    FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
    Dictionary<int, DateTime> bossKillTimes = new Dictionary<int, DateTime>();
    public void RecordBossKillTime(int npcId, DateTime time)
    {
        var key = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_", npcId);
        bossKillTimes[npcId] = time;
        LocalSave.SetString(key, time.ToString());
    }
    public bool TryGetBossKillTime(int npcId, out DateTime time)
    {
        if (bossKillTimes.ContainsKey(npcId))
        {
            time = bossKillTimes[npcId];
            return true;
        }
        var key = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "_", npcId);
        var timeString = LocalSave.GetString(key);
        var tempTime = DateTime.Now;
        if (DateTime.TryParse(timeString, out tempTime))
        {
            FindPreciousModel.BossInfo bossInfo;
            var totalCd = 0;
            if (findPreciousModel.TryGetBossInfo(npcId, out bossInfo))
            {
                totalCd = bossInfo.rebornTotalCd;
            }
            if ((int)((DateTime.Now - tempTime).TotalSeconds) < totalCd)
            {
                time = tempTime;
                bossKillTimes[npcId] = tempTime;
                return true;
            }
        }
        time = DateTime.Now;
        return false;
    }
}
System/FindPrecious/FindPreciousModel.cs
@@ -490,6 +490,7 @@
            public List<BossKillRecord> killRecords = new List<BossKillRecord>();
            public DateTime refreshTime { get; private set; }
            public Dictionary<int, bool> lineToAlives = new Dictionary<int, bool>();
            public int rebornTotalCd { get; private set; }
            public BossInfo(int _id)
            {
@@ -499,6 +500,7 @@
            public void UpdateBossInfo(HA902_tagGCGameWorldBossInfo.tagBossInfoObj _bossInfo)
            {
                isCommunalAlive = _bossInfo.IsAlive == 1;
                rebornTotalCd = (int)_bossInfo.RefreshCD;
                killRecords.Clear();
                if (!string.IsNullOrEmpty(_bossInfo.KillRecord))
                {