少年修仙传客户端代码仓库
6076 子 【开发】【1.5.200】新增一个仙界盛典(特殊版本)活动 / 【前端】【1.5.200】新增一个仙界盛典(特殊版本)活动
19个文件已添加
1584 ■■■■■ 已修改文件
System/NewYearFairylandCeremony.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyCoolTime.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyCoolTime.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyFirepartyWin.cs 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyFirepartyWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyOutOfPrintWin.cs 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyOutOfPrintWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyPeopleToHiWin.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyPeopleToHiWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyRechargeGiftWin.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearCeremonyRechargeGiftWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearFairylandCeremonyModel.cs 526 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearFairylandCeremonyModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearFairylandCeremonyWin.cs 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearFairylandCeremonyWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearToHiAwardCell.cs 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearToHiAwardCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearToHiTaskCell.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony/NewYearToHiTaskCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewYearFairylandCeremony.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f3a0fba6f1cadae4daf7933f5582bf9a
folderAsset: yes
timeCreated: 1548402738
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearCeremonyCoolTime.cs
New file
@@ -0,0 +1,35 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class NewYearCeremonyCoolTime : MonoBehaviour
    {
        [SerializeField] Text m_Time;
        private void OnEnable()
        {
            GlobalTimeEvent.Instance.secondEvent += RefreshSecond;
            RefreshSecond();
        }
        private void OnDisable()
        {
            GlobalTimeEvent.Instance.secondEvent -= RefreshSecond;
        }
        private void RefreshSecond()
        {
            int seconds = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.FairyCeremony);
            if (seconds > 0)
            {
                m_Time.text = StringUtility.Contact("<color=#8DDC11FF>", TimeUtility.SecondsToHMS(seconds), "</color>");
            }
            else
            {
                m_Time.text = UIHelper.AppendStringColor(TextColType.Red, Language.Get("XMZZ110"));
            }
        }
    }
}
System/NewYearFairylandCeremony/NewYearCeremonyCoolTime.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 8abee5598b1e21a4ab77bb56d3d2f267
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearCeremonyFirepartyWin.cs
New file
@@ -0,0 +1,119 @@
using System;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class NewYearCeremonyFirepartyWin : Window
    {
        [SerializeField] Button buyBtn;
        [SerializeField] Text buyPriceText;
        [SerializeField] Text remainTimeText;
        [SerializeField] CommonItemBaisc fireItem;
        [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>();
        List<FairylandCeremonyModel.AwardItem> itemlist;
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        StoreConfig storeConfig;
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            buyBtn.AddListener(ClickBuy);
        }
        protected override void OnPreOpen()
        {
            GlobalTimeEvent.Instance.secondEvent += RefreshSecond;
            itemlist = ceremonyModel.GetFireAwardlist();
            Init();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= RefreshSecond;
        }
        protected override void OnAfterClose()
        {
        }
        private void Init()
        {
            storeConfig = ceremonyModel.GetFireIdByLv();
            if (storeConfig == null) return;
            buyPriceText.text = storeConfig.MoneyNumber.ToString();
            ItemCellModel fireModel = new ItemCellModel(storeConfig.ItemID,true,(ulong)storeConfig.ItemCnt,storeConfig.IsBind);
            fireItem.Init(fireModel);
            fireItem.cellBtn.AddListener(() =>
            {
                ItemAttrData attrData = new ItemAttrData(storeConfig.ItemID,true, (ulong)storeConfig.ItemCnt,-1,storeConfig.IsBind);
                tipsModel.SetItemTipsModel(attrData);
            });
            if (itemlist == null) return;
            for (int i = 0; i < itemBaiscs.Count; i++)
            {
                if (i < itemlist.Count)
                {
                    itemBaiscs[i].gameObject.SetActive(true);
                    FairylandCeremonyModel.AwardItem itemData = itemlist[i];
                    ItemCellModel cellModel = new ItemCellModel(itemData.itemId, true,(ulong)itemData.itemCount,itemData.isBind);
                    itemBaiscs[i].Init(cellModel);
                    itemBaiscs[i].cellBtn.RemoveAllListeners();
                    itemBaiscs[i].cellBtn.AddListener(() =>
                    {
                        ItemAttrData attrData = new ItemAttrData(itemData.itemId, true, (ulong)itemData.itemCount,-1,itemData.isBind);
                        tipsModel.SetItemTipsModel(attrData);
                    });
                }
                else
                {
                    itemBaiscs[i].gameObject.SetActive(false);
                }
            }
            RefreshSecond();
        }
        private void RefreshSecond()
        {
            int seconds = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.FairyCeremony);
            if (seconds > 0)
            {
                remainTimeText.text = StringUtility.Contact("<color=#8DDC11FF>", TimeUtility.SecondsToHMS(seconds), "</color>");
            }
            else
            {
                remainTimeText.text = UIHelper.AppendStringColor(TextColType.Red, Language.Get("XMZZ110"));
            }
        }
        private void ClickBuy()
        {
            if(playerPack.GetReaminGridCount(PackType.rptItem) < 1)
            {
                SysNotifyMgr.Instance.ShowTip("BagFull");
                return;
            }
            storeModel.OnClickShopCell(storeConfig);
        }
    }
}
System/NewYearFairylandCeremony/NewYearCeremonyFirepartyWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 866275db997a2bf4d8fcf2d2b153cad5
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearCeremonyOutOfPrintWin.cs
New file
@@ -0,0 +1,174 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using System;
namespace Snxxz.UI
{
    public class NewYearCeremonyOutOfPrintWin : Window
    {
        [SerializeField] Text firstNameText;
        [SerializeField] Text secondNameText;
        [SerializeField] Text thirdNameText;
        [SerializeField] Text remainTimeText;
        [SerializeField] List<UIEffect> rankEffectlist = new List<UIEffect>();
        [SerializeField] List<CommonItemBaisc> firstItemlist = new List<CommonItemBaisc>();
        [SerializeField] List<CommonItemBaisc> secondItemlist = new List<CommonItemBaisc>();
        [SerializeField] List<CommonItemBaisc> thirdItemlist = new List<CommonItemBaisc>();
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        KingFairyModel kingFairyModel { get { return ModelCenter.Instance.GetModel<KingFairyModel>(); } }
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            GlobalTimeEvent.Instance.secondEvent += RefreshSecond;
            PlayerDatas.Instance.rank.OnRefreshRank += OnRefreshRankList;
            Init();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= RefreshSecond;
            PlayerDatas.Instance.rank.OnRefreshRank -= OnRefreshRankList;
        }
        protected override void OnAfterClose()
        {
        }
        private void Init()
        {
            ceremonyModel.SendGetRankInfo(PlayerRankData.RankType.Def_BT_FCCostGold);
            SetRankAward(firstItemlist,ceremonyModel.GetRankAwardByLv(1));
            SetRankAward(secondItemlist, ceremonyModel.GetRankAwardByLv(2));
            SetRankAward(thirdItemlist, ceremonyModel.GetRankAwardByLv(3));
            RefreshRankInfo();
            RefreshSecond();
        }
        private void OnRefreshRankList(int type)
        {
            if (type != (int)PlayerRankData.RankType.Def_BT_FCCostGold) return;
            RefreshRankInfo();
        }
        private void RefreshRankInfo()
        {
            List<PlayerRankData.RankData> list = PlayerDatas.Instance.rank.GetRankList((int)PlayerRankData.RankType.Def_BT_FCCostGold);
            firstNameText.text = Language.Get("CeremoneyOutOfPrint");
            secondNameText.text = Language.Get("CeremoneyOutOfPrint");
            thirdNameText.text = Language.Get("CeremoneyOutOfPrint");
            if (list != null)
            {
                if (list.Count > 0)
                {
                    firstNameText.text = list[0].Name1;
                    SetRankEffect(0,(int)list[0].ID);
                }
                if (list.Count > 1)
                {
                    secondNameText.text = list[1].Name1;
                    SetRankEffect(1, (int)list[1].ID);
                }
                if (list.Count > 2)
                {
                    thirdNameText.text = list[2].Name1;
                    SetRankEffect(2, (int)list[2].ID);
                }
            }
        }
        private void SetRankEffect(int rank,int playerId)
        {
            for(int i = 0; i < rankEffectlist.Count; i++)
            {
                if(rank == i && playerId == PlayerDatas.Instance.baseData.PlayerID)
                {
                    if(!rankEffectlist[i].IsPlaying)
                    {
                        rankEffectlist[i].Play();
                    }
                }
                else
                {
                    if (rankEffectlist[i].IsPlaying)
                    {
                        rankEffectlist[i].Stop();
                    }
                }
            }
        }
        private void RefreshSecond()
        {
            int seconds = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.FairyCeremony);
            if(seconds > 0)
            {
                remainTimeText.text = StringUtility.Contact("<color=#8DDC11FF>", TimeUtility.SecondsToHMS(seconds), "</color>");
            }
            else
            {
                remainTimeText.text = UIHelper.AppendStringColor(TextColType.Red,Language.Get("XMZZ110"));
            }
        }
        private void SetRankAward(List<CommonItemBaisc> baiscs,List<FairylandCeremonyModel.AwardItem> list)
        {
            if (list == null) return;
            for (int i = 0; i < baiscs.Count; i++)
            {
                if (i < list.Count)
                {
                    baiscs[i].gameObject.SetActive(true);
                    FairylandCeremonyModel.AwardItem itemData = list[i];
                    ItemCellModel cellModel = new ItemCellModel(itemData.itemId, true,(ulong)itemData.itemCount,itemData.isBind);
                    baiscs[i].Init(cellModel);
                    baiscs[i].cellBtn.RemoveAllListeners();
                    baiscs[i].cellBtn.AddListener(() =>
                    {
                        switch(itemData.itemId)
                        {
                            case 2278:
                                kingFairyModel.ViewKingFairyChest(itemData.itemId,itemData.itemCount,itemData.isBind);
                                break;
                            default:
                                ItemAttrData attrData = new ItemAttrData(itemData.itemId, true, (ulong)itemData.itemCount, -1, itemData.isBind);
                                tipsModel.SetItemTipsModel(attrData);
                                break;
                        }
                    });
                }
                else
                {
                    baiscs[i].gameObject.SetActive(false);
                }
            }
        }
    }
}
System/NewYearFairylandCeremony/NewYearCeremonyOutOfPrintWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5deef7fb5ed08b64ab02e4eada93b8ae
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearCeremonyPeopleToHiWin.cs
New file
@@ -0,0 +1,115 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using System.Collections.Generic;
namespace Snxxz.UI
{
    public class NewYearCeremonyPeopleToHiWin : Window
    {
        [SerializeField] ScrollerController awardCtrl;
        [SerializeField] ScrollerController taskCtrl;
        [SerializeField] Text hiPointText;
        List<AllPeoplePartyConfig> taskConfigs;
        List<AllPeoplePartyAwardConfig> awardConfigs;
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        int presentAwardIndex = 0;
        protected override void BindController()
        {
            awardCtrl.OnRefreshCell += RefreshAwardCell;
            taskCtrl.OnRefreshCell += RefreshTaskCell;
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            ceremonyModel.RefreshHiAwardStateAct += CreateAwardCell;
            Init();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            ceremonyModel.RefreshHiAwardStateAct -= CreateAwardCell;
        }
        protected override void OnAfterClose()
        {
        }
        private void Init()
        {
            hiPointText.text = ceremonyModel.sumHiPoint.ToString();
            ceremonyModel.IsPeopleAwardRecive(out presentAwardIndex);
            taskConfigs = ceremonyModel.GetPeoplePartTasklist();
            awardConfigs = ceremonyModel.GetPeoplePartAwardlist();
            CreateAwardCell();
            CreateTaskCell();
            taskCtrl.JumpIndex(0);
            awardCtrl.JumpIndex(presentAwardIndex - 1 < 0 ? 0 : presentAwardIndex - 1);
        }
        private void CreateTaskCell()
        {
            if (taskCtrl.GetNumberOfCells(taskCtrl.m_Scorller) > 0)
            {
                taskCtrl.m_Scorller.RefreshActiveCellViews();
            }
            else
            {
                taskCtrl.Refresh();
                for(int i = 0; i < taskConfigs.Count; i++)
                {
                    taskCtrl.AddCell(ScrollerDataType.Header,i);
                }
                taskCtrl.Restart();
            }
        }
        private void RefreshTaskCell(ScrollerDataType type, CellView cell)
        {
            ToHiTaskCell taskCell = cell.GetComponent<ToHiTaskCell>();
            if (taskCell == null) return;
            taskCell.Init(taskConfigs[cell.index]);
        }
        private void CreateAwardCell()
        {
            if (awardCtrl.GetNumberOfCells(awardCtrl.m_Scorller) > 0)
            {
                awardCtrl.m_Scorller.RefreshActiveCellViews();
            }
            else
            {
                awardCtrl.Refresh();
                for (int i = 0; i < awardConfigs.Count; i++)
                {
                    awardCtrl.AddCell(ScrollerDataType.Header, i);
                }
                awardCtrl.Restart();
            }
        }
        private void RefreshAwardCell(ScrollerDataType type, CellView cell)
        {
            ToHiAwardCell awardCell = cell.GetComponent<ToHiAwardCell>();
            if (awardCell == null) return;
            awardCell.Init(awardConfigs[cell.index]);
        }
    }
}
System/NewYearFairylandCeremony/NewYearCeremonyPeopleToHiWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b9e35057c68b73e4fac1ec49cc70afab
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearCeremonyRechargeGiftWin.cs
New file
@@ -0,0 +1,150 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using System;
namespace Snxxz.UI
{
    public class NewYearCeremonyRechargeGiftWin : Window
    {
        [SerializeField] Button receiveBtn;
        [SerializeField] Button rechargeBtn;
        [SerializeField] Text receiveBtnText;
        [SerializeField] Image receiveBtnImg;
        [SerializeField] Text remainTimeText;
        [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>();
        List<FairylandCeremonyModel.AwardItem> itemlist;
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            rechargeBtn.AddListener(ClickRecharge);
            receiveBtn.AddListener(OnReceiveGift);
        }
        protected override void OnPreOpen()
        {
            GlobalTimeEvent.Instance.secondEvent += RefreshSecond;
            ceremonyModel.RefreshRechargeStateAct += SetReceiveBtnState;
            itemlist = ceremonyModel.GetRechargeAwardByLv();
            Init();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= RefreshSecond;
            ceremonyModel.RefreshRechargeStateAct -= SetReceiveBtnState;
        }
        protected override void OnAfterClose()
        {
        }
        private void Init()
        {
            if (itemlist == null) return;
            for(int i = 0; i < itemBaiscs.Count; i++)
            {
                if(i < itemlist.Count)
                {
                    itemBaiscs[i].gameObject.SetActive(true);
                    FairylandCeremonyModel.AwardItem itemData = itemlist[i];
                    ItemCellModel cellModel = new ItemCellModel(itemData.itemId,true, (ulong)itemData.itemCount, itemData.isBind);
                    itemBaiscs[i].Init(cellModel);
                    itemBaiscs[i].cellBtn.RemoveAllListeners();
                    itemBaiscs[i].cellBtn.AddListener(()=>
                    {
                        ItemAttrData attrData = new ItemAttrData(itemData.itemId, true, (ulong)itemData.itemCount,-1,itemData.isBind);
                        tipsModel.SetItemTipsModel(attrData);
                    });
                }
                else
                {
                    itemBaiscs[i].gameObject.SetActive(false);
                }
            }
            RefreshSecond();
            SetReceiveBtnState();
        }
        private void RefreshSecond()
        {
            int seconds = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.FairyCeremony);
            if (seconds > 0)
            {
                remainTimeText.text = StringUtility.Contact("<color=#8DDC11FF>", TimeUtility.SecondsToHMS(seconds), "</color>");
            }
            else
            {
                remainTimeText.text = UIHelper.AppendStringColor(TextColType.Red, Language.Get("XMZZ110"));
            }
        }
        private void SetReceiveBtnState()
        {
            switch (ceremonyModel.receiveState)
            {
                case FairylandCeremonyModel.ReceiveState.NoReach:
                    receiveBtnImg.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
                    receiveBtnText.text = "领取礼包";
                    break;
                case FairylandCeremonyModel.ReceiveState.Reach:
                    receiveBtnImg.material = MaterialUtility.GetUIDefaultGraphicMaterial();
                    receiveBtnText.text = "领取礼包";
                    break;
                case FairylandCeremonyModel.ReceiveState.Already:
                    receiveBtnImg.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
                    receiveBtnText.text = "已领取";
                    break;
            }
        }
        private void OnReceiveGift()
        {
            if (itemlist == null) return;
            switch (ceremonyModel.receiveState)
            {
                case FairylandCeremonyModel.ReceiveState.NoReach:
                    SysNotifyMgr.Instance.ShowTip("FairylandCermonyRecharge1");
                    break;
                case FairylandCeremonyModel.ReceiveState.Reach:
                    bool isGrid = playerPack.GetReaminGridCount(PackType.rptItem) - itemlist.Count >= 0 ? true : false;
                    if (isGrid)
                    {
                        ceremonyModel.SendReceiveAward(GotServerRewardType.Def_RewardType_FCRecharge,0);
                    }
                    else
                    {
                        SysNotifyMgr.Instance.ShowTip("BagFull");
                    }
                    break;
                case FairylandCeremonyModel.ReceiveState.Already:
                    SysNotifyMgr.Instance.ShowTip("FairylandCermonyRecharge2");
                    break;
            }
        }
        private void ClickRecharge()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1);
        }
    }
}
System/NewYearFairylandCeremony/NewYearCeremonyRechargeGiftWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: fd7487dccd7370041947e1a4134b2bd1
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearFairylandCeremonyModel.cs
New file
@@ -0,0 +1,526 @@
using TableConfig;
using LitJson;
using System.Collections.Generic;
using System;
namespace Snxxz.UI
{
    [XLua.LuaCallCSharp]
    public class NewYearFairylandCeremonyModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
    {
        public ReceiveState receiveState { get; private set; }
        Dictionary<CeremonyType, Dictionary<int, List<int>>> typeLvDict = new Dictionary<CeremonyType, Dictionary<int, List<int>>>();
        Dictionary<int, List<AwardItem>> rechargeAwardDict = new Dictionary<int, List<AwardItem>>();
        public Dictionary<int, int> fireDict = new Dictionary<int, int>();
        List<AllPeoplePartyConfig> allPeoples = new List<AllPeoplePartyConfig>();
        List<AllPeoplePartyAwardConfig> allPeopleAwards = new List<AllPeoplePartyAwardConfig>();
        Dictionary<int, Dictionary<int, List<AwardItem>>> jobToHiAwardDict = new Dictionary<int, Dictionary<int, List<AwardItem>>>();
        Dictionary<string, Dictionary<int, List<AwardItem>>> rankAwardDict = new Dictionary<string, Dictionary<int, List<AwardItem>>>();
        Dictionary<int,Dictionary<int,List<AwardItem>>> fireGiftsDict = new Dictionary<int, Dictionary<int, List<AwardItem>>>();
        public override void Init()
        {
            FuncConfigConfig lvConfig = Config.Instance.Get<FuncConfigConfig>("CeremonyWorldLv");
            JsonData lvData = JsonMapper.ToObject(lvConfig.Numerical1);
            foreach (var type in lvData.Keys)
            {
                Dictionary<int, List<int>> lvDict = new Dictionary<int, List<int>>();
                typeLvDict.Add((CeremonyType)int.Parse(type),lvDict);
                if(lvData[type].IsArray)
                {
                    for(int i = 0; i < lvData[type].Count; i++)
                    {
                        JsonData rangeData = lvData[type][i];
                        List<int> lvlist = new List<int>();
                        lvDict.Add(i,lvlist);
                        lvlist.Add(int.Parse(rangeData[0].ToString()));
                        lvlist.Add(int.Parse(rangeData[1].ToString()));
                    }
                }
            }
            FuncConfigConfig rechargeConfig = Config.Instance.Get<FuncConfigConfig>("CeremonyRecharge");
            JsonData rechargeData = JsonMapper.ToObject(rechargeConfig.Numerical1);
            foreach(var index in rechargeData.Keys)
            {
                List<AwardItem> awardItems = new List<AwardItem>();
                rechargeAwardDict.Add(int.Parse(index),awardItems);
                if(rechargeData[index].IsArray)
                {
                    for(int i = 0; i < rechargeData[index].Count; i++)
                    {
                        JsonData itemData = rechargeData[index][i];
                        AwardItem item = new AwardItem(int.Parse(itemData[0].ToString()), int.Parse(itemData[1].ToString()),
                            int.Parse(itemData[2].ToString()));
                        awardItems.Add(item);
                    }
                }
            }
            FuncConfigConfig fireConfig = Config.Instance.Get<FuncConfigConfig>("CeremonyFireParty");
            JsonData fireData = JsonMapper.ToObject(fireConfig.Numerical1);
            foreach(var index in fireData.Keys)
            {
                fireDict.Add(int.Parse(index),int.Parse(fireData[index].ToString()));
            }
            FuncConfigConfig fireAwardConfig = Config.Instance.Get<FuncConfigConfig>("CeremonyFireAward");
            JsonData fireAwardData = JsonMapper.ToObject(fireAwardConfig.Numerical1);
            foreach (var index in fireAwardData.Keys)
            {
                Dictionary<int, List<AwardItem>> jobFireAwardDict = new Dictionary<int, List<AwardItem>>();
                fireGiftsDict.Add(int.Parse(index),jobFireAwardDict);
                foreach(var job in fireAwardData[index].Keys)
                {
                    List<AwardItem> awardItems = new List<AwardItem>();
                    jobFireAwardDict.Add(int.Parse(job),awardItems);
                    if (fireAwardData[index][job].IsArray)
                    {
                        for (int i = 0; i < fireAwardData[index][job].Count; i++)
                        {
                            JsonData itemData = fireAwardData[index][job][i];
                            AwardItem item = new AwardItem(int.Parse(itemData[0].ToString()), int.Parse(itemData[1].ToString()),
                                int.Parse(itemData[2].ToString()));
                            awardItems.Add(item);
                        }
                    }
                }
            }
            allPeoples = Config.Instance.GetAllValues<AllPeoplePartyConfig>();
            allPeopleAwards = Config.Instance.GetAllValues<AllPeoplePartyAwardConfig>();
            for(int i = 0; i < allPeopleAwards.Count; i++)
            {
                Dictionary<int, List<AwardItem>> awardKeyDict = new Dictionary<int, List<AwardItem>>();
                jobToHiAwardDict.Add(allPeopleAwards[i].ID,awardKeyDict);
                JsonData awardData = JsonMapper.ToObject(allPeopleAwards[i].Award);
                foreach(var job in awardData.Keys)
                {
                    List<AwardItem> awardItems = new List<AwardItem>();
                    awardKeyDict.Add(int.Parse(job),awardItems);
                    if(awardData[job].IsArray)
                    {
                        for(int j = 0; j < awardData[job].Count;j++)
                        {
                            JsonData itemData = awardData[job][j];
                            AwardItem item = new AwardItem(int.Parse(itemData[0].ToString()), int.Parse(itemData[1].ToString()),
                                int.Parse(itemData[2].ToString()));
                            awardItems.Add(item);
                        }
                    }
                }
            }
            List<UniquenessArriveConfig> arriveConfigs = Config.Instance.GetAllValues<UniquenessArriveConfig>();
            for(int i = 0; i < arriveConfigs.Count; i++)
            {
                string key = StringUtility.Contact(arriveConfigs[i].WorldLvNum,arriveConfigs[i].Rank);
                Dictionary<int, List<AwardItem>> awardKeyDict = new Dictionary<int, List<AwardItem>>();
                rankAwardDict.Add(key,awardKeyDict);
                JsonData awardData = JsonMapper.ToObject(arriveConfigs[i].Award);
                foreach (var job in awardData.Keys)
                {
                    List<AwardItem> awardItems = new List<AwardItem>();
                    awardKeyDict.Add(int.Parse(job), awardItems);
                    if (awardData[job].IsArray)
                    {
                        for (int j = 0; j < awardData[job].Count; j++)
                        {
                            JsonData itemData = awardData[job][j];
                            AwardItem item = new AwardItem(int.Parse(itemData[0].ToString()), int.Parse(itemData[1].ToString()),
                                int.Parse(itemData[2].ToString()));
                            awardItems.Add(item);
                        }
                    }
                }
            }
            //OperationTimeHepler.Instance.operationEndEvent += OnActiveEnd;
        }
        public override void UnInit()
        {
        }
        public void OnBeforePlayerDataInitialize()
        {
            worldLv = 0;
            sumHiPoint = 0;
            preAwardRecord = 0;
            peopleTaskRecordDict.Clear();
            receiveState = ReceiveState.NoReach;
        }
        public void OnAfterPlayerDataInitialize()
        {
        }
        public void OnPlayerLoginOk()
        {
            CheckRechargeRed();
            CheckPeoplePartyRed();
        }
        #region 处理服务端数据
        public int worldLv { get; private set;}
        public void GetServerActiveInfo(HAC09_tagGCFairyCeremonyInfo info)
        {
            worldLv = info.WorldLV;
            OperationTimeHepler.Instance.RefreshFairyCeremonyInfo(info);
        }
        public Action RefreshRechargeStateAct;
        public void GetServerRechargeInfo(HAA14_tagMCXJSDRecharge info)
        {
            switch(info.State)
            {
                case 0:
                    receiveState = ReceiveState.NoReach;
                    break;
                case 1:
                    receiveState = ReceiveState.Reach;
                    break;
                case 2:
                    receiveState = ReceiveState.Already;
                    break;
            }
            if(RefreshRechargeStateAct != null)
            {
                RefreshRechargeStateAct();
            }
            CheckRechargeRed();
        }
        public int sumHiPoint { get; private set; }
        private int preAwardRecord;
        Dictionary<int, bool> peopleAwardRecordDict = new Dictionary<int, bool>();  //领取记录
        Dictionary<int, int> peopleTaskRecordDict = new Dictionary<int, int>();  //全民来嗨任务状态记录
        public Action<int> RefreshHiPointAct;
        public Action RefreshHiAwardStateAct;
        public void GetServerPeopleInfo(HAA15_tagMCAllPeoplePartyInfo info)
        {
            peopleAwardRecordDict.Clear();
            sumHiPoint = (int)info.CurPoint;
            int sumIndex = GetPeoplePartAwardlist().Count;
            for (int i = 0; i < sumIndex; i++)
            {
                bool isRecord = MathUtility.GetBitValue(info.AwardRecord, (ushort)i);
                peopleAwardRecordDict.Add(i, isRecord);
            }
            for(int i = 0; i < info.Count; i++)
            {
                if(!peopleTaskRecordDict.ContainsKey((int)info.BuyCountList[i].ActID))
                {
                    peopleTaskRecordDict.Add((int)info.BuyCountList[i].ActID,info.BuyCountList[i].CurTimes);
                }
                else
                {
                    peopleTaskRecordDict[(int)info.BuyCountList[i].ActID] = info.BuyCountList[i].CurTimes;
                }
                if(RefreshHiPointAct != null)
                {
                    RefreshHiPointAct((int)info.BuyCountList[i].ActID);
                }
            }
            if(preAwardRecord != info.AwardRecord)
            {
                if(RefreshHiAwardStateAct != null)
                {
                    RefreshHiAwardStateAct();
                }
            }
            CheckPeoplePartyRed();
            preAwardRecord = (int)info.AwardRecord;
        }
        public int GetPeopleTaskTimesById(int actId)
        {
            int times = 0;
            peopleTaskRecordDict.TryGetValue(actId,out times);
            return times;
        }
        public bool GetPeopleAwardRecordByIndex(int index)
        {
            bool isReceive = false;
            peopleAwardRecordDict.TryGetValue(index,out isReceive);
            return isReceive;
        }
        private void OnActiveEnd(Operation type, int arg2)
        {
            if (type != Operation.FairyCeremony) return;
            peopleTaskRecordDict.Clear();
            sumHiPoint = 0;
            worldLv = 0;
        }
        public void SendReceiveAward(GotServerRewardType type,int index)
        {
            CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
            getReward.RewardType = (byte)type;
            getReward.DataEx = (uint)index;
            getReward.DataExStrLen = 0;
            getReward.DataExStr = string.Empty;
            GameNetSystem.Instance.SendInfo(getReward);
        }
        public void SendGetRankInfo(PlayerRankData.RankType type)
        {
            C1001_tagCWatchBillboard rankPack = new C1001_tagCWatchBillboard();
            rankPack.Type = (byte)type;
            GameNetSystem.Instance.SendInfo(rankPack);
        }
        #endregion
        #region 处理本地数据
        public int GetWorldLvIndex(CeremonyType type)
        {
           if(typeLvDict.ContainsKey(type))
            {
                foreach(var index in typeLvDict[type].Keys)
                {
                    if(worldLv >= typeLvDict[type][index][0] && worldLv <= typeLvDict[type][index][1])
                    {
                        return index;
                    }
                }
            }
            return -1;
        }
        public List<AwardItem> GetRechargeAwardByLv()
        {
            int index = GetWorldLvIndex(CeremonyType.Recharge);
            List<AwardItem> awardItems = null;
            rechargeAwardDict.TryGetValue(index,out awardItems);
            return awardItems;
        }
        public StoreConfig GetFireIdByLv()
        {
            int index = GetWorldLvIndex(CeremonyType.Fire);
            int storeId = 0;
            fireDict.TryGetValue(index,out storeId);
            StoreConfig storeConfig = Config.Instance.Get<StoreConfig>(storeId);
            return storeConfig;
        }
        public List<AwardItem> GetFireAwardlist()
        {
            int index = GetWorldLvIndex(CeremonyType.Fire);
            if(fireGiftsDict.ContainsKey(index))
            {
                if(fireGiftsDict[index].ContainsKey(PlayerDatas.Instance.baseData.Job))
                {
                    return fireGiftsDict[index][PlayerDatas.Instance.baseData.Job];
                }
            }
            return null;
        }
        public bool CheckIsBuyFireCondi(StoreConfig storeConfig,int buyNum = 1)
        {
            ulong price =(ulong)(storeConfig.MoneyNumber * buyNum);
            if(UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= price)
            {
                return true;
            }
            return false;
        }
        List<AllPeoplePartyConfig> openTasklist = new List<AllPeoplePartyConfig>();
        public List<AllPeoplePartyConfig> GetPeoplePartTasklist()
        {
            openTasklist.Clear();
            for(int i = 0; i < allPeoples.Count; i++)
            {
                if(FuncOpen.Instance.IsFuncOpen(allPeoples[i].FuncID))
                {
                    openTasklist.Add(allPeoples[i]);
                }
            }
            openTasklist.Sort(CompareByTimes);
            return openTasklist;
        }
        private int CompareByTimes(AllPeoplePartyConfig start,AllPeoplePartyConfig end)
        {
            bool startIsComplte = PeopleTaskComplete(start);
            bool endIsComplte = PeopleTaskComplete(end);
            if (startIsComplte.CompareTo(endIsComplte) != 0) return startIsComplte.CompareTo(endIsComplte);
            int startIndex = allPeoples.IndexOf(start);
            int endIndex = allPeoples.IndexOf(end);
            if (startIndex.CompareTo(endIndex) != 0) return startIndex.CompareTo(endIndex);
            return 0;
        }
        public bool PeopleTaskComplete(AllPeoplePartyConfig partyConfig)
        {
            if (GetPeopleTaskTimesById(partyConfig.ID) >= partyConfig.TotalTimes)
            {
                return true;
            }
            return false;
        }
        List<AllPeoplePartyAwardConfig> worldAwardlist = new List<AllPeoplePartyAwardConfig>();
        public List<AllPeoplePartyAwardConfig> GetPeoplePartAwardlist()
        {
            worldAwardlist.Clear();
            int index = GetWorldLvIndex(CeremonyType.WholePeople);
            for (int i = 0; i < allPeopleAwards.Count; i++)
            {
                if(allPeopleAwards[i].WorldLvNum == index)
                {
                    worldAwardlist.Add(allPeopleAwards[i]);
                }
            }
            worldAwardlist.Sort(CompareByIndex);
            return worldAwardlist;
        }
        public int CompareByIndex(AllPeoplePartyAwardConfig start,AllPeoplePartyAwardConfig end)
        {
            int startIndex = start.Index;
            int endIndex = end.Index;
            if (startIndex.CompareTo(endIndex) != 0) return startIndex.CompareTo(endIndex);
            startIndex = allPeopleAwards.IndexOf(start);
            endIndex = allPeopleAwards.IndexOf(end);
            if (startIndex.CompareTo(endIndex) != 0) return startIndex.CompareTo(endIndex);
            return 0;
        }
        public List<AwardItem> GetPeoplePartyAwardById(int peopleId)
        {
            if(jobToHiAwardDict.ContainsKey(peopleId))
            {
                if(jobToHiAwardDict[peopleId].ContainsKey(PlayerDatas.Instance.baseData.Job))
                {
                    return jobToHiAwardDict[peopleId][PlayerDatas.Instance.baseData.Job];
                }
            }
            return null;
        }
        public List<AwardItem> GetRankAwardByLv(int rank)
        {
            int index = GetWorldLvIndex(CeremonyType.OutOfPrint);
            string key = StringUtility.Contact(index,rank);
            int playerJob = PlayerDatas.Instance.baseData.Job;
            if(rankAwardDict.ContainsKey(key))
            {
                if(rankAwardDict[key].ContainsKey(playerJob))
                {
                    return rankAwardDict[key][playerJob];
                }
            }
            return null;
        }
        #endregion
        #region 红点逻辑处理
        public const int FairyCeremony_RedKey = 212;
        public Redpoint fairyCeremonyRedp = new Redpoint(MainRedDot.RedPoint_UpFuncBase,FairyCeremony_RedKey);
        public const int CeremonyRecharge_RedKey = 21201;
        public Redpoint rechargeRedp = new Redpoint(FairyCeremony_RedKey,CeremonyRecharge_RedKey);
        public const int RechargeReceiveBtn_RedKey = 2120101;
        public Redpoint receiveBtnRedp = new Redpoint(CeremonyRecharge_RedKey, RechargeReceiveBtn_RedKey);
        public void CheckRechargeRed()
        {
            if (!OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.FairyCeremony)) return;
            if(receiveState == ReceiveState.Reach)
            {
                receiveBtnRedp.state = RedPointState.Simple;
            }
            else
            {
                receiveBtnRedp.state = RedPointState.None;
            }
        }
        public const int CeremonyPeople_RedKey = 21203;
        public Redpoint peopleRedp = new Redpoint(FairyCeremony_RedKey, CeremonyPeople_RedKey);
        public void CheckPeoplePartyRed()
        {
            if (!OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.FairyCeremony)) return;
            int index = 0;
            if(IsPeopleAwardRecive(out index))
            {
                peopleRedp.state = RedPointState.Simple;
            }
            else
            {
                peopleRedp.state = RedPointState.None;
            }
        }
        #endregion
        public bool IsPeopleAwardRecive(out int index)
        {
            index = 0;
            if (worldAwardlist.Count < 1) return false;
            for (int i = 0; i < worldAwardlist.Count; i++)
            {
                if (!GetPeopleAwardRecordByIndex(worldAwardlist[i].Index))
                {
                    if (sumHiPoint >= worldAwardlist[i].NeedPoint)
                    {
                        index = i;
                        return true;
                    }
                }
            }
            return false;
        }
        public struct AwardItem
        {
            public int itemId { get; private set;}
            public int itemCount { get; private set; }
            public int isBind { get; private set; }
            public AwardItem(int id,int cnt,int isBind)
            {
                this.itemId = id;
                this.itemCount = cnt;
                this.isBind = isBind;
            }
        }
        public enum ReceiveState
        {
            NoReach, //未充值
            Reach,  //可领取
            Already, //已领取
        }
        /// <summary>
        /// 庆典类型
        /// </summary>
        public enum CeremonyType
        {
            Recharge = 1, // 充值
            Fire = 2, //烟花
            WholePeople = 3, //全民
            OutOfPrint = 4, //绝版降临
        }
    }
}
System/NewYearFairylandCeremony/NewYearFairylandCeremonyModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4a8fe48f819d39044b5e3669ec791465
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearFairylandCeremonyWin.cs
New file
@@ -0,0 +1,157 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class NewYearFairylandCeremonyWin : Window
    {
        [SerializeField] FunctionButtonGroup funcBtnGroup;
        [SerializeField] FunctionButton rechargeFunc;
        [SerializeField] FunctionButton fireFunc;
        [SerializeField] FunctionButton peopleToHiFunc;
        [SerializeField] FunctionButton outofFunc;
        [SerializeField] Button leftBtn;
        [SerializeField] Button rightBtn;
        [SerializeField] Button closeBtn;
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            rechargeFunc.onClick.AddListener(ClickRecharge);
            fireFunc.onClick.AddListener(ClickFire);
            peopleToHiFunc.onClick.AddListener(ClickPeopleToHi);
            outofFunc.onClick.AddListener(ClickOutOf);
            leftBtn.onClick.AddListener(OnClickLeftBtn);
            rightBtn.onClick.AddListener(OnClickRightBtn);
            closeBtn.onClick.AddListener(ClickClose);
        }
        protected override void OnPreOpen()
        {
        }
        protected override void OnActived()
        {
            base.OnActived();
            if(!WindowJumpMgr.Instance.IsJumpState && functionOrder == 0)
            {
                if(ceremonyModel.rechargeRedp.state == RedPointState.Simple)
                {
                    functionOrder = rechargeFunc.order;
                }
                else if(ceremonyModel.peopleRedp.state == RedPointState.Simple)
                {
                    functionOrder = peopleToHiFunc.order;
                }
            }
            funcBtnGroup.TriggerByOrder(functionOrder);
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
            if(!WindowJumpMgr.Instance.IsJumpState)
            {
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        private void OnClickRightBtn()
        {
            funcBtnGroup.TriggerNext();
        }
        private void OnClickLeftBtn()
        {
            funcBtnGroup.TriggerLast();
        }
        private void ClickOutOf()
        {
            CloseChildWin();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<CeremonyOutOfPrintWin>();
            }
            else
            {
                WindowCenter.Instance.Open<CeremonyOutOfPrintWin>();
            }
            functionOrder = 3;
        }
        private void ClickPeopleToHi()
        {
            CloseChildWin();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<CeremonyPeopleToHiWin>();
            }
            else
            {
                WindowCenter.Instance.Open<CeremonyPeopleToHiWin>();
            }
            functionOrder = 2;
        }
        private void ClickFire()
        {
            CloseChildWin();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<CeremonyFirepartyWin>();
            }
            else
            {
                WindowCenter.Instance.Open<CeremonyFirepartyWin>();
            }
            functionOrder = 1;
        }
        private void ClickRecharge()
        {
            CloseChildWin();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<CeremonyRechargeGiftWin>();
            }
            else
            {
                WindowCenter.Instance.Open<CeremonyRechargeGiftWin>();
            }
            functionOrder = 0;
        }
        private void CloseChildWin()
        {
            var children = WindowConfig.Get().FindChildWindows("FairylandCeremonyWin");
            foreach (var window in children)
            {
                WindowCenter.Instance.Close(window);
            }
        }
        private void ClickClose()
        {
            CloseChildWin();
            CloseClick();
        }
    }
}
System/NewYearFairylandCeremony/NewYearFairylandCeremonyWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cba4e6bd0f8e90246b6f3925f49c17e7
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearToHiAwardCell.cs
New file
@@ -0,0 +1,123 @@
using System;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class NewYearToHiAwardCell : CellView
    {
        [SerializeField] Text titleText;
        [SerializeField] Button receiveBtn;
        [SerializeField] GameObject noReachImg;
        [SerializeField] GameObject alreadyImg;
        [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>();
        List<FairylandCeremonyModel.AwardItem> itemlist;
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        FairylandCeremonyModel.ReceiveState receiveState = FairylandCeremonyModel.ReceiveState.NoReach;
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        AllPeoplePartyAwardConfig awardConfig;
        private void OnEnable()
        {
            ceremonyModel.RefreshHiAwardStateAct += SetAwardState;
        }
        private void OnDisable()
        {
            ceremonyModel.RefreshHiAwardStateAct -= SetAwardState;
        }
        public void Init(AllPeoplePartyAwardConfig awardConfig)
        {
            this.awardConfig = awardConfig;
            titleText.text = Language.Get("CeremoneyToHiAward", awardConfig.NeedPoint);
            itemlist = ceremonyModel.GetPeoplePartyAwardById(awardConfig.ID);
            for (int i = 0; i < itemBaiscs.Count; i++)
            {
                if (i < itemlist.Count)
                {
                    itemBaiscs[i].gameObject.SetActive(true);
                    FairylandCeremonyModel.AwardItem itemData = itemlist[i];
                    ItemCellModel cellModel = new ItemCellModel(itemData.itemId, true,(ulong)itemData.itemCount, itemData.isBind);
                    itemBaiscs[i].Init(cellModel);
                    itemBaiscs[i].cellBtn.RemoveAllListeners();
                    itemBaiscs[i].cellBtn.AddListener(() =>
                    {
                        ItemAttrData attrData = new ItemAttrData(itemData.itemId, true, (ulong)itemData.itemCount,-1,itemData.isBind);
                        tipsModel.SetItemTipsModel(attrData);
                    });
                }
                else
                {
                    itemBaiscs[i].gameObject.SetActive(false);
                }
            }
            SetAwardState();
        }
        private void SetAwardState()
        {
            if (awardConfig == null) return;
           if(ceremonyModel.GetPeopleAwardRecordByIndex(awardConfig.Index))
            {
                receiveState = FairylandCeremonyModel.ReceiveState.Already;
            }
           else
            {
                if(ceremonyModel.sumHiPoint >= awardConfig.NeedPoint)
                {
                    receiveState = FairylandCeremonyModel.ReceiveState.Reach;
                }
                else
                {
                    receiveState = FairylandCeremonyModel.ReceiveState.NoReach;
                }
            }
            RefreshAwardStateUI();
        }
        private void RefreshAwardStateUI()
        {
            receiveBtn.RemoveAllListeners();
            switch (receiveState)
            {
                case FairylandCeremonyModel.ReceiveState.NoReach:
                    noReachImg.SetActive(true);
                    alreadyImg.SetActive(false);
                    receiveBtn.gameObject.SetActive(false);
                    break;
                case FairylandCeremonyModel.ReceiveState.Reach:
                    noReachImg.SetActive(false);
                    alreadyImg.SetActive(false);
                    receiveBtn.gameObject.SetActive(true);
                    receiveBtn.AddListener(OnReceiveGift);
                    break;
                case FairylandCeremonyModel.ReceiveState.Already:
                    noReachImg.SetActive(false);
                    alreadyImg.SetActive(true);
                    receiveBtn.gameObject.SetActive(false);
                    break;
            }
        }
        private void OnReceiveGift()
        {
            bool isGrid = playerPack.GetReaminGridCount(PackType.rptItem) - itemlist.Count >= 0 ? true : false;
            if (isGrid)
            {
                ceremonyModel.SendReceiveAward(GotServerRewardType.Def_RewardType_FCParty, awardConfig.Index);
            }
            else
            {
                SysNotifyMgr.Instance.ShowTip("BagFull");
            }
        }
    }
}
System/NewYearFairylandCeremony/NewYearToHiAwardCell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 12a9a9d0bb4006a45ad0eefe13ad039c
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/NewYearFairylandCeremony/NewYearToHiTaskCell.cs
New file
@@ -0,0 +1,68 @@
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using System;
namespace Snxxz.UI
{
    public class NewYearToHiTaskCell : CellView
    {
        [SerializeField] Image activeIcon;
        [SerializeField] Text activeNameText;
        [SerializeField] Text activeDesText;
        [SerializeField] Text progressText;
        [SerializeField] Button gobtn;
        [SerializeField] GameObject completeImg;
        AllPeoplePartyConfig taskConfig;
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        private void OnEnable()
        {
            ceremonyModel.RefreshHiPointAct += OnRefreshProgress;
        }
        private void OnDisable()
        {
            ceremonyModel.RefreshHiPointAct -= OnRefreshProgress;
        }
        public void Init(AllPeoplePartyConfig taskConfig)
        {
            activeNameText.gameObject.SetActive(false);
            this.taskConfig = taskConfig;
            activeIcon.SetSprite(taskConfig.IconKey);
            SetTaskState(ceremonyModel.GetPeopleTaskTimesById(taskConfig.ID),taskConfig.TotalTimes);
            activeDesText.text = string.Format(taskConfig.TaskDes,taskConfig.AddPoint);
        }
        private void OnRefreshProgress(int actId)
        {
            if (taskConfig == null || taskConfig.ID != actId) return;
            SetTaskState(ceremonyModel.GetPeopleTaskTimesById(taskConfig.ID), taskConfig.TotalTimes);
        }
        public void SetTaskState(int curProgress,int sumProgress)
        {
            gobtn.RemoveAllListeners();
            progressText.text = StringUtility.Contact(curProgress, "/", sumProgress);
            if (curProgress < sumProgress)
            {
                gobtn.gameObject.SetActive(true);
                completeImg.SetActive(false);
                progressText.color = UIHelper.GetUIColor(TextColType.Red);
                gobtn.AddListener(()=>
                {
                    WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)taskConfig.JumpId);
                });
            }
            else
            {
                gobtn.gameObject.SetActive(false);
                completeImg.SetActive(true);
                progressText.color = UIHelper.GetUIColor(TextColType.Green);
            }
        }
    }
}
System/NewYearFairylandCeremony/NewYearToHiTaskCell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 005a236d335a39b40b69ba9242f67311
timeCreated: 1548402738
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: