少年修仙传客户端代码仓库
Client_PangDeRong
2019-02-13 8ace78e1f5ef834a480ee5466c7ad02ab76d26de
5308 子 【1.6】运营活动-幸运鉴宝 / 【前端】【1.6】运营活动-幸运鉴宝
10个文件已添加
11个文件已修改
545 ■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA08_tagCMStartLuckyTreasure.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA08_tagCMStartLuckyTreasure.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1E_tagMCLuckyTreasureResultInfo.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1E_tagMCLuckyTreasureResultInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1F_tagMCLuckyTreasureInfo.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1F_tagMCLuckyTreasureInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1E_tagMCLuckyTreasureResultInfo.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1E_tagMCLuckyTreasureResultInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1F_tagMCLuckyTreasureInfo.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1F_tagMCLuckyTreasureInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/AutoTreasureAwardsRow.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/AutomaticTreasureWin.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/LuckyAwardsGroup.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/LuckyResultInfo.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/LuckyTreasureModel.cs 172 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/LuckyTreasureWin.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OperationLuckyTreasure.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationTimeHepler.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -213,6 +213,8 @@
        Register(typeof(HC005_tagGCCrossRealmPKBillboardInfo), typeof(DTCC005_tagGCCrossRealmPKBillboardInfo));
        Register(typeof(HC006_tagGCCrossRealmPKSeasonState), typeof(DTCC006_tagGCCrossRealmPKSeasonState));
        Register(typeof(HA815_tagMCZhuXianDecomposeResult), typeof(DTCA815_tagMCZhuXianDecomposeResult));
        Register(typeof(HAA1F_tagMCLuckyTreasureInfo), typeof(DTCAA1F_tagMCLuckyTreasureInfo));
        Register(typeof(HAA1E_tagMCLuckyTreasureResultInfo), typeof(DTCAA1E_tagMCLuckyTreasureResultInfo));
        #region 背包
        Register(typeof(H0724_tagRolePackCanUseCount), typeof(DTC0724_tagRolePackCanUseCount));
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA08_tagCMStartLuckyTreasure.cs
New file
@@ -0,0 +1,16 @@
using UnityEngine;
using System.Collections;
// AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure
public class CAA08_tagCMStartLuckyTreasure : GameNetPackBasic {
    public CAA08_tagCMStartLuckyTreasure () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xAA08;
    }
    public override void WriteToBytes () {
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA08_tagCMStartLuckyTreasure.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 225d2cb7faa21894990324cc70551fc9
timeCreated: 1550036943
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1E_tagMCLuckyTreasureResultInfo.cs
New file
@@ -0,0 +1,19 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
public class DTCAA1E_tagMCLuckyTreasureResultInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA1E_tagMCLuckyTreasureResultInfo vNetData = vNetPack as HAA1E_tagMCLuckyTreasureResultInfo;
        ModelCenter.Instance.GetModel<LuckyTreasureModel>().UpdateLuckyTreasureResult(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1E_tagMCLuckyTreasureResultInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 2bcf78c754cc56f429694d6f8fd9f3c0
timeCreated: 1550036943
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1F_tagMCLuckyTreasureInfo.cs
New file
@@ -0,0 +1,19 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
public class DTCAA1F_tagMCLuckyTreasureInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA1F_tagMCLuckyTreasureInfo vNetData = vNetPack as HAA1F_tagMCLuckyTreasureInfo;
        OperationTimeHepler.Instance.UpdateLuckyTreasure(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1F_tagMCLuckyTreasureInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 73e9ffc8024789740a625c583b4cd026
timeCreated: 1550036944
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1E_tagMCLuckyTreasureResultInfo.cs
New file
@@ -0,0 +1,25 @@
using UnityEngine;
using System.Collections;
// AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
public class HAA1E_tagMCLuckyTreasureResultInfo : GameNetPackBasic {
    public ushort LuckyPoint;    // 当前幸运点
    public byte HasFree;    // 是否免费过
    public uint ItemID;    // 物品ID
    public ushort ItemCnt;    //物品数量
    public byte IsBind;    // 是否绑定
    public HAA1E_tagMCLuckyTreasureResultInfo () {
        _cmd = (ushort)0xAA1E;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out LuckyPoint, vBytes, NetDataType.WORD);
        TransBytes (out HasFree, vBytes, NetDataType.BYTE);
        TransBytes (out ItemID, vBytes, NetDataType.DWORD);
        TransBytes (out ItemCnt, vBytes, NetDataType.WORD);
        TransBytes (out IsBind, vBytes, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1E_tagMCLuckyTreasureResultInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c5a095dc04a8c324fb1a80f21d824b47
timeCreated: 1550036944
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1F_tagMCLuckyTreasureInfo.cs
New file
@@ -0,0 +1,41 @@
using UnityEngine;
using System.Collections;
// AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
public class HAA1F_tagMCLuckyTreasureInfo : GameNetPackBasic {
    public string StartDate;    // 开始日期 y-m-d
    public string EndtDate;    // 结束日期 y-m-d
    public byte ResetType;    // 重置类型,0-0点重置;1-5点重置
    public ushort LimitLV;    // 限制等级
    public ushort LuckyPoint;    // 总幸运值
    public ushort Count;    // 物品数
    public  tagMCLuckyTreasureItem[] ItemList;    // 随机库物品信息
    public HAA1F_tagMCLuckyTreasureInfo () {
        _cmd = (ushort)0xAA1F;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out ResetType, vBytes, NetDataType.BYTE);
        TransBytes (out LimitLV, vBytes, NetDataType.WORD);
        TransBytes (out LuckyPoint, vBytes, NetDataType.WORD);
        TransBytes (out Count, vBytes, NetDataType.WORD);
        ItemList = new tagMCLuckyTreasureItem[Count];
        for (int i = 0; i < Count; i ++) {
            ItemList[i] = new tagMCLuckyTreasureItem();
            TransBytes (out ItemList[i].ItemID, vBytes, NetDataType.DWORD);
            TransBytes (out ItemList[i].ItemCnt, vBytes, NetDataType.WORD);
            TransBytes (out ItemList[i].IsBind, vBytes, NetDataType.BYTE);
        }
    }
    public struct tagMCLuckyTreasureItem {
        public uint ItemID;        // 物品ID
        public ushort ItemCnt;        // 物品数量
        public byte IsBind;        // 是否绑定
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1F_tagMCLuckyTreasureInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b7f45b59365fc6848935aa59177a83a2
timeCreated: 1550036944
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/OpenServerActivity/AutoTreasureAwardsRow.cs
@@ -9,24 +9,27 @@
    {
        [SerializeField] List<AwardItem> awardItems = new List<AwardItem>();
        LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        public void SetDisplay(int row,int sum)
        public void SetDisplay(int row)
        {
            int length = awardItems.Count;
            var autoLuckyItems = luckyTreasureModel.autoLuckyItems;
            for(int i = 0; i < length; i++)
            {
                var awardItem = awardItems[i];
                int index = awardItems.Count * row + i;
                if(index < sum)
                if(index < autoLuckyItems.Count)
                {
                    awardItem.itemObj.SetActive(true);
                    ItemCellModel itemCellModel = new ItemCellModel(10101, true);
                    var luckyItem = autoLuckyItems[index];
                    ItemCellModel itemCellModel = new ItemCellModel(luckyItem.itemId,false,(ulong)luckyItem.itemCount,luckyItem.isBind);
                    awardItem.itemBaisc.Init(itemCellModel);
                    awardItem.itemBaisc.cellBtn.RemoveAllListeners();
                    awardItem.itemBaisc.cellBtn.AddListener(() =>
                    {
                        ItemAttrData attrData = new ItemAttrData(10101, true);
                        ItemAttrData attrData = new ItemAttrData(luckyItem.itemId, false, (ulong)luckyItem.itemCount,-1,luckyItem.isBind);
                        tipsModel.SetItemTipsModel(attrData);
                    });
System/OpenServerActivity/AutomaticTreasureWin.cs
@@ -16,8 +16,8 @@
        LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        int length = 13;
        List<AutoTreasureAwardsRow> awardsRows = new List<AutoTreasureAwardsRow>();
        #region Built-in
        protected override void BindController()
        {
@@ -31,6 +31,7 @@
        protected override void OnPreOpen()
        {
            luckyTreasureModel.UpdateLuckyResultEvent += UpdateLuckyResult;
            SetDisplay();
        }
@@ -41,6 +42,8 @@
        protected override void OnPreClose()
        {
            luckyTreasureModel.isAutoLuckyTreasure = false;
            luckyTreasureModel.UpdateLuckyResultEvent -= UpdateLuckyResult;
            OnDestroyAwardsRow();
        }
        protected override void OnAfterClose()
@@ -53,6 +56,40 @@
        {
            awardsRows.Clear();
            UpdateAwardsItem();
            UpdateLuckyTreasureState();
        }
        private void UpdateLuckyResult()
        {
            UpdateAwardsItem();
        }
        private void UpdateLuckyTreasureState()
        {
            treasureBtn.RemoveAllListeners();
            if (luckyTreasureModel.isAutoLuckyTreasure)
            {
                treasureBtn_Text.text = Language.Get("LuckyTreasure104");
                treasureBtn.AddListener(ClickStopLuckyTreasure);
            }
            else
            {
                treasureBtn_Text.text = Language.Get("LuckyTreasure105");
                treasureBtn.AddListener(ClickLuckyTreasure);
            }
        }
        private void ClickStopLuckyTreasure()
        {
            luckyTreasureModel.isAutoLuckyTreasure = false;
            UpdateLuckyTreasureState();
        }
        private void ClickLuckyTreasure()
        {
            luckyTreasureModel.isAutoLuckyTreasure = true;
            luckyTreasureModel.SendStartLuckyTreasure();
            UpdateLuckyTreasureState();
        }
        private void UpdateAwardsItem()
@@ -61,14 +98,15 @@
            for(int i = 0; i < awardsRows.Count; i++)
            {
                var treasureAwardsRow = awardsRows[i];
                treasureAwardsRow.SetDisplay(i,length);
                treasureAwardsRow.SetDisplay(i);
            }
        }
        private void CreateAwardsRow()
        {
            int row = length /10;
            if(length % 10 > 0)
            var autoLuckyItems = luckyTreasureModel.autoLuckyItems;
            int row = autoLuckyItems.Count / 10;
            if(autoLuckyItems.Count % 10 > 0)
            {
                row += 1;
            }
System/OpenServerActivity/LuckyAwardsGroup.cs
@@ -10,25 +10,26 @@
    {
        [SerializeField] List<AwardCell> awardCells = new List<AwardCell>();
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } }
        public override void Refresh(CellView cell)
        {
            int length = awardCells.Count;
            var treasureItems = luckyTreasureModel.GetOperation().luckTreasureItems;
            for (int i = 0; i < length; i++)
            {
                var awardCell = awardCells[i];
                int index = cell.index * length + i;
                List<int> awardIds = null;
                if(index < awardIds.Count)
                if(index < treasureItems.Count)
                {
                    int awardId = awardIds[i];
                    var treasureItem = treasureItems[index];
                    awardCell.itemBaisc.gameObject.SetActive(true);
                    ItemCellModel itemCellModel = new ItemCellModel(awardId, true);
                    ItemCellModel itemCellModel = new ItemCellModel(treasureItem.itemId,false,(ulong)treasureItem.itemCount,treasureItem.isBind);
                    awardCell.itemBaisc.Init(itemCellModel);
                    awardCell.itemBaisc.cellBtn.RemoveAllListeners();
                    awardCell.itemBaisc.cellBtn.AddListener(() =>
                    {
                        ItemAttrData attrData = new ItemAttrData(awardId, true);
                        ItemAttrData attrData = new ItemAttrData(treasureItem.itemId, false, (ulong)treasureItem.itemCount,-1,treasureItem.isBind);
                        tipsModel.SetItemTipsModel(attrData);
                    });
                }
System/OpenServerActivity/LuckyResultInfo.cs
@@ -3,6 +3,7 @@
using EnhancedUI.EnhancedScroller;
using System;
using System.Collections.Generic;
using TableConfig;
namespace Snxxz.UI
@@ -15,8 +16,17 @@
        public override void Refresh(CellView cell)
        {
            string info = luckyTreasureModel.resultInfolist[cell.index];
            infoText.text = info;
            string playerName = luckyTreasureModel.resultInfolist[cell.index];
            OperationLuckyTreasure.LuckyTreasureItem luckyItem = null;
            luckyTreasureModel.GetOperation().TryGetLuckBigAward(out luckyItem);
            string treasureDes = string.Empty;
            if(luckyItem != null)
            {
                var itemConfig = Config.Instance.Get<ItemConfig>(luckyItem.itemId);
                treasureDes = StringUtility.Contact(itemConfig,"x",luckyItem.itemCount);
                treasureDes = UIHelper.AppendStringColor(itemConfig.ItemColor,treasureDes);
            }
            infoText.text = Language.Get("LuckyTreasure106",playerName,treasureDes);
        }
    }
}
System/OpenServerActivity/LuckyTreasureModel.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TableConfig;
namespace Snxxz.UI
{
@@ -9,49 +10,64 @@
    [XLua.LuaCallCSharp]
    public class LuckyTreasureModel : Model, IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk, IOpenServerActivity
    {
        public string resultInfoLocalSave { get; private set; }
        public List<string> resultInfolist { get; private set; }
        public event Action<int> onStateUpate;
        private bool isLogin = true;
        public bool isAutoLuckyTreasure = false;
        public override void Init()
        {
            ParseFuncConfig();
            DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo += UpdateLuckyMessage;
            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
            OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
            OpenServerActivityCenter.Instance.Register((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure, this);
            maxLuckValue = 600;
            curLuckValue = 300;
        }
        public void OnBeforePlayerDataInitialize()
        {
            autoLuckyItems.Clear();
            isAutoLuckyTreasure = false;
            curLuckValue = 0;
            curLuckyItem = null;
            resultInfolist.Clear();
            isLogin = true;
        }
        public void OnAfterPlayerDataInitialize()
        {
            int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
            resultInfoLocalSave = StringUtility.Contact("LuckyTreasureResult", playerId);
            GetLocalSaveData();
        }
        public void OnPlayerLoginOk()
        {
            isLogin = false;
        }
        public override void UnInit()
        {
            DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo -= UpdateLuckyMessage;
            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
            OperationTimeHepler.Instance.operationAdvanceEvent -= OperationAdvanceEvent;
        }
        public bool IsOpen { get { return false; } }
        public bool IsOpen
        {
            get
            {
                return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.LuckyTreasure);
            }
        }
        public bool IsAdvance { get { return false; } }
        public bool priorityOpen { get { return false; } }
        public bool priorityOpen
        {
            get
            {
                return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.LuckyTreasure);
            }
        }
        public OperationLuckyTreasure GetOperation()
        {
@@ -97,36 +113,124 @@
            }
        }
        #region 表数据
        public int maxLuckValue { get; private set;}
        public int luckAwardId { get; private set; } //幸运大奖物品id
        public int maxRecordResultNum { get; private set; } //记录鉴宝结果最大条数
        public event Action UpdateResultEvent;
        private void GetLocalSaveData()
        {
            string[] infos = LocalSave.GeStringArray(resultInfoLocalSave);
            resultInfolist = infos == null ? new List<string>() : infos.ToList();
        }
        private void SetAwardResultLocalSave(string info)
        #region 表数据
        public int luckyTreasurePrice { get; private set; }
        public int luckyTreasurePoint { get; private set; }
        public void ParseFuncConfig()
        {
            resultInfolist = resultInfolist == null ? new List<string>() : resultInfolist;
            if (resultInfolist.Count >= 3)
            {
                resultInfolist.RemoveAt(resultInfolist.Count - 1);
            }
            resultInfolist.Insert(0, info);
            LocalSave.SetStringArray(resultInfoLocalSave, resultInfolist.ToArray());
            if (UpdateResultEvent != null)
            {
                UpdateResultEvent();
            }
            var luckyAppraisal = Config.Instance.Get<FuncConfigConfig>("LuckyAppraisal");
            luckyTreasurePrice = int.Parse(luckyAppraisal.Numerical1);
            luckyTreasurePoint = int.Parse(luckyAppraisal.Numerical2);
        }
        #endregion
        #region 协议
        public int curLuckValue { get; private set; }
        public bool isFree { get; private set;}
        public OperationLuckyTreasure.LuckyTreasureItem curLuckyItem { get; private set; }
        public List<OperationLuckyTreasure.LuckyTreasureItem> autoLuckyItems = new List<OperationLuckyTreasure.LuckyTreasureItem>();
        public event Action UpdateLuckyResultEvent;
        public event Action UpdateMessageEvent;
        public void UpdateLuckyTreasureResult(HAA1E_tagMCLuckyTreasureResultInfo resultInfo)
        {
            curLuckValue = resultInfo.LuckyPoint;
            isFree = resultInfo.HasFree == 0;
            if(resultInfo.ItemID != 0)
            {
                curLuckyItem = new OperationLuckyTreasure.LuckyTreasureItem((int)resultInfo.ItemID,resultInfo.ItemCnt,resultInfo.IsBind);
                if (isAutoLuckyTreasure)
                {
                    var luckyItem = new OperationLuckyTreasure.LuckyTreasureItem((int)resultInfo.ItemID, resultInfo.ItemCnt, resultInfo.IsBind);
                    autoLuckyItems.Add(luckyItem);
                    if (!WindowCenter.Instance.IsOpen<AutomaticTreasureWin>())
                    {
                        WindowCenter.Instance.Open<AutomaticTreasureWin>();
                    }
                    if(IsBigLuckItem())
                    {
                        WindowCenter.Instance.Close<AutomaticTreasureWin>();
                    }
                    else
                    {
                        SendStartLuckyTreasure();
                    }
                }
            }
            if (UpdateLuckyResultEvent != null)
            {
                UpdateLuckyResultEvent();
            }
        }
        public List<string> resultInfolist = new List<string>();
        public void UpdateLuckyMessage(HA003_tagUniversalGameRecInfo recInfo)
        {
            if (recInfo.Type != 12) return;
            foreach (var item in recInfo.UniversalGameRec)
            {
                string playerName = item.StrValue1;
                if(isLogin)
                {
                    resultInfolist.Add(playerName);
                }
                else
                {
                    resultInfolist.Insert(0, playerName);
                }
            }
            if(UpdateMessageEvent != null)
            {
                UpdateMessageEvent();
            }
        }
        public void SendStartLuckyTreasure()
        {
            if(!isFree)
            {
                ulong haveMoney = UIHelper.GetMoneyCnt(1);
                if (haveMoney < (ulong)luckyTreasurePrice)
                {
                    isAutoLuckyTreasure = false;
                    WindowCenter.Instance.Open<RechargeTipWin>();
                    return;
                }
            }
            var playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>();
            int remainGrid = playerPack.GetReaminGridCount(PackType.rptItem);
            if(remainGrid < 1)
            {
                isAutoLuckyTreasure = false;
                SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_676165",PackType.rptItem);
                return;
            }
            CAA08_tagCMStartLuckyTreasure startLuckyTreasure = new CAA08_tagCMStartLuckyTreasure();
            GameNetSystem.Instance.SendInfo(startLuckyTreasure);
        }
        #endregion
        public bool IsBigLuckItem()
        {
            var operation = GetOperation();
            if(operation != null)
            {
                if (curLuckyItem != null)
                {
                    OperationLuckyTreasure.LuckyTreasureItem luckyItem = null;
                    if (operation.TryGetLuckBigAward(out luckyItem))
                    {
                        return luckyItem.itemId == curLuckyItem.itemId;
                    }
                }
            }
            return false;
        }
    }
}
System/OpenServerActivity/LuckyTreasureWin.cs
@@ -39,23 +39,26 @@
        protected override void OnPreOpen()
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerData;
            luckyTreasureModel.UpdateMessageEvent += UpdateMessageInfo;
            luckyTreasureModel.UpdateLuckyResultEvent += UpdateLuckyResult;
            SetDisplay();
        }
        protected override void OnAfterOpen()
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerData;
            luckyTreasureModel.UpdateResultEvent += UpdateResultInfo;
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            UpdateLuckValue();
        }
        protected override void OnPreClose()
        {
            luckyTreasureModel.UpdateResultEvent -= UpdateResultInfo;
            luckyTreasureModel.UpdateLuckyResultEvent -= UpdateLuckyResult;
            luckyTreasureModel.UpdateMessageEvent -= UpdateMessageInfo;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerData;
        }
        protected override void OnAfterClose()
@@ -70,38 +73,52 @@
            if (operation == null) return;
            UpdateRemainMoney();
            UpdateResultInfo();
            UpdateMessageInfo();
            UpdateAwards();
            UpdateLuckValue();
            UpdateLuckyTreasureState();
            operationTimeText.text = operation.ToDisplayTime();
            luckValueSlider.value = luckyTreasureModel.curLuckValue;
            ruleText.text = Language.Get("LuckyTreasure101",luckyTreasureModel.luckyTreasurePoint);
            luckValueSlider.minValue = 0;
            luckValueSlider.maxValue = luckyTreasureModel.maxLuckValue;
            int luckAwardId = luckyTreasureModel.luckAwardId;
            ItemCellModel itemCellModel = new ItemCellModel(luckAwardId, true);
            luckAward_Item.Init(itemCellModel);
            luckAward_Item.cellBtn.RemoveAllListeners();
            luckAward_Item.cellBtn.AddListener(() =>
            luckValueSlider.maxValue = operation.sumLuckPoint;
            OperationLuckyTreasure.LuckyTreasureItem luckyItem = null;
            if(operation.TryGetLuckBigAward(out luckyItem))
            {
                ItemAttrData attrData = new ItemAttrData(luckAwardId, true);
                tipsModel.SetItemTipsModel(attrData);
            });
                ItemCellModel itemCellModel = new ItemCellModel(luckyItem.itemId);
                luckAward_Item.Init(itemCellModel);
                luckAward_Item.cellBtn.RemoveAllListeners();
                luckAward_Item.cellBtn.AddListener(() =>
                {
                    ItemAttrData attrData = new ItemAttrData(luckyItem.itemId);
                    tipsModel.SetItemTipsModel(attrData);
                });
            }
        }
        private void UpdateLuckyResult()
        {
            UpdateLuckValue();
            UpdateLuckyTreasureState();
        }
        private void UpdateAwards()
        {
            var luckyItems = operation.luckTreasureItems;
            awardsCtrl.Refresh();
            for(int i = 0; i < 4; i++)
            for(int i = 0; i < luckyItems.Count; i++)
            {
                awardsCtrl.AddCell(ScrollerDataType.Header,i);
            }
            awardsCtrl.Restart();
        }
        private void UpdateResultInfo()
        private void UpdateMessageInfo()
        {
            var results = luckyTreasureModel.resultInfolist;
            resultCtrl.Refresh();
            for(int i = 0; i < 5; i++)
            for(int i = 0; i < results.Count; i++)
            {
                resultCtrl.AddCell(ScrollerDataType.Header,i);
            }
@@ -138,19 +155,26 @@
            remainMoneyText.text = moneyNum.ToString();
        }
        private void UpdateLuckyTreasureState()
        {
            goldTreasureBtn.gameObject.SetActive(!luckyTreasureModel.isFree);
            freeTreasureBtn.gameObject.SetActive(luckyTreasureModel.isFree);
        }
        private void ClickAutoTreasure()
        {
            WindowCenter.Instance.Open<AutomaticTreasureWin>();
            luckyTreasureModel.isAutoLuckyTreasure = true;
            luckyTreasureModel.SendStartLuckyTreasure();
        }
        private void ClickGoldTreasure()
        {
            luckyTreasureModel.SendStartLuckyTreasure();
        }
        private void ClickFreeTreasure()
        {
            luckyTreasureModel.SendStartLuckyTreasure();
        }
    }
System/OpenServerActivity/OpenServerActivityWin.cs
@@ -634,6 +634,7 @@
                    WindowCenter.Instance.Open<FestivalRedpackWin>(true);
                    break;
                case 20:
                    WindowCenter.Instance.Open<LuckyTreasureWin>(true);
                    break;
                case 21:
                    WindowCenter.Instance.Open<LoginRewardWin>(true);
System/OpenServerActivity/OperationLuckyTreasure.cs
@@ -6,9 +6,14 @@
{
    public class OperationLuckyTreasure : OperationBase
    {
        public int sumLuckPoint; //// 总幸运值
        public List<LuckyTreasureItem> luckTreasureItems = new List<LuckyTreasureItem>();
        public override void Reset()
        {
            base.Reset();
            sumLuckPoint = 0;
            luckTreasureItems.Clear();
        }
        public override string ToDisplayTime()
@@ -58,11 +63,37 @@
            return totalDays;
        }
        public void ParsePackage(HAA19_tagMCActWishingWellInfo package)
        public void ParsePackage(HAA1F_tagMCLuckyTreasureInfo package)
        {
            for (int i = 0; i < package.Count; i++)
            {
                var itemInfo = package.ItemList[i];
                LuckyTreasureItem treasureItem = new LuckyTreasureItem((int)itemInfo.ItemID,itemInfo.ItemCnt,itemInfo.IsBind);
                luckTreasureItems.Add(treasureItem);
            }
        }
        public bool TryGetLuckBigAward(out LuckyTreasureItem treasureItem)
        {
            treasureItem = null;
            if(luckTreasureItems != null && luckTreasureItems.Count > 0)
            {
                treasureItem = luckTreasureItems[luckTreasureItems.Count - 1];
            }
            return treasureItem != null;
        }
        public class LuckyTreasureItem
        {
            public int itemId;
            public int itemCount;
            public int isBind;
            public LuckyTreasureItem(int id, int count, int isBind)
            {
                this.itemId = id;
                this.itemCount = count;
                this.isBind = isBind;
            }
        }
    }
System/Welfare/OperationTimeHepler.cs
@@ -333,7 +333,7 @@
        /// 幸运鉴宝
        /// </summary>
        /// <param name="package"></param>
        public void UpdateLuckyTreasure(HAA19_tagMCActWishingWellInfo package)
        public void UpdateLuckyTreasure(HAA1F_tagMCLuckyTreasureInfo package)
        {
            OperationBase operationBase = null;
            operationDict.TryGetValue(Operation.LuckyTreasure, out operationBase);
@@ -353,8 +353,8 @@
                operation.limitLv = package.LimitLV;
                operation.startDate = ParseOperationDate(package.StartDate);
                operation.endDate = ParseOperationDate(package.EndtDate);
                operation.dayReset = package.IsDayReset == 1;
                operation.resetType = package.ResetType;
                operation.sumLuckPoint = package.LuckyPoint;
                operation.ParsePackage(package);
                if (operationTimeUpdateEvent != null)
                {
@@ -962,12 +962,12 @@
        FlashRushToBuy, //限时抢购
        WishingWellInfo, //许愿池
        AccumulateRecharge,//累计充值
        LuckyTreasure,//幸运鉴宝
        LoginReward,//登录奖励
        FestivalRedpack,//节日红包
        NewYearFairyCeremony, //春节仙界盛典
        SpringFestival,//春节巡礼
        OpenServiceAchievement,//七日巡礼
        LuckyTreasure,//幸运鉴宝
        max,
    }
}
System/WindowBase/ModelCenter.cs
@@ -229,6 +229,7 @@
            RegisterModel<FestivalRedpackModel>();
            RegisterModel<NewYearFairylandCeremonyModel>();
            RegisterModel<JadeDynastyGemModel>();
            RegisterModel<LuckyTreasureModel>();
            inited = true;
        }