少年修仙传客户端代码仓库
client_linchunjie
2018-08-28 95e0544aa36854c34c433c46dc4fb34b15b3a528
2960 抢Boss活动(提交封包代码)
6个文件已修改
12个文件已添加
511 ■■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/FairyGrabBossConfig.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/FairyGrabBossConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToGameServer/CAC_Activity/CAC04_tagCGQueryAllFamilyBossHurt.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToGameServer/CAC_Activity/CAC04_tagCGQueryAllFamilyBossHurt.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA2_Interaction/CA228_tagCMQueryFamilyBossHurt.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA2_Interaction/CA228_tagCMQueryFamilyBossHurt.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA715_tagMCFamilyBossHurtList.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA715_tagMCFamilyBossHurtList.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAC_Activity/DTCAC10_tagGCAllFamilyBossHurtInfoList.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAC_Activity/DTCAC10_tagGCAllFamilyBossHurtInfoList.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA7_Interaction/HA715_tagMCFamilyBossHurtList.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA7_Interaction/HA715_tagMCFamilyBossHurtList.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAC_Activity/HAC10_tagGCAllFamilyBossHurtInfoList.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAC_Activity/HAC10_tagGCAllFamilyBossHurtInfoList.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossWin.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -11,6 +11,8 @@
    public static void Init()
    {
        // 登记相应的数据体及对应的数据转逻辑类
        Register(typeof(HAC10_tagGCAllFamilyBossHurtInfoList), typeof(DTCAC10_tagGCAllFamilyBossHurtInfoList));
        Register(typeof(HA715_tagMCFamilyBossHurtList), typeof(DTCA715_tagMCFamilyBossHurtList));
        Register(typeof(HAB04_tagMCBossRebornInfo), typeof(DTCAB04_tagMCBossRebornInfo));
        Register(typeof(HA40B_tagGCPlayerJoinFamilyWarInfo), typeof(DTCA40B_tagGCPlayerJoinFamilyWarInfo));
        Register(typeof(HA319_tagMCPackDownloadRecord), typeof(DTCA319_tagMCPackDownloadRecord));
Core/GameEngine/Model/Config/FairyGrabBossConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Monday, August 27, 2018
//    [  Date ]:           Tuesday, August 28, 2018
//--------------------------------------------------------
using UnityEngine;
@@ -13,6 +13,7 @@
        public int NPCID { get ; private set ; }
        public string PortraitID { get ; private set; } 
        public string dropItems { get ; private set; }
        public override string getKey()
        {
@@ -25,6 +26,8 @@
                NPCID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; 
            
                PortraitID = rawContents[1].Trim();
                dropItems = rawContents[2].Trim();
            }
            catch (Exception ex)
            {
Core/GameEngine/Model/Config/FairyGrabBossConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 353bb58b84bc9d74b87bcdbb10330f00
timeCreated: 1535375170
timeCreated: 1535422842
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/ClientPack/ClientToGameServer/CAC_Activity/CAC04_tagCGQueryAllFamilyBossHurt.cs
New file
@@ -0,0 +1,16 @@
using UnityEngine;
using System.Collections;
// AC 04 查询仙盟抢Boss所有Boss当前进度 #tagCGQueryAllFamilyBossHurt
public class CAC04_tagCGQueryAllFamilyBossHurt : GameNetPackBasic {
    public CAC04_tagCGQueryAllFamilyBossHurt () {
        combineCmd = (ushort)0x1801;
        _cmd = (ushort)0xAC04;
    }
    public override void WriteToBytes () {
    }
}
Core/NetworkPackage/ClientPack/ClientToGameServer/CAC_Activity/CAC04_tagCGQueryAllFamilyBossHurt.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0830d890575ec164888e6bf61b29571c
timeCreated: 1535428369
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ClientPack/ClientToMapServer/CA2_Interaction/CA228_tagCMQueryFamilyBossHurt.cs
New file
@@ -0,0 +1,22 @@
using UnityEngine;
using System.Collections;
// A2 28 查询仙盟抢Boss伤血列表 #tagCMQueryFamilyBossHurt
public class CA228_tagCMQueryFamilyBossHurt : GameNetPackBasic {
    public uint ObjID;
    public uint NPCID;
    public byte QueryType;    // 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
    public CA228_tagCMQueryFamilyBossHurt () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA228;
    }
    public override void WriteToBytes () {
        WriteBytes (ObjID, NetDataType.DWORD);
        WriteBytes (NPCID, NetDataType.DWORD);
        WriteBytes (QueryType, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA2_Interaction/CA228_tagCMQueryFamilyBossHurt.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 983c43e61a332a34298145db9e1355d6
timeCreated: 1535424857
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA715_tagMCFamilyBossHurtList.cs
New file
@@ -0,0 +1,23 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, August 28, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using Snxxz.UI;
public class DTCA715_tagMCFamilyBossHurtList : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HA715_tagMCFamilyBossHurtList;
        ModelCenter.Instance.GetModel<FairyGrabBossModel>().UpdateBossHurt(package);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA715_tagMCFamilyBossHurtList.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6a28582703aa0f745a33db2218188e29
timeCreated: 1535424983
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAC_Activity/DTCAC10_tagGCAllFamilyBossHurtInfoList.cs
New file
@@ -0,0 +1,23 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, August 28, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
public class DTCAC10_tagGCAllFamilyBossHurtInfoList : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HAC10_tagGCAllFamilyBossHurtInfoList;
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAC_Activity/DTCAC10_tagGCAllFamilyBossHurtInfoList.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 071c5cebd0dfade468e752ff2c301cdd
timeCreated: 1535428774
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HA7_Interaction/HA715_tagMCFamilyBossHurtList.cs
New file
@@ -0,0 +1,47 @@
using UnityEngine;
using System.Collections;
// A7 15 通知仙盟抢Boss伤血信息 #tagMCFamilyBossHurtList
public class HA715_tagMCFamilyBossHurtList : GameNetPackBasic {
    public uint ObjID;
    public uint NPCID;
    public byte HurtType;    // 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
    public byte IsSort;    // 是否排序过的,一般boss被击杀后会统一同步一次排序过的最终结果,其他情况下客户端自己排序
    public ushort HurtCount;    // 伤血个数
    public  tagMCFamilyBossHurt[] HurtList;    // 伤血列表
    public HA715_tagMCFamilyBossHurtList () {
        _cmd = (ushort)0xA715;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out ObjID, vBytes, NetDataType.DWORD);
        TransBytes (out NPCID, vBytes, NetDataType.DWORD);
        TransBytes (out HurtType, vBytes, NetDataType.BYTE);
        TransBytes (out IsSort, vBytes, NetDataType.BYTE);
        TransBytes (out HurtCount, vBytes, NetDataType.WORD);
        HurtList = new tagMCFamilyBossHurt[HurtCount];
        for (int i = 0; i < HurtCount; i ++) {
            HurtList[i] = new tagMCFamilyBossHurt();
            TransBytes (out HurtList[i].FamilyID, vBytes, NetDataType.DWORD);
            TransBytes (out HurtList[i].HurtID, vBytes, NetDataType.DWORD);
            TransBytes (out HurtList[i].NameLen, vBytes, NetDataType.BYTE);
            TransBytes (out HurtList[i].HurtName, vBytes, NetDataType.Chars, HurtList[i].NameLen);
            TransBytes (out HurtList[i].HurtValue, vBytes, NetDataType.DWORD);
            TransBytes (out HurtList[i].HurtValueEx, vBytes, NetDataType.DWORD);
            TransBytes (out HurtList[i].InitTick, vBytes, NetDataType.DWORD);
        }
    }
    public struct tagMCFamilyBossHurt {
        public uint FamilyID;        // 所属仙盟ID
        public uint HurtID;        // 伤血的ID, 根据伤血类型表示不同的ID, 如仙盟ID或玩家ID
        public byte NameLen;
        public string HurtName;
        public uint HurtValue;        // 累计伤血,求余1亿的值
        public uint HurtValueEx;        // 累计伤血,整除1亿的值
        public uint InitTick;        // 伤血初始tick,用于排序,先按伤血倒序排,再按tick正序排
    }
}
Core/NetworkPackage/ServerPack/HA7_Interaction/HA715_tagMCFamilyBossHurtList.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e0fd17399da94b049b20f72960faf7a8
timeCreated: 1535424939
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAC_Activity/HAC10_tagGCAllFamilyBossHurtInfoList.cs
New file
@@ -0,0 +1,43 @@
using UnityEngine;
using System.Collections;
// AC 10 仙盟抢Boss所有Boss伤血进度信息 #tagGCAllFamilyBossHurtInfoList
public class HAC10_tagGCAllFamilyBossHurtInfoList : GameNetPackBasic {
    public uint NPCID;
    public ushort NPCCount;    // 个数
    public  tagGCFamilyBossHurtInfo[] NPCHurtInfo;    // NPC伤血信息列表
    public HAC10_tagGCAllFamilyBossHurtInfoList () {
        _cmd = (ushort)0xAC10;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out NPCID, vBytes, NetDataType.DWORD);
        TransBytes (out NPCCount, vBytes, NetDataType.WORD);
        NPCHurtInfo = new tagGCFamilyBossHurtInfo[NPCCount];
        for (int i = 0; i < NPCCount; i ++) {
            NPCHurtInfo[i] = new tagGCFamilyBossHurtInfo();
            TransBytes (out NPCHurtInfo[i].NPCID, vBytes, NetDataType.DWORD);
            TransBytes (out NPCHurtInfo[i].CurHP, vBytes, NetDataType.DWORD);
            TransBytes (out NPCHurtInfo[i].CurHPEx, vBytes, NetDataType.DWORD);
            TransBytes (out NPCHurtInfo[i].MaxHP, vBytes, NetDataType.DWORD);
            TransBytes (out NPCHurtInfo[i].MaxHPEx, vBytes, NetDataType.DWORD);
            TransBytes (out NPCHurtInfo[i].FamilyID, vBytes, NetDataType.DWORD);
            TransBytes (out NPCHurtInfo[i].NameLen, vBytes, NetDataType.BYTE);
            TransBytes (out NPCHurtInfo[i].FamilyName, vBytes, NetDataType.Chars, NPCHurtInfo[i].NameLen);
        }
    }
    public struct tagGCFamilyBossHurtInfo {
        public uint NPCID;
        public uint CurHP;
        public uint CurHPEx;
        public uint MaxHP;
        public uint MaxHPEx;
        public uint FamilyID;        // 最大实时伤血仙盟
        public byte NameLen;
        public string FamilyName;
    }
}
Core/NetworkPackage/ServerPack/HAC_Activity/HAC10_tagGCAllFamilyBossHurtInfoList.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c11d8c087e7207547a6ed68826fc894b
timeCreated: 1535428733
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/DailyQuest/DailyQuestModel.cs
@@ -206,6 +206,7 @@
                case DailyQuestType.FairyLeague:
                case DailyQuestType.FairyFeast:
                case DailyQuestType.FairyTask:
                case DailyQuestType.FairyGrabBoss:
                    var _dailyConfig = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId);
                    return PlayerDatas.Instance.baseData.Family > 0 &&
                        (_dailyConfig.UnLockFuncID == 0 || FuncOpen.Instance.IsFuncOpen(_dailyConfig.UnLockFuncID));
@@ -806,6 +807,7 @@
                case DailyQuestType.HeavenBattle:
                case DailyQuestType.FairyFeast:
                case DailyQuestType.FairyLeague:
                case DailyQuestType.FairyGrabBoss:
                    return DailyQuestState.Normal;
                case DailyQuestType.GuardSky:
                    if (!fairyModel.completeGuardSky)
System/FairyAu/FairyGrabBossModel.cs
@@ -5,15 +5,18 @@
using UnityEngine;
namespace Snxxz.UI
{
    public class FairyGrabBossModel : Model
    public class FairyGrabBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        public List<int> bosses { get; private set; }
        Dictionary<int, List<Item>> dropItemDict = new Dictionary<int, List<Item>>();
        Dictionary<int, Dictionary<int, FairyGrabBossInfo>> fairyGrabBossDict = new Dictionary<int, Dictionary<int, FairyGrabBossInfo>>();
        public bool IsOpen
        {
            get
            {
                return true;
                return dailyQuestModel.GetQuestState((int)DailyQuestType.FairyGrabBoss)
                    == DailyQuestModel.DailyQuestState.Normal;
            }
        }
        int m_SelectBoss = 0;
@@ -32,17 +35,63 @@
                }
            }
        }
        public int surplusSeconds
        {
            get
            {
                DailyQuestOpenTime openTime;
                if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyGrabBoss, out openTime))
                {
                    if (openTime.InOpenTime() && openTime.IsValidServerOpenTime())
                    {
                        HourMinute hourMinute;
                        if (openTime.TryGetTodayNearestOpenTime(out hourMinute))
                        {
                            DateTime end = new DateTime(TimeUtility.Year, TimeUtility.Month, TimeUtility.Day,
                                hourMinute.hourEnd, hourMinute.minuteEnd, 0);
                            return (int)(end - TimeUtility.ServerNow).TotalSeconds;
                        }
                    }
                }
                return 0;
            }
        }
        private bool serverInited = false;
        public event Action stateUpdate;
        public event Action<int> bossSelectedEvent;
        public event Action<int, int> bossHurtUpdate;
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        public override void Init()
        {
            ParseConfig();
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
        }
        public void OnBeforePlayerDataInitialize()
        {
            serverInited = false;
        }
        public void OnPlayerLoginOk()
        {
            serverInited = true;
        }
        public override void UnInit()
        {
        }
        private void OnStageLoadFinish()
        {
            if (!(StageManager.Instance.CurrentStage is DungeonStage))
            {
                fairyGrabBossDict.Clear();
            }
        }
        void ParseConfig()
