少年修仙传客户端代码仓库
hch
2023-10-24 34af05a856564e02eb8d5191ea7ad367213bf6e0
9911 子 [BT0.1]BOSS凭证 / [BT0.1]BOSS凭证-

# Conflicts:
# Core/GameEngine/DataToCtl/PackageRegedit.cs
# System/MainInterfacePanel/HighSettingTip.cs
5个文件已修改
22个文件已添加
1117 ■■■■■ 已修改文件
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA23_tagCMActBossTrialSubmit.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA23_tagCMActBossTrialSubmit.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA24_tagCMActBossTrialGetAward.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA24_tagCMActBossTrialGetAward.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA9A2_tagPYBillboardData.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA67_tagMCActBossTrialInfo.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA67_tagMCActBossTrialInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA68_tagMCActBossTrialPlayerInfo.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA68_tagMCActBossTrialPlayerInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA67_tagMCActBossTrialInfo.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA67_tagMCActBossTrialInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA68_tagMCActBossTrialPlayerInfo.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA68_tagMCActBossTrialPlayerInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialModel.cs 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialModel.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialRankCell.cs 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialRankCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialSubmitCell.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialSubmitCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialWin.cs 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossTrialWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/MainRedDot.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Rank/RankModel.cs 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationBossTrial.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationBossTrial.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationTimeHepler.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA23_tagCMActBossTrialSubmit.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
// AA 23 Boss历练提交凭证 #tagCMActBossTrialSubmit
public class CAA23_tagCMActBossTrialSubmit : GameNetPackBasic {
    public byte ActNum;    //活动编号
    public ushort SubmitCount;    //提交凭证个数
    public CAA23_tagCMActBossTrialSubmit () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xAA23;
    }
    public override void WriteToBytes () {
        WriteBytes (ActNum, NetDataType.BYTE);
        WriteBytes (SubmitCount, NetDataType.WORD);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA23_tagCMActBossTrialSubmit.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a76178122476c504a964eca40123b310
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA24_tagCMActBossTrialGetAward.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
// AA 24 Boss历练领奖 #tagCMActBossTrialGetAward
public class CAA24_tagCMActBossTrialGetAward : GameNetPackBasic {
    public byte ActNum;    //活动编号
    public ushort SubmitCount;    //领取凭证个数对应奖励
    public CAA24_tagCMActBossTrialGetAward () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xAA24;
    }
    public override void WriteToBytes () {
        WriteBytes (ActNum, NetDataType.BYTE);
        WriteBytes (SubmitCount, NetDataType.WORD);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA24_tagCMActBossTrialGetAward.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c3f9c749bb21974479d53dff99be7f38
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA9A2_tagPYBillboardData.cs
@@ -1,14 +1,13 @@
using UnityEngine;
using System;
// A9 A2 排行榜信息#tagPYBillboardData
public class DTCA9A2_tagPYBillboardData : DtcBasic {
    public static event Action<HA9A2_tagPYBillboardData> ReceiveBillboardDataEvent;
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HA9A2_tagPYBillboardData vNetData = vNetPack as HA9A2_tagPYBillboardData;
        if (ReceiveBillboardDataEvent != null)
            ReceiveBillboardDataEvent(vNetData);
    }
}
using UnityEngine;
using System;
using Snxxz.UI;
// A9 A2 排行榜信息#tagPYBillboardData
public class DTCA9A2_tagPYBillboardData : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HA9A2_tagPYBillboardData vNetData = vNetPack as HA9A2_tagPYBillboardData;
        ModelCenter.Instance.GetModel<RankModel>().ReceiveRankPagePackage(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA67_tagMCActBossTrialInfo.cs
New file
@@ -0,0 +1,13 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 67 Boss历练活动信息 #tagMCActBossTrialInfo
public class DTCAA67_tagMCActBossTrialInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA67_tagMCActBossTrialInfo vNetData = vNetPack as HAA67_tagMCActBossTrialInfo;
        OperationTimeHepler.Instance.UpdateBossTrialInfo(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA67_tagMCActBossTrialInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c6e9148799faec34991ac83f6a335b08
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA68_tagMCActBossTrialPlayerInfo.cs
New file
@@ -0,0 +1,13 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 68 Boss历练活动玩家信息 #tagMCActBossTrialPlayerInfo
public class DTCAA68_tagMCActBossTrialPlayerInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA68_tagMCActBossTrialPlayerInfo vNetData = vNetPack as HAA68_tagMCActBossTrialPlayerInfo;
        ModelCenter.Instance.GetModel<BossTrialModel>().UpdateHActBossTrialPlayerInfo(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA68_tagMCActBossTrialPlayerInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c48143803fbc6bf4aa2ecde32c1c537e
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA67_tagMCActBossTrialInfo.cs
New file
@@ -0,0 +1,79 @@
using UnityEngine;
using System.Collections;
// AA 67 Boss历练活动信息 #tagMCActBossTrialInfo
public class HAA67_tagMCActBossTrialInfo : GameNetPackBasic {
    public byte ActNum;    // 活动编号
    public string StartDate;    // 开始日期 y-m-d
    public string EndtDate;    // 结束日期 y-m-d
    public byte IsDayReset;    // 是否每天重置
    public byte ResetType;    // 重置类型,0-0点重置;1-5点重置
    public ushort LimitLV;    // 限制等级
    public byte SubmitCount;
    public  tagMCActBossTrialSubmitInfo[] SubmitInfoList;    // 提交凭证信息列表
    public byte BillardCount;
    public  tagMCActBossTrialBillard[] BillboardInfoList;    // 榜单信息列表
    public HAA67_tagMCActBossTrialInfo () {
        _cmd = (ushort)0xAA67;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out ActNum, vBytes, NetDataType.BYTE);
        TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out IsDayReset, vBytes, NetDataType.BYTE);
        TransBytes (out ResetType, vBytes, NetDataType.BYTE);
        TransBytes (out LimitLV, vBytes, NetDataType.WORD);
        TransBytes (out SubmitCount, vBytes, NetDataType.BYTE);
        SubmitInfoList = new tagMCActBossTrialSubmitInfo[SubmitCount];
        for (int i = 0; i < SubmitCount; i ++) {
            SubmitInfoList[i] = new tagMCActBossTrialSubmitInfo();
            TransBytes (out SubmitInfoList[i].RecordIndex, vBytes, NetDataType.BYTE);
            TransBytes (out SubmitInfoList[i].NeedCount, vBytes, NetDataType.WORD);
            TransBytes (out SubmitInfoList[i].Count, vBytes, NetDataType.BYTE);
            SubmitInfoList[i].AwardItemList = new tagMCActBossTrialItem[SubmitInfoList[i].Count];
            for (int j = 0; j < SubmitInfoList[i].Count; j ++) {
                SubmitInfoList[i].AwardItemList[j] = new tagMCActBossTrialItem();
                TransBytes (out SubmitInfoList[i].AwardItemList[j].ItemID, vBytes, NetDataType.DWORD);
                TransBytes (out SubmitInfoList[i].AwardItemList[j].ItemCount, vBytes, NetDataType.WORD);
                TransBytes (out SubmitInfoList[i].AwardItemList[j].IsBind, vBytes, NetDataType.BYTE);
            }
        }
        TransBytes (out BillardCount, vBytes, NetDataType.BYTE);
        BillboardInfoList = new tagMCActBossTrialBillard[BillardCount];
        for (int i = 0; i < BillardCount; i ++) {
            BillboardInfoList[i] = new tagMCActBossTrialBillard();
            TransBytes (out BillboardInfoList[i].Rank, vBytes, NetDataType.DWORD);
            TransBytes (out BillboardInfoList[i].Count, vBytes, NetDataType.BYTE);
            BillboardInfoList[i].AwardItemList = new tagMCActBossTrialItem[BillboardInfoList[i].Count];
            for (int j = 0; j < BillboardInfoList[i].Count; j ++) {
                BillboardInfoList[i].AwardItemList[j] = new tagMCActBossTrialItem();
                TransBytes (out BillboardInfoList[i].AwardItemList[j].ItemID, vBytes, NetDataType.DWORD);
                TransBytes (out BillboardInfoList[i].AwardItemList[j].ItemCount, vBytes, NetDataType.WORD);
                TransBytes (out BillboardInfoList[i].AwardItemList[j].IsBind, vBytes, NetDataType.BYTE);
            }
        }
    }
    public struct tagMCActBossTrialSubmitInfo {
        public byte RecordIndex;        // 记录索引
        public ushort NeedCount;        // 所需提交个数
        public byte Count;        // 奖励物品数
        public  tagMCActBossTrialItem[] AwardItemList;        // 奖励物品列表
    }
    public struct tagMCActBossTrialItem {
        public uint ItemID;
        public ushort ItemCount;
        public byte IsBind;
    }
    public struct tagMCActBossTrialBillard {
        public uint Rank;        // 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
        public byte Count;        // 奖励物品数
        public  tagMCActBossTrialItem[] AwardItemList;        // 奖励物品列表
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA67_tagMCActBossTrialInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 12c6de6ceeb24324ea00a6f8bd5230cc
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA68_tagMCActBossTrialPlayerInfo.cs
New file
@@ -0,0 +1,21 @@
using UnityEngine;
using System.Collections;
// AA 68 Boss历练活动玩家信息 #tagMCActBossTrialPlayerInfo
public class HAA68_tagMCActBossTrialPlayerInfo : GameNetPackBasic {
    public byte ActNum;    // 活动编号
    public ushort SubmitCount;    // 已提交凭证个数
    public uint SubmitCountAward;    // 提交凭证奖励领奖状态
    public HAA68_tagMCActBossTrialPlayerInfo () {
        _cmd = (ushort)0xAA68;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out ActNum, vBytes, NetDataType.BYTE);
        TransBytes (out SubmitCount, vBytes, NetDataType.WORD);
        TransBytes (out SubmitCountAward, vBytes, NetDataType.DWORD);
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA68_tagMCActBossTrialPlayerInfo.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f9e42a2f93bf4cb4c8475c3a5c9c92e0
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FindPrecious/BossTrialModel.cs
New file
@@ -0,0 +1,199 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
/// <summary>
/// boss历练
/// </summary>
namespace Snxxz.UI
{
    public class BossTrialModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
    {
        public OperationBossTrial operationBossTrial;
        public static Operation operaType = Operation.default27;
        public static int rankType = 33;
        int regesitType = 5;
        public bool IsOpen
        {
            get
            {
                return OperationTimeHepler.Instance.SatisfyOpenCondition(operaType);
            }
        }
        public bool IsAdvance
        {
            get
            {
                return false;
            }
        }
        public bool priorityOpen
        {
            get
            {
                return false;
            }
        }
        public event Action OnPlayerInfo;
        public event Action<int> onStateUpdate;
        public byte actNum; //对应界面
        public int submitCount;    // 已提交凭证个数
        public int submitCountAward;    // 提交凭证奖励领奖状态
        public int subItemID;   // 提交凭证物品ID
        public int goodItemID = 621; //天玄丹 增强掉落
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        public override void Init()
        {
            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
            OpenServerActivityCenter.Instance.Register(regesitType, this, (int)OpenServerActivityCenter.ActivityType.AT_Activity1);
            OperationTimeHepler.Instance.operationTimeUpdateEvent += operationTimeUpdateEvent;
            packModel.refreshItemCountEvent += RefreshItemCountEvent;
            subItemID = int.Parse(FuncConfigConfig.Get("BossTrial").Numerical1);
        }
        public void OnBeforePlayerDataInitialize()
        {
        }
        public void OnPlayerLoginOk()
        {
            UpdateRedpoint();
        }
        public override void UnInit()
        {
            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
            OperationTimeHepler.Instance.operationTimeUpdateEvent -= operationTimeUpdateEvent;
            packModel.refreshItemCountEvent -= RefreshItemCountEvent;
        }
        private void OperationEndEvent(Operation operationType, int state)
        {
            if (operationType == operaType && state == 0)
            {
                if (onStateUpdate != null)
                {
                    onStateUpdate(regesitType);
                }
                WindowCenter.Instance.Close<BossTrialWin>();
            }
        }
        private void OperationStartEvent(Operation operationType, int state)
        {
            if (operationType == operaType && state == 0)
            {
                if (onStateUpdate != null)
                {
                    onStateUpdate(regesitType);
                }
            }
        }
        private void operationTimeUpdateEvent(Operation obj)
        {
            OperationBase operationBase;
            if (!OperationTimeHepler.Instance.TryGetOperationTime(operaType, out operationBase))
            {
                return;
            }
            operationBossTrial = operationBase as OperationBossTrial;
            UpdateRedpoint();
            WindowCenter.Instance.Close<BossTrialWin>();
        }
        #region 服务端数据
        public void UpdateHActBossTrialPlayerInfo(HAA68_tagMCActBossTrialPlayerInfo netPack)
        {
            actNum = netPack.ActNum;
            submitCount = netPack.SubmitCount;
            submitCountAward = (int)netPack.SubmitCountAward;
            UpdateRedpoint();
            OnPlayerInfo?.Invoke();
        }
        private void RefreshItemCountEvent(PackType packType, int index, int itemId)
        {
            if (itemId != subItemID) return;
            if (!IsOpen) return;
            UpdateRedpoint();
        }
        #endregion
        #region 红点
        public Redpoint redpoint = new Redpoint(500);
        public void UpdateRedpoint()
        {
            redpoint.state = RedPointState.None;
            if (!IsOpen)
            {
                return;
            }
            int hasCnt = packModel.GetItemCountByID(PackType.Item, subItemID);
            var keys = operationBossTrial.bossTrialSubmitInfo.Keys.ToList();
            keys.Sort();
            //未领取和可达标时红点
            foreach (var tagetCnt in keys)
            {
                if (submitCount + hasCnt >= tagetCnt && submitCount < tagetCnt)
                {
                    redpoint.state = RedPointState.Simple;
                    break;
                }
            }
            foreach (var tagetCnt in keys)
            {
                if (submitCount < tagetCnt)
                {
                    break;
                }
                if (GetSubmitAwardState(tagetCnt) == 1)
                {
                    redpoint.state = RedPointState.Simple;
                    return;
                }
            }
        }
        //0 未达标 1 已达标未领取 2 已领取
        public int GetSubmitAwardState(int tagetCnt)
        {
            if (submitCount < tagetCnt)
            {
                return 0;
            }
            if(((int)Math.Pow(2, operationBossTrial.bossTrialSubmitInfo[tagetCnt].index) & submitCountAward) == 0)
            {
                return 1;
            }
            return 2;
        }
        #endregion
    }
}
System/FindPrecious/BossTrialModel.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3a115bec7146fb749b5968bd64803dd4
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FindPrecious/BossTrialRankCell.cs
New file
@@ -0,0 +1,77 @@
using Boo.Lang;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class BossTrialRankCell : CellView
    {
        [SerializeField] Image bgImg;
        [SerializeField] Text rankText;
        [SerializeField] Image rankImg;
        [SerializeField] Text nameText;
        [SerializeField] Text numText;
        [SerializeField] ItemCell[] items;
        RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
        BossTrialModel bossTrialModel { get { return ModelCenter.Instance.GetModel<BossTrialModel>(); } }
        public void Display(int index)
        {
            if (index < 3)
            {
                rankText.gameObject.SetActive(false);
                rankImg.gameObject.SetActive(true);
                rankImg.SetSprite("rank" + (index + 1));
            }
            else
            {
                rankText.gameObject.SetActive(true);
                rankImg.gameObject.SetActive(false);
                rankText.text = (index + 1).ToString();
            }
            var rankInfo = rankModel.GetRankPageDatas(BossTrialModel.rankType);
            if (rankInfo != null && rankInfo.ContainsKey(index))
            {
                nameText.text = UIHelper.AppendColor(TextColType.Green, rankInfo[index].name1, true);
                numText.text = rankInfo[index].cmpValue.ToString();
            }
            else
            {
                nameText.text = Language.Get("L1046");
                numText.text = "0";
            }
            //取排名最近的最大整数
            int fixIndex = 0;
            var keys = bossTrialModel.operationBossTrial.rankInfo.Keys.ToList();
            keys.Sort();
            foreach (var key in keys)
            {
                if (index < key)
                {
                    fixIndex = key;
                    break;
                }
            }
            for (int i = 0; i < items.Length; i++)
            {
                if (index < bossTrialModel.operationBossTrial.maxRank && i < bossTrialModel.operationBossTrial.rankInfo[fixIndex].Count)
                {
                    items[i].SetActive(true);
                    int itemID = bossTrialModel.operationBossTrial.rankInfo[fixIndex][i].id;
                    items[i].Init(new ItemCellModel(itemID, false, (ulong)bossTrialModel.operationBossTrial.rankInfo[fixIndex][i].count));
                    items[i].button.AddListener(() =>{
                        ItemTipUtility.Show(itemID);
                    });
                }
                else
                {
                    items[i].SetActive(false);
                }
            }
        }
    }
}
System/FindPrecious/BossTrialRankCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b8c9bbf7c707ac14a8e32f1ac25bacd5
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FindPrecious/BossTrialSubmitCell.cs
New file
@@ -0,0 +1,63 @@
using Boo.Lang;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class BossTrialSubmitCell : CellView
    {
        [SerializeField] ItemCell itemCell;
        [SerializeField] UIEffect uieffect;
        [SerializeField] Image gotImg;
        [SerializeField] Slider slider;
        [SerializeField] Text numText;
        BossTrialModel model { get { return ModelCenter.Instance.GetModel<BossTrialModel>(); } }
        public void Display(int tagetCnt)
        {
            var submitInfo = model.operationBossTrial.bossTrialSubmitInfo[tagetCnt];
            int itemID = submitInfo.items[0].id;
            var state = model.GetSubmitAwardState(tagetCnt);
            itemCell.Init(new ItemCellModel(itemID, false, (ulong)submitInfo.items[0].count));
            itemCell.button.AddListener(() => {
                if (state == 1)
                {
                    var pack = new CAA24_tagCMActBossTrialGetAward();
                    pack.ActNum = model.actNum;
                    pack.SubmitCount = (ushort)tagetCnt;
                    GameNetSystem.Instance.SendInfo(pack);
                    return;
                }
                ItemTipUtility.Show(itemID); });
            if (state == 1)
                uieffect.Play();
            else
                uieffect.Stop();
            gotImg.SetActive(state == 2);
            numText.text = Language.Get("BossTrial6", tagetCnt);
            var keys = model.operationBossTrial.bossTrialSubmitInfo.Keys.ToList();
            keys.Sort();
            //当前数量最小的整数
            int index = 0;
            foreach (var key in keys)
            {
                if (key < tagetCnt)
                {
                    index = key;
                }
                else
                {
                    break;
                }
            }
            slider.minValue = 0;
            slider.maxValue = tagetCnt - index;
            slider.value = model.submitCount - index;
        }
    }
}
System/FindPrecious/BossTrialSubmitCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d0c5fc00541c20b49ad1abee9a5b94df
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FindPrecious/BossTrialWin.cs
New file
@@ -0,0 +1,246 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, November 01, 2017
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class BossTrialWin : Window
    {
        [SerializeField] ScrollerController rankScroller;
        [SerializeField] Text myRankTxt;
        [SerializeField] Text subCount;
        [SerializeField] ItemCell goodItem;
        [SerializeField] ScrollerController awardScroller;
        [SerializeField] ItemCell subItem;
        [SerializeField] Button submit;
        [SerializeField] Button m_Close;
        [SerializeField] Slider _splitSlider;
        [SerializeField] Button _addBtn;
        [SerializeField] Button _reduceBtn;
        [SerializeField] Text _number;
        [SerializeField] Text actTime;
        RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
        BossTrialModel model { get { return ModelCenter.Instance.GetModel<BossTrialModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        float queryMyRankTime = 0;  //延迟查询我的排名
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Close.onClick.AddListener(CloseClick);
            submit.AddListener(OnSubmit);
            _splitSlider.SetListener(OnSplitValueChange);
            _addBtn.SetListener(OnClickAddBtn);
            _reduceBtn.SetListener(OnClickReduceBtn);
        }
        protected override void OnPreOpen()
        {
            rankModel.QueryRankByPage(BossTrialModel.rankType, 0, model.operationBossTrial.maxRank, 0);
            rankModel.onRankRefresh += OnRefreshRankList;
            rankScroller.OnRefreshCell += RankScroller_OnRefreshCell;
            model.OnPlayerInfo += Model_OnPlayerInfo;
            awardScroller.OnRefreshCell += AwardScroller_OnRefreshCell;
            rankModel.onMyRankRefresh += RankModel_onMyRankRefresh;
            GlobalTimeEvent.Instance.secondEvent += secondEvent;
            Display();
        }
        private void RankModel_onMyRankRefresh(int obj)
        {
            rankScroller.m_Scorller.RefreshActiveCellViews();
            var myRank = rankModel.GetMyRank(BossTrialModel.rankType);
            myRankTxt.text = myRank == null ? Language.Get("L1045") : Language.Get("L1092", myRank.index + 1);
        }
        protected override void LateUpdate()
        {
            if (queryMyRankTime <= 0) return;
            if (Time.time - queryMyRankTime < 1) return;
            rankModel.QueryRankByPage(BossTrialModel.rankType, 0, 0, 1, true);
            queryMyRankTime = 0;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            rankModel.onRankRefresh -= OnRefreshRankList;
            rankScroller.OnRefreshCell -= RankScroller_OnRefreshCell;
            model.OnPlayerInfo -= Model_OnPlayerInfo;
            awardScroller.OnRefreshCell -= AwardScroller_OnRefreshCell;
            rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh;
            GlobalTimeEvent.Instance.secondEvent -= secondEvent;
        }
        protected override void OnAfterClose()
        {
        }
        void OnSplitValueChange(float value)
        {
            _number.text = Mathf.Ceil(value).ToString();
        }
        void OnClickAddBtn()
        {
            if (_splitSlider.value < _splitSlider.maxValue)
            {
                _splitSlider.value++;
            }
        }
        void OnClickReduceBtn()
        {
            if (_splitSlider.value > _splitSlider.minValue)
            {
                _splitSlider.value--;
            }
        }
        void RefreshSlider()
        {
            _splitSlider.minValue = 1;
            _splitSlider.maxValue = Math.Max(1, packModel.GetItemCountByID(PackType.Item, model.subItemID));
            _splitSlider.value = _splitSlider.maxValue;
            _number.text = Mathf.Ceil(_splitSlider.value).ToString();
        }
        void OnCreateRankScroller()
        {
            rankScroller.Refresh();
            for (int i = 0; i < model.operationBossTrial.maxRank; i++)
            {
                rankScroller.AddCell(ScrollerDataType.Header, i);
            }
            rankScroller.Restart();
            rankScroller.m_Scorller.RefreshActiveCellViews();
            var myRank = rankModel.GetMyRank(BossTrialModel.rankType);
            myRankTxt.text = myRank == null ? Language.Get("L1045") : Language.Get("L1092", myRank.index + 1);
            if (myRank == null)
            {
                rankModel.QueryRankByPage(BossTrialModel.rankType, 0, 0, 1, true);
            }
        }
        void OnCreateSubmitScroller()
        {
            awardScroller.Refresh();
            var keys = model.operationBossTrial.bossTrialSubmitInfo.Keys.ToList();
            keys.Sort();
            for (int i = 0; i < keys.Count; i++)
            {
                int tagetCnt = keys[i];
                awardScroller.AddCell(ScrollerDataType.Header, tagetCnt);
            }
            awardScroller.Restart();
            awardScroller.m_Scorller.RefreshActiveCellViews();
        }
        void Display()
        {
            //OnCreateRankScroller();
            subCount.text = model.submitCount.ToString();
            goodItem.Init(new ItemCellModel(model.goodItemID, false, 1));
            goodItem.button.AddListener(() => {
                ItemTipUtility.Show(model.goodItemID);
            });
            subItem.Init(new ItemCellModel(model.subItemID, false, (ulong)packModel.GetItemCountByID(PackType.Item, model.subItemID)));
            subItem.button.AddListener(() => {
                ItemTipUtility.Show(model.subItemID);
            });
            RefreshSlider();
            OnCreateSubmitScroller();
        }
        void OnRefreshRankList(int type)
        {
            if(type != BossTrialModel.rankType)
            {
                return;
            }
            OnCreateRankScroller();
        }
        private void RankScroller_OnRefreshCell(ScrollerDataType type, CellView cell)
        {
            var _cell = cell.GetComponent<BossTrialRankCell>();
            _cell?.Display(cell.index);
        }
        private void AwardScroller_OnRefreshCell(ScrollerDataType type, CellView cell)
        {
            var _cell = cell.GetComponent<BossTrialSubmitCell>();
            _cell?.Display(cell.index);
        }
        private void Model_OnPlayerInfo()
        {
            subCount.text = model.submitCount.ToString();
            RefreshSlider();
            awardScroller.m_Scorller.RefreshActiveCellViews();
            subItem.countText.text = packModel.GetItemCountByID(PackType.Item, model.subItemID).ToString();
        }
        private void OnSubmit()
        {
            ushort cnt = (ushort)int.Parse(_number.text);
            if (cnt <= 0)
            {
                return;
            }
            if (packModel.GetItemCountByID(PackType.Item, model.subItemID) < cnt)
            {
                return;
            }
            var pack = new CAA23_tagCMActBossTrialSubmit();
            pack.ActNum = model.actNum;
            pack.SubmitCount = cnt;
            GameNetSystem.Instance.SendInfo(pack);
            //提交物品更新到gamesever需要时间,所以延迟查询我的排名
            queryMyRankTime = Time.time;
        }
        void secondEvent()
        {
            actTime.text = Language.Get("BossFHLanguage2", TimeUtility.SecondsToHMS(model.operationBossTrial.GetResetSurplusTime()));
        }
    }
}
System/FindPrecious/BossTrialWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 570426bd58a4c804782455ea9864a7b4
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/MainInterfacePanel/MainRedDot.cs
@@ -119,11 +119,21 @@
            RedpointCenter.Instance.redpointValueChangeEvent += OnRedpointChange;
        }
        List<int> rightTopHideRedpoints = new List<int>()
        public List<int> rightTopHideRedpoints = new List<int>()
        {
            210,
            212,
            214,
            216,
            280,
            401,
            402,
            403,
            406,
            413,
            421,
            433,
            500,
        };
        private void OnRedpointChange(int id)
System/Rank/RankModel.cs
@@ -74,7 +74,7 @@
        public event Action selectRankIdRefresh;
        public event Action selectSubRankIdRefresh;
        public event Action<int> onRankRefresh;
        public event Action<int> onMyRankRefresh;
        public override void Init()
        {
            jumpRankType = -1;
@@ -205,14 +205,29 @@
        void ReSetRankData(RankData data, H1001_tagBillboard.tagBillboardList serverData)
        {
            data.id = serverData.ID;
            data.name1 = serverData.Name1;
            data.name2 = serverData.Name2;
            data.name1 = serverData.Name1.Trim().Replace("\0", "");
            data.name2 = serverData.Name2.Trim().Replace("\0", "");
            data.subType = serverData.Type2;
            data.value1 = serverData.Value1;
            data.value2 = serverData.Value2;
            data.cmpValue = serverData.CmpValue;
            data.cmpValue2 = serverData.CmpValue2;
            data.cmpValue3 = serverData.CmpValue3;
        }
        void ReSetRankDataEx(RankData data, HA9A2_tagPYBillboardData.tagPYBillboardInfo serverData, int type)
        {
            data.id = serverData.ID;
            data.name1 = serverData.Name1.Trim().Replace("\0", "");
            data.name2 = serverData.Name2.Trim().Replace("\0", "");
            data.subType = serverData.Type2;
            data.value1 = serverData.Value1;
            data.value2 = serverData.Value2;
            data.cmpValue = serverData.CmpValue;
            data.cmpValue2 = serverData.CmpValue2;
            data.cmpValue3 = serverData.CmpValue3;
            data.index = (int)serverData.OrderIndex;
            data.type = type;
        }
        static void OnGetRankData(RankData data)
@@ -224,6 +239,86 @@
        {
        }
        #region 分页查询
        Dictionary<int, int> queryRankCD = new Dictionary<int, int>(); //查询CD
        Dictionary<int, Dictionary<int, RankData>> m_RankPageDatas = new Dictionary<int, Dictionary<int, RankData>>();  //分页查询 排名索引按字段存储 0代表第一名
        // isSelf =1 固定返回自己的排名附近10条,其他参数无效
        public void QueryRankByPage(int type, int startIndex, int count, int isSelf, bool forceQuery = false)
        {
            if (queryRankCD.ContainsKey(type) && !forceQuery)
            {
                if (Time.time - queryRankCD[type] < 3f)
                {
                    return;
                }
            }
            var pak = new CA9A2_tagCPYWatchBillboard();
            pak.Type = (byte)type;
            pak.StartIndex = (uint)startIndex;
            pak.WatchCnt = (byte)count;
            pak.IsWatchSelf = (byte)isSelf;
            GameNetSystem.Instance.SendInfo(pak);
            queryRankCD[type] = (int)Time.time;
        }
        public void ReceiveRankPagePackage(HA9A2_tagPYBillboardData package)
        {
            if (!m_RankPageDatas.ContainsKey(package.Type))
            {
                m_RankPageDatas.Add(package.Type, new Dictionary<int, RankData>());
            }
            for (int i = 0; i < package.BillboardCount; i++)
            {
                int orderIndex = (int)package.Billboard[i].OrderIndex;
                if (!m_RankPageDatas[package.Type].ContainsKey(orderIndex))
                {
                    m_RankPageDatas[package.Type][orderIndex] = new RankData();
                }
                ReSetRankDataEx(m_RankPageDatas[package.Type][orderIndex], package.Billboard[i], package.Type);
            }
            if (package.IsWatchSelf == 1)
            {
                onMyRankRefresh?.Invoke(package.Type);
            }
            else
            {
                onRankRefresh?.Invoke(package.Type);
            }
        }
        //排名从0 开始
        public Dictionary<int, RankData> GetRankPageDatas(int type)
        {
            Dictionary<int, RankData> datas = null;
            if (m_RankPageDatas.TryGetValue(type, out datas))
            {
                return datas;
            }
            return null;
        }
        public RankData GetMyRank(int type)
        {
            var playerId = PlayerDatas.Instance.baseData.PlayerID;
            Dictionary<int, RankData> rankDatas = null;
            if (m_RankPageDatas.TryGetValue(type, out rankDatas))
            {
                foreach (var item in rankDatas.Values)
                {
                    if (item.id == playerId)
                    {
                        return item;
                    }
                }
            }
            return null;
        }
        #endregion
    }
    public class RankData
@@ -238,6 +333,7 @@
        public uint cmpValue;
        public uint cmpValue2;
        public uint cmpValue3;
        public int index;   //分页查询会用到
    }
}
System/Welfare/OperationBossTrial.cs
New file
@@ -0,0 +1,70 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI
{
    public class OperationBossTrial : OperationBase
    {
        public Dictionary<int, BossTrialSubmitInfo> bossTrialSubmitInfo = new Dictionary<int, BossTrialSubmitInfo>();
        public Dictionary<int, List<Item>> rankInfo = new Dictionary<int, List<Item>>(); //根据排名显示奖励 从1开始
        public int maxRank; //根据奖励显示最大排名
        public override bool SatisfyOpenCondition()
        {
            return true;
        }
        public override void Reset()
        {
            base.Reset();
            bossTrialSubmitInfo.Clear();
            rankInfo.Clear();
            maxRank = 0;
        }
        public void ParseBossTrialInfo(HAA67_tagMCActBossTrialInfo package)
        {
            bossTrialSubmitInfo.Clear();
            for (int i = 0; i < package.SubmitInfoList.Length; i++)
            {
                List<Item> items = new List<Item>();
                for (int j = 0; j < package.SubmitInfoList[i].AwardItemList.Length; j++)
                {
                    items.Add(new Item((int)package.SubmitInfoList[i].AwardItemList[j].ItemID,
                        package.SubmitInfoList[i].AwardItemList[j].ItemCount,
                        package.SubmitInfoList[i].AwardItemList[j].IsBind));
                }
                bossTrialSubmitInfo[package.SubmitInfoList[i].NeedCount] = new BossTrialSubmitInfo()
                {
                    index = package.SubmitInfoList[i].RecordIndex,
                    items = items
                };
            }
            rankInfo.Clear();
            maxRank = 0;
            for (int i = 0; i < package.BillboardInfoList.Length; i++)
            {
                List<Item> items = new List<Item>();
                for (int j = 0; j < package.BillboardInfoList[i].AwardItemList.Length; j++)
                {
                    items.Add(new Item((int)package.BillboardInfoList[i].AwardItemList[j].ItemID,
                                               package.BillboardInfoList[i].AwardItemList[j].ItemCount,
                                               package.BillboardInfoList[i].AwardItemList[j].IsBind));
                }
                rankInfo[(int)package.BillboardInfoList[i].Rank] = items;
                maxRank = Math.Max(maxRank, (int)package.BillboardInfoList[i].Rank);
            }
        }
        public struct BossTrialSubmitInfo
        {
            public int index;
            public List<Item> items;
        }
    }
}
System/Welfare/OperationBossTrial.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 460b75c489430854882ddfb51c3e5c37
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Welfare/OperationTimeHepler.cs
@@ -907,6 +907,37 @@
            }
        }
        public void UpdateBossTrialInfo(HAA67_tagMCActBossTrialInfo package)
        {
            OperationBase operationBase = null;
            operationDict.TryGetValue(Operation.default27, out operationBase);
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                ForceStopOperation(Operation.default27);
            }
            else
            {
                if (operationBase == null)
                {
                    operationBase = new OperationBossTrial();
                    operationDict.Add(Operation.default27, operationBase);
                }
                OperationBossTrial operation = operationBase as OperationBossTrial;
                operation.Reset();
                operation.startDate = ParseOperationDate(package.StartDate);
                operation.endDate = ParseOperationDate(package.EndtDate);
                operation.limitLv = package.LimitLV;
                operation.dayReset = package.IsDayReset == 1;
                operation.resetType = package.ResetType;
                operation.ActNum = package.ActNum;
                operation.ParseBossTrialInfo(package);
                if (operationTimeUpdateEvent != null)
                {
                    operationTimeUpdateEvent(Operation.default27);
                }
            }
        }
        /// <summary>
        /// 节日红包
        /// </summary>
@@ -1302,7 +1333,7 @@
        default24,
        default25,  //买1送5
        default26,  //648专场
        default27,
        default27,  //boss历练活动
        default28,
        default29,
        default30,
System/WindowBase/ModelCenter.cs
@@ -254,6 +254,7 @@
            RegisterModel<HolidayFlashSaleModel>();
            RegisterModel<HolidayConsumeRebateModel>();
            RegisterModel<FullServerRechargeRedpackModel>();
            RegisterModel<BossTrialModel>();
            inited = true;
        }