@@ -52,6 +101,137 @@
            for (int i = 0; i < configs.Count; i++)
            {
                bosses.Add(configs[i].NPCID);
                var itemArray = LitJson.JsonMapper.ToObject<int[][]>(configs[i].dropItems);
                List<Item> list = new List<Item>();
                for (int k = 0; k < itemArray.Length; k++)
                {
                    Item item = new Item()
                    {
                        id = itemArray[k][0],
                        count = itemArray[k][1],
                        bind = itemArray[k][2] == 1,
                    };
                    list.Add(item);
                }
                dropItemDict.Add(configs[i].NPCID, list);
            }
        }
        public bool TryGetDropItems(int bossId, out List<Item> dropItems)
        {
            return dropItemDict.TryGetValue(bossId, out dropItems);
        }
        /// <summary>
        /// 查询Boss伤害信息
        /// </summary>
        /// <param name="bossId"></param>
        /// <param name="queryType">0-实时仙盟伤血 1-历史仙盟伤血 2-实时玩家伤血 3-历史玩家伤血</param>
        public void QueryGrabBossHurt(int bossId, int queryType)
        {
            CA228_tagCMQueryFamilyBossHurt pak = new CA228_tagCMQueryFamilyBossHurt();
            pak.NPCID = (uint)bossId;
            pak.QueryType = (byte)queryType;
            GameNetSystem.Instance.SendInfo(pak);
        }
        public void UpdateBossHurt(HA715_tagMCFamilyBossHurtList package)
        {
            Dictionary<int, FairyGrabBossInfo> dict = null;
            FairyGrabBossInfo fairyGrabBossInfo = null;
            if (!fairyGrabBossDict.TryGetValue((int)package.NPCID, out dict))
            {
                dict = new Dictionary<int, FairyGrabBossInfo>();
                fairyGrabBossDict.Add((int)package.NPCID, dict);
            }
            if (!dict.TryGetValue(package.HurtType, out fairyGrabBossInfo))
            {
                fairyGrabBossInfo = new FairyGrabBossInfo();
                dict.Add(package.HurtType, fairyGrabBossInfo);
            }
            fairyGrabBossInfo.SetData(package);
            if (bossHurtUpdate != null)
            {
                bossHurtUpdate((int)package.NPCID, package.HurtType);
            }
        }
        public void QueryGrabBossProgress()
        {
            CAC04_tagCGQueryAllFamilyBossHurt pak = new CAC04_tagCGQueryAllFamilyBossHurt();
            GameNetSystem.Instance.SendInfo(pak);
        }
        private void SecondEvent()
        {
            if (!serverInited)
            {
                return;
            }
        }
        public class FairyGrabBossInfo
        {
            public int npcId { get; private set; }
            public int objId { get; private set; }
            public int hurtType { get; private set; }
            public int IsSort { get; private set; }
            public List<BossHurtInfo> hurtInfos = new List<BossHurtInfo>();
            public void SetData(HA715_tagMCFamilyBossHurtList package)
            {
                npcId = (int)package.NPCID;
                objId = (int)package.ObjID;
                hurtType = package.HurtType;
                IsSort = package.IsSort;
                hurtInfos.Clear();
                for (int i = 0; i < package.HurtCount; i++)
                {
                    var sHurt = package.HurtList[i];
                    var hurtInfo = new BossHurtInfo()
                    {
                        FamilyID = (int)sHurt.FamilyID,
                        HurtID = (int)sHurt.HurtID,
                        HurtName = UIHelper.ServerStringTrim(sHurt.HurtName),
                        HurtValue = (int)sHurt.HurtValue,
                        HurtValueEx = (int)sHurt.HurtValueEx,
                        InitTick = sHurt.InitTick,
                    };
                    hurtInfos.Add(hurtInfo);
                }
                if (IsSort != 1)
                {
                    hurtInfos.Sort(Compare);
                }
            }
            int Compare(BossHurtInfo x, BossHurtInfo y)
            {
                if (x.totalHurt != y.totalHurt)
                {
                    return -x.totalHurt.CompareTo(y.totalHurt);
                }
                return x.InitTick.CompareTo(y.InitTick);
            }
        }
        public struct BossHurtInfo
        {
            public int FamilyID;
            public int HurtID;        // 伤血的ID, 根据伤血类型表示不同的ID, 如仙盟ID或玩家ID
            public string HurtName;
            public int HurtValue;        // 累计伤血,求余1亿的值
            public int HurtValueEx;        // 累计伤血,整除1亿的值
            public uint InitTick;        // 伤血初始tick,用于排序,先按伤血倒序排,再按tick正序排
            public long totalHurt
            {
                get
                {
                    return HurtValue + (long)HurtValueEx * Constants.ExpPointValue;
                }
            }
        }
    }
System/FairyAu/FairyGrabBossWin.cs
@@ -14,6 +14,11 @@
    public class FairyGrabBossWin : Window
    {
        [SerializeField] CyclicScroll m_Bosses;
        [SerializeField] Text m_FairyName;
        [SerializeField] ItemCell[] m_DropItems;
        [SerializeField] Button m_KillRecord;
        [SerializeField] Button m_Goto;
        [SerializeField] Text m_SurplusTime;
        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        #region Built-in
@@ -23,10 +28,16 @@
        protected override void AddListeners()
        {
            m_KillRecord.onClick.AddListener(KillRecord);
            m_Goto.onClick.AddListener(Goto);
        }
        protected override void OnPreOpen()
        {
            DisplaySurplusTime();
            DisplayBossInfo();
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            model.bossSelectedEvent += BossSelectedEvent;
        }
        protected override void OnActived()
@@ -41,6 +52,8 @@
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            model.bossSelectedEvent -= BossSelectedEvent;
        }
        protected override void OnAfterClose()
@@ -57,10 +70,67 @@
            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectBoss));
        }
        void DisplayBossInfo()
        {
            List<Item> dropItems;
            model.TryGetDropItems(model.selectBoss, out dropItems);
            for (int i = 0; i < m_DropItems.Length; i++)
            {
                m_DropItems[i].cellBtn.RemoveAllListeners();
                if (dropItems != null && i < dropItems.Count)
                {
                    m_DropItems[i].gameObject.SetActive(true);
                    var item = dropItems[i];
                    ItemCellModel itemCellModel = new ItemCellModel(item.id, true, (ulong)item.count, item.bind ? 1 : 0);
                    m_DropItems[i].Init(itemCellModel);
                    m_DropItems[i].cellBtn.AddListener(() =>
                    {
                        ItemAttrData itemAttrData = new ItemAttrData(item.id, true, (ulong)item.count, -1, item.bind ? 1 : 0);
                        ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(itemAttrData);
                    });
                }
                else
                {
                    m_DropItems[i].gameObject.SetActive(false);
                }
            }
        }
        int DefaultSelect()
        {
            return model.bosses[0];
        }
        void DisplaySurplusTime()
        {
            var seconds = model.surplusSeconds;
            if (seconds > 0)
            {
                m_SurplusTime.text = TimeUtility.SecondsToDHMSCHS(seconds);
            }
            else
            {
                m_SurplusTime.text = Language.Get("ActivityEnd");
            }
        }
        private void Goto()
        {
        }
        private void KillRecord()
        {
        }
        private void SecondEvent()
        {
            DisplaySurplusTime();
        }
        private void BossSelectedEvent(int bossId)
        {
            DisplayBossInfo();
        }
    }
}