少年修仙传客户端代码仓库
client_Wu Xijin
2019-01-10 8dcdb747d20507a4b181e8d53a28d64689f5d59c
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
5个文件已修改
20个文件已添加
1601 ■■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/WeekPartyConfig.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/WeekPartyConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0A_tagMCWeekPartyInfo.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0A_tagMCWeekPartyInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0B_tagMCWeekPartyPlayerInfo.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0B_tagMCWeekPartyPlayerInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0A_tagMCWeekPartyInfo.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0A_tagMCWeekPartyInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0B_tagMCWeekPartyPlayerInfo.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0B_tagMCWeekPartyPlayerInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/HighSettingTip.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/AchievementActivityWin.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/AchievementActivityWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceAchievementCell.cs 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceAchievementCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceAchievementModel.cs 513 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceAchievementModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceAchievementWin.cs 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceAchievementWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceItem.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServiceItem.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -437,6 +437,8 @@
        Register(typeof(HB204_tagMCIceLodeInfo), typeof(DTCB204_tagMCIceLodeInfo));
        Register(typeof(HB204_tagMCIceLodeInfo), typeof(DTCB204_tagMCIceLodeInfo));
        Register(typeof(HA806_tagMCMysticalShopTimeInfo), typeof(DTCA806_tagMCMysticalShopTimeInfo));
        Register(typeof(HAA0A_tagMCWeekPartyInfo), typeof(DTCAA0A_tagMCWeekPartyInfo));
        Register(typeof(HAA0B_tagMCWeekPartyPlayerInfo), typeof(DTCAA0B_tagMCWeekPartyPlayerInfo));
    }
    private static void Register(Type _pack, Type _business)
Core/GameEngine/Model/Config/WeekPartyConfig.cs
New file
@@ -0,0 +1,53 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Thursday, January 10, 2019
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class WeekPartyConfig : ConfigBase {
        public int Id { get ; private set ; }
        public int ActionType { get ; private set ; }
        public string Description { get ; private set; }
        public int jump { get ; private set ; }
        public int order { get ; private set ; }
        public int DailyQusetId { get ; private set ; }
        public override string getKey()
        {
            return Id.ToString();
        }
        public override void Parse() {
            try
            {
                Id=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
                ActionType=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0;
                Description = rawContents[2].Trim();
                jump=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0;
                order=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0;
                DailyQusetId=IsNumeric(rawContents[5]) ? int.Parse(rawContents[5]):0;
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/WeekPartyConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 59a36668b02da3d4fb47cbc1579228be
timeCreated: 1547105026
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -220,6 +220,7 @@
        AddAsyncTask<KingTreasureConfig>();
        AddAsyncTask<KingTreasureItemConfig>();
        AddAsyncTask<CrossServerBossConfig>();
        AddAsyncTask<WeekPartyConfig>();
        AddAsyncTask<FashionDressCabinetConfig>();
        AddAsyncTask<FashionDressConfig>();
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0A_tagMCWeekPartyInfo.cs
New file
@@ -0,0 +1,18 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
public class DTCAA0A_tagMCWeekPartyInfo : DtcBasic {     OpenServiceAchievementModel model { get { return ModelCenter.Instance.GetModel<OpenServiceAchievementModel>(); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA0A_tagMCWeekPartyInfo vNetData = vNetPack as HAA0A_tagMCWeekPartyInfo;         if (vNetData == null)
        {
            return;
        }
        model.WeekPartyInfo(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0A_tagMCWeekPartyInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 72692874cbc2b764695a9f3d16eaa2ef
timeCreated: 1546914880
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0B_tagMCWeekPartyPlayerInfo.cs
New file
@@ -0,0 +1,19 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
public class DTCAA0B_tagMCWeekPartyPlayerInfo : DtcBasic {
    OpenServiceAchievementModel model { get { return ModelCenter.Instance.GetModel<OpenServiceAchievementModel>(); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA0B_tagMCWeekPartyPlayerInfo vNetData = vNetPack as HAA0B_tagMCWeekPartyPlayerInfo;         if (vNetData == null)
        {
            return;
        }         model.WeekPartyPlayerInfo(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0B_tagMCWeekPartyPlayerInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 58aba46fc0042c3418fb8532a50ab92d
timeCreated: 1546914879
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0A_tagMCWeekPartyInfo.cs
New file
@@ -0,0 +1,88 @@
using UnityEngine;
using System.Collections;
// AA 0A 周狂欢活动信息 #tagMCWeekPartyInfo
public class HAA0A_tagMCWeekPartyInfo : GameNetPackBasic {
    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 DayCnt;    // 天数
    public  tagMCWeekPartyDayInfo[] DayInfoList;    // 每天模板
    public byte TCount;    // 模板数
    public  tagMCWeekPartyAction[] ActionInfo;    // 活动模板信息
    public HAA0A_tagMCWeekPartyInfo () {
        _cmd = (ushort)0xAA0A;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        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 DayCnt, vBytes, NetDataType.BYTE);
        DayInfoList = new tagMCWeekPartyDayInfo[DayCnt];
        for (int i = 0; i < DayCnt; i ++) {
            DayInfoList[i] = new tagMCWeekPartyDayInfo();
            TransBytes (out DayInfoList[i].ActCnt, vBytes, NetDataType.BYTE);
            TransBytes (out DayInfoList[i].TemplateList, vBytes, NetDataType.WORD, DayInfoList[i].ActCnt);
            TransBytes (out DayInfoList[i].PCount, vBytes, NetDataType.BYTE);
            DayInfoList[i].PItemInfo = new tagMCWeekPartyItem[DayInfoList[i].PCount];
            for (int j = 0; j < DayInfoList[i].PCount; j ++) {
                DayInfoList[i].PItemInfo[j] = new tagMCWeekPartyItem();
                TransBytes (out DayInfoList[i].PItemInfo[j].NeedPoint, vBytes, NetDataType.WORD);
                TransBytes (out DayInfoList[i].PItemInfo[j].ItemID, vBytes, NetDataType.DWORD);
                TransBytes (out DayInfoList[i].PItemInfo[j].ItemCnt, vBytes, NetDataType.WORD);
                TransBytes (out DayInfoList[i].PItemInfo[j].IsBind, vBytes, NetDataType.BYTE);
            }
        }
        TransBytes (out TCount, vBytes, NetDataType.BYTE);
        ActionInfo = new tagMCWeekPartyAction[TCount];
        for (int i = 0; i < TCount; i ++) {
            ActionInfo[i] = new tagMCWeekPartyAction();
            TransBytes (out ActionInfo[i].TemplateID, vBytes, NetDataType.DWORD);
            TransBytes (out ActionInfo[i].ActionType, vBytes, NetDataType.WORD);
            TransBytes (out ActionInfo[i].TotalTimes, vBytes, NetDataType.BYTE);
            TransBytes (out ActionInfo[i].SingleTimes, vBytes, NetDataType.DWORD);
            TransBytes (out ActionInfo[i].Point, vBytes, NetDataType.DWORD);
            TransBytes (out ActionInfo[i].Count, vBytes, NetDataType.BYTE);
            ActionInfo[i].ItemInfo = new tagMCWeekPartyItem[ActionInfo[i].Count];
            for (int j = 0; j < ActionInfo[i].Count; j ++) {
                ActionInfo[i].ItemInfo[j] = new tagMCWeekPartyItem();
                TransBytes (out ActionInfo[i].ItemInfo[j].NeedPoint, vBytes, NetDataType.WORD);
                TransBytes (out ActionInfo[i].ItemInfo[j].ItemID, vBytes, NetDataType.DWORD);
                TransBytes (out ActionInfo[i].ItemInfo[j].ItemCnt, vBytes, NetDataType.WORD);
                TransBytes (out ActionInfo[i].ItemInfo[j].IsBind, vBytes, NetDataType.BYTE);
            }
        }
    }
    public struct tagMCWeekPartyItem {
        public ushort NeedPoint;        // 领奖需要积分
        public uint ItemID;        // 物品ID
        public ushort ItemCnt;        // 物品数量
        public byte IsBind;        // 是否绑定
    }
    public struct tagMCWeekPartyAction {
        public uint TemplateID;        // 模板ID
        public ushort ActionType;        // 活动类别
        public byte TotalTimes;        // 可完成的总次数,0表示不限次数
        public uint SingleTimes;        // 单次领奖需要的次数
        public uint Point;        // 单次领奖积分
        public byte Count;        // 物品数
        public  tagMCWeekPartyItem[] ItemInfo;        // 物品信息
    }
    public struct tagMCWeekPartyDayInfo {
        public byte ActCnt;        // 数量
        public  ushort[] TemplateList;        // 模板列表
        public byte PCount;        // 物品数
        public  tagMCWeekPartyItem[] PItemInfo;        // 物品信息
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0A_tagMCWeekPartyInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 105a5325e78cad84baafa89fb8522311
timeCreated: 1546914879
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0B_tagMCWeekPartyPlayerInfo.cs
New file
@@ -0,0 +1,47 @@
using UnityEngine;
using System.Collections;
// AA 0B 周狂欢玩家活动信息 #tagMCWeekPartyPlayerInfo
public class HAA0B_tagMCWeekPartyPlayerInfo : GameNetPackBasic {
    public byte Count;
    public  tagMCWeekPartyDayPlayerInfo[] DayInfoList;    //活动完成次数信息
    public HAA0B_tagMCWeekPartyPlayerInfo () {
        _cmd = (ushort)0xAA0B;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out Count, vBytes, NetDataType.BYTE);
        DayInfoList = new tagMCWeekPartyDayPlayerInfo[Count];
        for (int i = 0; i < Count; i ++) {
            DayInfoList[i] = new tagMCWeekPartyDayPlayerInfo();
            TransBytes (out DayInfoList[i].DayIndex, vBytes, NetDataType.DWORD);
            TransBytes (out DayInfoList[i].Point, vBytes, NetDataType.DWORD);
            TransBytes (out DayInfoList[i].AwardRecord, vBytes, NetDataType.DWORD);
            TransBytes (out DayInfoList[i].ACount, vBytes, NetDataType.DWORD);
            DayInfoList[i].TaskList = new tagMCWeekPartyTaskInfo[DayInfoList[i].ACount];
            for (int j = 0; j < DayInfoList[i].ACount; j ++) {
                DayInfoList[i].TaskList[j] = new tagMCWeekPartyTaskInfo();
                TransBytes (out DayInfoList[i].TaskList[j].TemplateID, vBytes, NetDataType.WORD);
                TransBytes (out DayInfoList[i].TaskList[j].CurTimes, vBytes, NetDataType.WORD);
                TransBytes (out DayInfoList[i].TaskList[j].GotTimes, vBytes, NetDataType.WORD);
            }
        }
    }
    public struct tagMCWeekPartyDayPlayerInfo {
        public uint DayIndex;        //第X天
        public uint Point;        //积分
        public uint AwardRecord;        //积分领奖记录
        public uint ACount;        //任务条目数
        public  tagMCWeekPartyTaskInfo[] TaskList;        //活动完成次数信息
    }
    public struct tagMCWeekPartyTaskInfo {
        public ushort TemplateID;        // 模板ID
        public ushort CurTimes;        //已完成次数
        public ushort GotTimes;        //已领取次数
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0B_tagMCWeekPartyPlayerInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1ed838c254d198840b0c0e9e5da66eaa
timeCreated: 1546914879
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/MainInterfacePanel/HighSettingTip.cs
@@ -52,6 +52,7 @@
        [SerializeField] Button m_AllThePeopleBtn;//全民冲榜
        [SerializeField] Button m_FlashRushBtn;//限时抢购
        [SerializeField] Button m_CrossServerBtn;//跨服1V1按钮
        [SerializeField] Button m_OpenServiceBtn;//周狂欢按钮
        private bool _bool = true;
        private int swicthCdTime = 0;
        private bool IsFadeOut = true;
@@ -94,6 +95,7 @@
            m_AllThePeopleBtn.AddListener(OnClickmAllThePeopleBtn);
            m_FlashRushBtn.AddListener(OnClickFlashRushBtn);
            m_CrossServerBtn.AddListener(OnClickCrossServerBtn);
            m_OpenServiceBtn.AddListener(OnClickOpenServiceBtn);
            if (_bool)
            {
                ColseButton();
@@ -383,7 +385,11 @@
            }
        }
        void OnClickOpenServiceBtn()
        {
            WindowCenter.Instance.Open<AchievementActivityWin>();
        }
        public void ShowButton()//向上
        {
System/OpenServerActivity/AchievementActivityWin.cs
New file
@@ -0,0 +1,110 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, January 09, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    //成就活动面板
    public class AchievementActivityWin : Window
    {
        #region Built-in
        [SerializeField] FunctionButtonGroup FuncBtnGroup;
        [SerializeField] Button _CloseBtn;
        [SerializeField] Button _LeftBtn;
        [SerializeField] Button _RightBtn;
        [SerializeField] FunctionButton m_OpenServiceAchievementBtn;//周狂欢
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            _CloseBtn.AddListener(OnClickClose);
            _LeftBtn.AddListener(OnClickLeftBtn);
            _RightBtn.AddListener(OnClickRight);
            m_OpenServiceAchievementBtn.AddListener(OpenServiceAchievementButton);
        }
        protected override void OnPreOpen()
        {
            if (WindowCenter.Instance.IsOpen<MainInterfaceWin>())
            {
                WindowCenter.Instance.Close<MainInterfaceWin>();
            }
            functionOrder = 0;
        }
        protected override void OnActived()
        {
            FuncBtnGroup.TriggerByOrder(functionOrder);
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            CloseChild();
            if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>())
            {
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        protected override void OnAfterClose()
        {
        }
        public void OnClickClose()
        {
            Close();
        }
        public void OnClickLeftBtn()
        {
            FuncBtnGroup.TriggerLast();
        }
        public void OnClickRight()
        {
            FuncBtnGroup.TriggerNext();
        }
        void CloseChild()
        {
            if (WindowCenter.Instance.IsOpen<OpenServiceAchievementWin>())
            {
                WindowCenter.Instance.CloseImmediately<OpenServiceAchievementWin>();
            }
        }
        private void OpenServiceAchievementButton()
        {
            CloseChild();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<OpenServiceAchievementWin>();
            }
            else
            {
                WindowCenter.Instance.Open<OpenServiceAchievementWin>(true);
            }
            functionOrder = 0;
        }
        #endregion
    }
}
System/OpenServerActivity/AchievementActivityWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 3d89f97ebb8d8bf4ba18dd39af06835f
timeCreated: 1547026414
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/OpenServerActivity/OpenServiceAchievementCell.cs
New file
@@ -0,0 +1,191 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, January 08, 2019
//--------------------------------------------------------
using EnhancedUI.EnhancedScroller;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
using System;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class OpenServiceAchievementCell : ScrollerUI
    {
        [SerializeField] Text m_TextA;
        [SerializeField] Text m_TextB;
        [SerializeField] Text m_TextC;
        [SerializeField] Transform m_ItemList;
        [SerializeField] Button m_Btn;
        [SerializeField] Text m_BtnText;
        [SerializeField] GameObject m_Miss;//错过
        [SerializeField] GameObject m_Reach;//未达成
        [SerializeField] GameObject m_Draw;//已领取
        [SerializeField] Text m_TextNumber;//已领取次数
        OpenServiceAchievementModel model { get { return ModelCenter.Instance.GetModel<OpenServiceAchievementModel>(); } }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        public override void Refresh(CellView cell)
        {
            int ID = cell.index;
            var config = Config.Instance.Get<WeekPartyConfig>(ID);
            if (config==null||!model.WeekPartyDayInfoDic.ContainsKey(model.SelectedNow) || !model.WeekPartyActionDic.ContainsKey(ID))
            {
                return;
            }
            var WeekPartyAction = model.WeekPartyActionDic[ID];
            int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数
            int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数
            int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes;
            if (number - rewardNum > 0)
            {
                m_TextA.text = Language.Get("OSA_1", (number - rewardNum));
            }
            else
            {
                m_TextA.text = Language.Get("OSA_4");
            }
            m_TextB.text = string.Format(config.Description,1);
            m_TextC.text = Language.Get("OSA_2", WeekPartyAction.Point);
            for (int i = 0; i < m_ItemList.childCount; i++)
            {
                GameObject Obj = m_ItemList.GetChild(i).gameObject;
                ItemCell itemCell = Obj.GetComponent<ItemCell>();
                if (i < WeekPartyAction.WeekPartyItem.Length)
                {
                    Obj.SetActive(true);
                    var Item = WeekPartyAction.WeekPartyItem[i];
                    ItemCellModel cellModel = new ItemCellModel(Item.ItemID, true, (ulong)Item.ItemCnt, Item.IsBind);
                    itemCell.Init(cellModel);
                    itemCell.cellBtn.SetListener(() =>
                    {
                        ItemAttrData attrData = new ItemAttrData(Item.ItemID, false, (ulong)Item.ItemCnt, -1, Item.IsBind);
                        itemTipsModel.SetItemTipsModel(attrData);
                    });
                }
                else
                {
                    Obj.SetActive(false);
                }
            }
            if (model.SelectedNow != model.DayNow)
            {
                if (model.SelectedNow > model.DayNow)//还未到达的天数
                {
                    m_Btn.gameObject.SetActive(false);
                    m_TextNumber.gameObject.SetActive(false);
                    m_Miss.SetActive(false);
                    m_Reach.SetActive(false);
                    m_Draw.SetActive(false);
                }
                else//已过的天数
                {
                    int TaypeNumber = 0;
                    if (carryOutNum - rewardNum > 0)
                    {
                        TaypeNumber = (carryOutNum - rewardNum) / WeekPartyAction.SingleTimes;
                    }
                    if (TaypeNumber > 0)//可领
                    {
                        m_TextNumber.gameObject.SetActive(true);
                        m_TextNumber.text = carryOutNum + "/" + number;
                        m_Btn.gameObject.SetActive(true);
                        UIEffect uieffect = m_Btn.GetComponent<UIEffect>();
                        uieffect.Play();
                        m_BtnText.text = Language.Get("RealmPractice109");//领取
                        m_Miss.SetActive(false);
                        m_Reach.SetActive(false);
                        m_Draw.SetActive(false);
                        m_Btn.SetListener(() =>
                        {
                            model.SendGetWeekParty(model.SelectedNow, ID);
                            DebugEx.LogError("-----------------------------");
                        });
                    }
                    else
                    {
                        if (rewardNum >= number)//已经领完
                        {
                            m_TextNumber.gameObject.SetActive(false);
                            m_Btn.gameObject.SetActive(false);
                            m_Miss.SetActive(false);
                            m_Reach.SetActive(false);
                            m_Draw.SetActive(true);
                        }
                        else//未到达
                        {
                            m_TextNumber.gameObject.SetActive(false);
                            m_Btn.gameObject.SetActive(false);
                            m_Miss.SetActive(false);
                            m_Reach.SetActive(true);
                            m_Draw.SetActive(false);
                        }
                    }
                }
            }
            else//当前天
            {
                int TaypeNumber = 0;
                if (carryOutNum - rewardNum > 0)
                {
                    TaypeNumber = (carryOutNum - rewardNum) / WeekPartyAction.SingleTimes;
                }
                if (TaypeNumber > 0)//可领
                {
                    m_TextNumber.gameObject.SetActive(true);
                    m_TextNumber.text = carryOutNum + "/" + number;
                    m_Btn.gameObject.SetActive(true);
                    UIEffect uieffect = m_Btn.GetComponent<UIEffect>();
                    uieffect.Play();
                    m_BtnText.text = Language.Get("RealmPractice109");//领取
                    m_Miss.SetActive(false);
                    m_Reach.SetActive(false);
                    m_Draw.SetActive(false);
                    m_Btn.SetListener(() =>
                    {
                        model.SendGetWeekParty(model.SelectedNow, ID);
                        DebugEx.LogError("-----------------------------");
                    });
                }
                else
                {
                    if (rewardNum >= number)//已经领完
                    {
                        m_TextNumber.gameObject.SetActive(false);
                        m_Btn.gameObject.SetActive(false);
                        m_Miss.SetActive(false);
                        m_Reach.SetActive(false);
                        m_Draw.SetActive(true);
                    }
                    else//未到达(前往)
                    {
                        m_TextNumber.gameObject.SetActive(true);
                        m_TextNumber.text = carryOutNum + "/" + number;
                        m_Btn.gameObject.SetActive(true);
                        m_BtnText.text = Language.Get("RealmPractice108");//前往
                        UIEffect uieffect = m_Btn.GetComponent<UIEffect>();
                        uieffect.Stop();
                        m_Miss.SetActive(false);
                        m_Reach.SetActive(false);
                        m_Draw.SetActive(false);
                        m_Btn.SetListener(() =>
                        {
                            WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)config.jump);
                        });
                    }
                }
            }
        }
    }
}
System/OpenServerActivity/OpenServiceAchievementCell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4496751da23fc9a4398c7108cb98aa34
timeCreated: 1546914150
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/OpenServerActivity/OpenServiceAchievementModel.cs
New file
@@ -0,0 +1,513 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, January 08, 2019
//--------------------------------------------------------
using System;
using System.Collections.Generic;
using TableConfig;
using Snxxz.UI;
using System.Linq;
[XLua.LuaCallCSharp]
public class ActionTypeClass
{
    public int TemplateID;    // 模板ID
    public int CurTimes;    //已完成次数
    public int GotTimes;    //已领取次数
}
public class WeekPartyDayInfoClass
{
    public int DayIndex;//第X天
    public int Point;//积分
    public int AwardRecord;//领奖记录
    public ActionTypeClass[] ActionType;//领奖信息
}
public class TimeDayClass
{
    public int Year;
    public int Month;
    public int Day;
    public string TimeStr;
}
public class WeekPartyItemClass
{
    public int NeedPoint; // 领奖需要积分
    public int ItemID;   // 物品ID
    public int ItemCnt;   // 物品数量
    public int IsBind;    // 是否绑定
}
public class WeekPartyDayClass
{
    public int Day;
    public int[] TemplateList;// 模板列表
    public WeekPartyItemClass[] WeekPartyItem;//奖励列表
}
public class WeekPartyActionClass//模板信息
{
    public int TemplateID;   // 模板ID
    public int ActionType;    // 活动类别
    public int TotalTimes;    // 可完成的总次数,0表示不限次数
    public int SingleTimes;  // 单次领奖需要的次数
    public int Point;    // 单次领奖积分
    public WeekPartyItemClass[] WeekPartyItem;//物品奖励列表
}
public class OpenServiceAchievementModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
{
    public Dictionary<int, WeekPartyDayInfoClass> WeekPartyDayInfoDic = new Dictionary<int, WeekPartyDayInfoClass>();//每天领取奖励信息
    public event Action WeekPartyDayInfoUpdate;//领奖记录变更
    public TimeDayClass[] TimeDayBeginAndOver = new TimeDayClass[2];//开始和结束时间
    public int LimitLV = 0;//限制等级
    public Dictionary<int, WeekPartyDayClass> WeekPartyDayDic = new Dictionary<int, WeekPartyDayClass>();//每天的奖励信息
    public Dictionary<int, WeekPartyActionClass> WeekPartyActionDic = new Dictionary<int, WeekPartyActionClass>();//活动模板信息
    public Dictionary<int, Redpoint> RedPointDic = new Dictionary<int, Redpoint>();//红点
    public event Action WeekPartyUpdate;//活动信息变更
    private const int Redpoint_key1 = 21401;//周狂欢红点
    public Redpoint redPointStre1 = new Redpoint(214, Redpoint_key1);
    private int _SelectedNow = 0;
    private int ResetType = 0;// 重置类型,0-0点重置;1-5点重置
    public event Action IsOpenEvent;
    public int SelectedNow//选中天
    {
        get { return _SelectedNow; }
        set { _SelectedNow = value; }
    }
    private int _DayNow = 0;
    public int DayNow//当前天
    {
        get { return _DayNow; }
        set { _DayNow = value; }
    }
    private bool _IsOpen = false;//功能是否开启
    public bool IsOpen
    {
        get { return _IsOpen; }
        set { _IsOpen = value; }
    }
    public override void Init()
    {
    }
    public void OnBeforePlayerDataInitialize()
    {
    }
    public void OnPlayerLoginOk()
    {
        GlobalTimeEvent.Instance.secondEvent -= secondEvent;
        GlobalTimeEvent.Instance.secondEvent += secondEvent;
    }
    private void secondEvent()
    {
        GetIsOpen();//判断功能是否开启
    }
    public override void UnInit()
    {
    }
    public void WeekPartyPlayerInfo(HAA0B_tagMCWeekPartyPlayerInfo info)
    {
        for (int i = 0; i < info.Count; i++)
        {
            var DayInfo = info.DayInfoList[i];
            WeekPartyDayInfoClass WeekPartyDayInfo = new WeekPartyDayInfoClass();
            WeekPartyDayInfo.DayIndex = (int)DayInfo.DayIndex;
            WeekPartyDayInfo.Point = (int)DayInfo.Point;
            WeekPartyDayInfo.AwardRecord = (int)DayInfo.AwardRecord;
            WeekPartyDayInfo.ActionType = new ActionTypeClass[DayInfo.ACount];
            for (int k = 0; k < DayInfo.ACount; k++)
            {
                var Task = DayInfo.TaskList[k];
                ActionTypeClass ActionType = new ActionTypeClass();
                ActionType.TemplateID = Task.TemplateID;
                ActionType.CurTimes = Task.CurTimes;
                ActionType.GotTimes = Task.GotTimes;
                WeekPartyDayInfo.ActionType[k] = ActionType;
            }
            if (WeekPartyDayInfoDic.ContainsKey((int)DayInfo.DayIndex))
            {
                WeekPartyDayInfoDic[(int)DayInfo.DayIndex] = WeekPartyDayInfo;
            }
            else
            {
                WeekPartyDayInfoDic.Add((int)DayInfo.DayIndex, WeekPartyDayInfo);
            }
        }
        GetDayNow();//获取当前天数
        SetRedPoint();
        if (WeekPartyDayInfoUpdate != null)
        {
            WeekPartyDayInfoUpdate();
        }
    }
    public void WeekPartyInfo(HAA0A_tagMCWeekPartyInfo info)
    {
        ResetType = info.ResetType;
        string[] dateArray = info.StartDate.Split('-');
        if (dateArray != null && dateArray.Length == 3)
        {
            TimeDayClass TimeDay = new TimeDayClass();
            TimeDay.Year = int.Parse(dateArray[0].Trim());
            TimeDay.Month = int.Parse(dateArray[1].Trim());
            TimeDay.Day = int.Parse(dateArray[2].Trim());
            TimeDay.TimeStr = info.StartDate;
            TimeDayBeginAndOver[0] = TimeDay;
        }
        string[] dateArrayO = info.EndtDate.Split('-');
        if (dateArrayO != null && dateArrayO.Length == 3)
        {
            TimeDayClass TimeDay = new TimeDayClass();
            TimeDay.Year = int.Parse(dateArrayO[0].Trim());
            TimeDay.Month = int.Parse(dateArrayO[1].Trim());
            TimeDay.Day = int.Parse(dateArrayO[2].Trim());
            TimeDay.TimeStr = info.EndtDate;
            TimeDayBeginAndOver[1] = TimeDay;
        }
        LimitLV = info.LimitLV;
        for (int i = 0; i < info.DayCnt; i++)
        {
            int Index = i;
            var DayInfo = info.DayInfoList[i];
            WeekPartyDayClass WeekPartyDay = new WeekPartyDayClass();
            WeekPartyDay.TemplateList = new int[DayInfo.ActCnt];
            for (int k = 0; k < DayInfo.ActCnt; k++)
            {
                WeekPartyDay.TemplateList[k] = DayInfo.TemplateList[k];
            }
            WeekPartyDay.WeekPartyItem = new WeekPartyItemClass[DayInfo.PCount];
            for (int p = 0; p < DayInfo.PCount; p++)
            {
                WeekPartyItemClass WeekPartyItem = new WeekPartyItemClass();
                var Item = DayInfo.PItemInfo[p];
                WeekPartyItem.NeedPoint = Item.NeedPoint;
                WeekPartyItem.ItemID = (int)Item.ItemID;
                WeekPartyItem.ItemCnt = (int)Item.ItemCnt;
                WeekPartyItem.IsBind = (int)Item.IsBind;
                WeekPartyDay.WeekPartyItem[p] = WeekPartyItem;
            }
            if (WeekPartyDayDic.ContainsKey(Index))
            {
                WeekPartyDayDic[Index] = WeekPartyDay;
            }
            else
            {
                WeekPartyDayDic.Add(Index, WeekPartyDay);
            }
        }// 每天模板
        for (int i = 0; i < info.TCount; i++)
        {
            var ActionInfo = info.ActionInfo[i];
            WeekPartyActionClass WeekPartyAction = new WeekPartyActionClass();
            WeekPartyAction.TemplateID = (int)ActionInfo.TemplateID;
            WeekPartyAction.ActionType = (int)ActionInfo.ActionType;
            WeekPartyAction.TotalTimes = (int)ActionInfo.TotalTimes;
            WeekPartyAction.SingleTimes = (int)ActionInfo.SingleTimes;
            WeekPartyAction.Point = (int)ActionInfo.Point;
            WeekPartyAction.WeekPartyItem = new WeekPartyItemClass[ActionInfo.Count];
            for (int z = 0; z < ActionInfo.Count; z++)
            {
                var item = ActionInfo.ItemInfo[z];
                WeekPartyItemClass WeekPartyItem = new WeekPartyItemClass();
                WeekPartyItem.ItemID = (int)item.ItemID;
                WeekPartyItem.ItemCnt = (int)item.ItemCnt;
                WeekPartyItem.IsBind = item.IsBind;
                WeekPartyItem.NeedPoint = 0;
                WeekPartyAction.WeekPartyItem[z] = WeekPartyItem;
            }
            if (WeekPartyActionDic.ContainsKey((int)ActionInfo.TemplateID))
            {
                WeekPartyActionDic[(int)ActionInfo.TemplateID] = WeekPartyAction;
            }
            else
            {
                WeekPartyActionDic.Add((int)ActionInfo.TemplateID, WeekPartyAction);
            }
        }// 活动模板信息
        GetDayNow();
        SetRedPoint();
        if (WeekPartyUpdate != null)
        {
            WeekPartyUpdate();
        }
    }
    public int GetRewardNumber(int Day, int ID)//获取领奖次数
    {
        int Num = -1;
        if (WeekPartyDayInfoDic.ContainsKey(Day))
        {
            var WeekPartyDay = WeekPartyDayInfoDic[Day];
            for (int i = 0; i < WeekPartyDay.ActionType.Length; i++)
            {
                var ActionType = WeekPartyDay.ActionType[i];
                if (ID == ActionType.TemplateID)
                {
                    Num = ActionType.GotTimes;
                }
            }
        }
        return Num;
    }
    public int GetCarryOutNum(int Day, int ID)//获取已完成次数
    {
        int Num = 0;
        if (WeekPartyDayInfoDic.ContainsKey(Day))
        {
            var WeekPartyDay = WeekPartyDayInfoDic[Day];
            for (int i = 0; i < WeekPartyDay.ActionType.Length; i++)
            {
                var ActionType = WeekPartyDay.ActionType[i];
                if (ID == ActionType.TemplateID)
                {
                    Num = ActionType.CurTimes;
                }
            }
        }
        return Num;
    }
    public int GetPoint(int day)//获取某一天的积分
    {
        int Point = 0;
        if (WeekPartyDayInfoDic.ContainsKey(day))
        {
            Point = WeekPartyDayInfoDic[day].Point;
        }
        return Point;
    }
    public void GetDayNow()//获取活动第几天
    {
        int Day = 0;
        var time = TimeDayBeginAndOver[0];
        if (TimeDayBeginAndOver.Length <= 0 || time == null)
        {
            return;
        }
        int hour = 0;
        if (ResetType == 0)
        {
            hour = 0;
        }
        else
        {
            hour = 5;
        }
        DateTime time1 = new DateTime(time.Year, time.Month, time.Day, hour,0,0);
        DateTime time2 = new DateTime(TimeUtility.ServerNow.Year, TimeUtility.ServerNow.Month, TimeUtility.ServerNow.Day, TimeUtility.ServerNow.Hour, TimeUtility.ServerNow.Minute, TimeUtility.ServerNow.Second);
        TimeSpan ts = time2.Subtract(time1);
        Day = (int)ts.TotalDays;
        DebugEx.LogError("输出当前的天数" + Day);
        DayNow = Day;
    }
    public void SendGetWeekParty(int day, int temdayplateID)//领取周狂欢活动奖励
    {
        CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
        getReward.RewardType = (byte)GotServerRewardType.Def_RewardType_WeekPartyAct;
        getReward.DataEx = (uint)day;
        string StrID = temdayplateID.ToString();
        getReward.DataExStrLen = (byte)StrID.Length;
        getReward.DataExStr = StrID;
        GameNetSystem.Instance.SendInfo(getReward);
    }
    public void SendGetWeekPartyPoint(int day, int point)//领取周狂欢积分奖励
    {
        CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
        getReward.RewardType = (byte)GotServerRewardType.Def_RewardType_WeekPartyPoint;
        getReward.DataEx = (uint)day;
        string StrID = point.ToString();
        getReward.DataExStrLen = (byte)StrID.Length;
        getReward.DataExStr = StrID;
        GameNetSystem.Instance.SendInfo(getReward);
    }
    public bool IsDayReward(int day, int index)//是否领取奖励
    {
        bool _bool = false;
        int AwardRecord = 0;
        foreach (var key in WeekPartyDayInfoDic.Keys)
        {
            if (key == day)
            {
                AwardRecord = WeekPartyDayInfoDic[key].AwardRecord;
            }
        }
        _bool = MathUtility.GetBitValue((uint)AwardRecord, (ushort)index);
        return _bool;
    }
    private void SetRedPoint()//红点设置
    {
        SetRedPointId();
        foreach (var key in RedPointDic.Keys)
        {
            RedPointDic[key].state = RedPointState.None;
        }
        foreach (var key in RedPointDic.Keys)
        {
            RedPointDic[key].state = SetRedPointState(key);
        }
    }
    private void SetRedPointId()//设置红点ID
    {
        if (RedPointDic.Count > 0)
        {
            return;
        }
        foreach (var key in WeekPartyDayInfoDic.Keys)
        {
            int RedPoint = Redpoint_key1 * 10 + key;
            if (!RedPointDic.ContainsKey(key))
            {
                Redpoint redPointMountStare = new Redpoint(Redpoint_key1, RedPoint);
                RedPointDic.Add(key, redPointMountStare);
            }
        }
    }
    private RedPointState SetRedPointState(int day)//红点状态设置
    {
        if (!WeekPartyDayDic.ContainsKey(day) || !WeekPartyDayInfoDic.ContainsKey(day))
        {
            return RedPointState.None;
        }
        WeekPartyDayClass WeekPartyDay = new WeekPartyDayClass();
        int point = WeekPartyDayInfoDic[day].Point;
        foreach (var key in WeekPartyDayDic.Keys)
        {
            if (key == day)
            {
                WeekPartyDay = WeekPartyDayDic[key];
            }
        }
        for (int i = 0; i < WeekPartyDay.WeekPartyItem.Length; i++)//积分奖励
        {
            var item = WeekPartyDay.WeekPartyItem[i];
            int type = i;
            bool IsBool = IsDayReward(day, type);
            if (point >= item.NeedPoint && !IsBool)
            {
                return RedPointState.Simple;
            }
        }
        for (int i = 0; i < WeekPartyDay.TemplateList.Length; i++)
        {
            var TemplateID = WeekPartyDay.TemplateList[i];
            if (WeekPartyActionDic.ContainsKey(TemplateID))
            {
                var WeekPartyAction = WeekPartyActionDic[TemplateID];
                int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes;
                int rewardNum = GetRewardNumber(day, TemplateID);//已领奖次数
                int carryOutNum = GetCarryOutNum(day, TemplateID);//已完成次数
                int TaypeNumber = 0;
                if (carryOutNum - rewardNum > 0)
                {
                    TaypeNumber = (carryOutNum - rewardNum) / WeekPartyAction.SingleTimes;
                }
                if (TaypeNumber > 0)
                {
                    return RedPointState.Simple;
                }
            }
        }
        return RedPointState.None;
    }
    public  int GetWeekDay(int dayIndex)//获取周几
    {
        int weekDay = 1;
        var time = TimeDayBeginAndOver[0];
        if (TimeDayBeginAndOver.Length <= 0 || time == null)
        {
            return weekDay;
        }
        DateTime time1 = new DateTime(time.Year, time.Month, time.Day);
       var time2= time1.AddDays(dayIndex);
        var dt = time2.DayOfWeek.ToString();
        switch (dt)
        {
            case "Monday":
                weekDay = 1;
                break;
            case "Tuesday":
                weekDay = 2;
                break;
            case "Wednesday":
                weekDay = 3;
                break;
            case "Thursday":
                weekDay = 4;
                break;
            case "Friday":
                weekDay = 5;
                break;
            case "Saturday":
                weekDay = 6;
                break;
            case "Sunday":
                weekDay = 0;
                break;
        }
        return weekDay;
    }
    public void  GetIsOpen()
    {
        var time1 = TimeDayBeginAndOver[0];
        var time2 = TimeDayBeginAndOver[0];
        if (TimeDayBeginAndOver.Length <= 0 || time1 == null || time2 == null)
        {
            return;
        }
        int hour = 0;
        if (ResetType == 0)
        {
            hour = 0;
        }
        else
        {
            hour = 5;
        }
        DateTime timeStar = new DateTime(time1.Year, time1.Month, time1.Day, hour,0,0);
        DateTime timeEnd = new DateTime(time2.Year, time2.Month, time2.Day, hour, 0, 0);
        DateTime timeNow= new DateTime(TimeUtility.ServerNow.Year, TimeUtility.ServerNow.Month, TimeUtility.ServerNow.Day, TimeUtility.ServerNow.Hour, TimeUtility.ServerNow.Minute, TimeUtility.ServerNow.Second);
        int PlayerLv = PlayerDatas.Instance.baseData.LV;
        if (PlayerLv >= LimitLV && timeNow >= timeStar && timeNow < timeEnd && !_IsOpen)
        {
            _IsOpen = true;
            if (IsOpenEvent != null)
            {
                IsOpenEvent();
            }
        }
        if (timeNow > timeEnd && _IsOpen)
        {
            _IsOpen = false;
            if (IsOpenEvent != null)
            {
                IsOpenEvent();
            }
        }
    }
}
System/OpenServerActivity/OpenServiceAchievementModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 47b6c129d29b8ca468b66b208c1da32c
timeCreated: 1546914598
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/OpenServerActivity/OpenServiceAchievementWin.cs
New file
@@ -0,0 +1,357 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, January 07, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using EnhancedUI.EnhancedScroller;
namespace Snxxz.UI
{
    //开服成就
    [XLua.Hotfix]
    public class OpenServiceAchievementWin : Window
    {
        [SerializeField] ScrollerController m_ScrollerController1;//天
        [SerializeField] ScrollerController m_ScrollerController2;//列表
        [SerializeField] Button m_CloseBtn;
        [SerializeField] Text m_TextIntegral;//当前积分
        [SerializeField] GameObject m_One;
        [SerializeField] GameObject m_Two;
        [SerializeField] OpenServiceItem m_OpenServiceItemA;
        [SerializeField] OpenServiceItem m_OpenServiceItemA1;
        [SerializeField] OpenServiceItem m_OpenServiceItemB1;
        #region Built-in
        OpenServiceAchievementModel model { get { return ModelCenter.Instance.GetModel<OpenServiceAchievementModel>(); } }
        DailyQuestModel dailymodel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        List<int> SortList = new List<int>();
        List<WeekPartyItemClass> ItemDayList = new List<WeekPartyItemClass>();
        protected override void BindController()
        {
            m_ScrollerController1.OnRefreshCell += OnRefreshGridCell_1;
            m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_2;
        }
        protected override void AddListeners()
        {
            m_CloseBtn.AddListener(() => { Close(); });
        }
        protected override void OnPreOpen()
        {
            model.SelectedNow = model.DayNow;
            SetTextIntegral();
            OnCreateGridLineCell1(m_ScrollerController1);
            OnCreateGridLineCell2(m_ScrollerController2);
        }
        protected override void OnAfterOpen()
        {
            model.WeekPartyDayInfoUpdate += WeekPartyDayInfoUpdate;
        }
        protected override void OnPreClose()
        {
            model.WeekPartyDayInfoUpdate -= WeekPartyDayInfoUpdate;
        }
        protected override void OnAfterClose()
        {
        }
        private void WeekPartyDayInfoUpdate()//列表刷新
        {
            m_ScrollerController1.m_Scorller.RefreshActiveCellViews();//刷新可见
            m_ScrollerController2.m_Scorller.RefreshActiveCellViews();//刷新可见
        }
        #endregion
        void OnCreateGridLineCell1(ScrollerController gridCtrl)
        {
            gridCtrl.Refresh();
            foreach (var key in model.WeekPartyDayDic.Keys)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, key);
            }
            gridCtrl.Restart();
        }
        private void OnRefreshGridCell_1(ScrollerDataType type, CellView cell)
        {
            int Index = cell.index;
            ButtonEx Btn = cell.GetComponent<ButtonEx>();
            GameObject SelectedObj = cell.transform.Find("Image_XZ").gameObject;//选中
            GameObject SelectedObj1 = cell.transform.Find("Image_XZ1").gameObject;//选中
            GameObject Unselected = cell.transform.Find("Image_WXZ").gameObject;//未选中
            ImageEx UnselectedIm = Unselected.GetComponent<ImageEx>();
            GameObject Lock = cell.transform.Find("Lock").gameObject;//锁
            GameObject IsNotGary = cell.transform.Find("Obj1").gameObject;
            Text IsNotGary_text = IsNotGary.transform.Find("DayText").GetComponent<Text>();
            GameObject Gary= cell.transform.Find("Obj2").gameObject;
            Text Gary_text = Gary.transform.Find("DayText").GetComponent<Text>();
            RedpointBehaviour redPoint = cell.transform.Find("RedPoint").GetComponent<RedpointBehaviour>();//红点
            if (model.RedPointDic.ContainsKey(Index))
            {
                redPoint.redpointId = model.RedPointDic[Index].id;
            }
            if (Index <= model.DayNow)
            {
                Unselected.SetActive(true);
                UnselectedIm.gray = false;
                SelectedObj.SetActive(false);
                SelectedObj1.SetActive(false);
                Lock.SetActive(false);
                IsNotGary.SetActive(true);
                Gary.SetActive(false);
                IsNotGary_text.text = (Index + 1).ToString();
            }
            else
            {
                Unselected.SetActive(true);
                UnselectedIm.gray = true;
                SelectedObj.SetActive(false);
                SelectedObj1.SetActive(false);
                Lock.SetActive(true);
                IsNotGary.SetActive(false);
                Gary.SetActive(true);
                Gary_text.text = (Index + 1).ToString();
            }
            if (Index == model.SelectedNow)
            {
                SelectedObj.SetActive(true);
                SelectedObj1.SetActive(true);
                Unselected.SetActive(false);
                Lock.SetActive(false);
                IsNotGary.SetActive(true);
                Gary.SetActive(false);
                IsNotGary_text.text = (Index + 1).ToString();
            }
            Btn.SetListener(() =>
            {
                if (Index != model.SelectedNow && Index<= model.DayNow)
                {
                    model.SelectedNow = Index;//选中天
                    SetTextIntegral();
                    OnCreateGridLineCell2(m_ScrollerController2);
                    m_ScrollerController1.m_Scorller.RefreshActiveCellViews();//刷新可见
                }
            });
        }
        private string InDayStr(int Day)
        {
            string DaySte = string.Empty;
            DaySte = Language.Get("SignIn_4", Day);
            return DaySte;
        }
        //-------------------------------
        void OnCreateGridLineCell2(ScrollerController gridCtrl)
        {
            ToAddSorting();//排序
            GetPointRewardObj();//获取积分领奖信息
            gridCtrl.Refresh();
            for (int i = 0; i < SortList.Count; i++)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, SortList[i]);
            }
            gridCtrl.Restart();
        }
        private void OnRefreshGridCell_2(ScrollerDataType type, CellView cell)
        {
        }
        private void ToAddSorting()
        {
            SortList.Clear();
            int Weekday = model.GetWeekDay(model.SelectedNow);
            var quests = dailymodel.GetQuestByWeekTime(Weekday);
            List<int> dailyIdlist = new List<int>();
            foreach (var key in quests.Keys)
            {
                var _list = quests[key];
                for (int i = 0; i < _list.Count; i++)
                {
                    dailyIdlist.Add(_list[i]);
                }
            }
            foreach (var key in model.WeekPartyDayDic.Keys)
            {
                if (key == model.SelectedNow)
                {
                    for (int i = 0; i < model.WeekPartyDayDic[key].TemplateList.Length; i++)
                    {
                        var TemplateId = model.WeekPartyDayDic[key].TemplateList[i];
                        var config = Config.Instance.Get<WeekPartyConfig>(TemplateId);
                        if (config == null)
                        {
                            return;
                        }
                        if (config.DailyQusetId != 0)
                        {
                            if (dailyIdlist.Contains(config.DailyQusetId))
                            {
                                SortList.Add(TemplateId);
                            }
                           // var Dailyquse = Config.Instance.Get<DailyQuestConfig>(TemplateId);
                        }
                        else
                        {
                            SortList.Add(TemplateId);
                        }
                    }
                }
            }
            SortList.Sort(Compare);
        }
        int Compare(int x, int y)//数组排列
        {
            bool havex1 = IsReceive(x);
            bool havey1 = IsReceive(y);
            if (havex1.CompareTo(havey1) != 0)
            {
                return -havex1.CompareTo(havey1);
            }
            bool havex2 = Undone(x);
            bool havey2 = Undone(y);
            if (havex2.CompareTo(havey2) != 0)
            {
                return -havex2.CompareTo(havey2);
            }
            bool havex3 = Completed(x);
            bool havey3 = Completed(y);
            if (havex3.CompareTo(havey3) != 0)
            {
                return -havex3.CompareTo(havey3);
            }
            int havex4 = SizeId(x);
            int havey4 = SizeId(y);
            if (havex4.CompareTo(havey4) != 0)
            {
                return havex4.CompareTo(havey4);
            }
            return 1;
        }
        private bool IsReceive(int ID)//可领取
        {
            bool Bool = false;
            if (model.WeekPartyActionDic.ContainsKey(ID))
            {
                var WeekPartyAction = model.WeekPartyActionDic[ID];
                int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes;
                int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数
                int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数
                int TaypeNumber = 0;
                if (carryOutNum - rewardNum > 0)
                {
                    TaypeNumber = (carryOutNum - rewardNum) / WeekPartyAction.SingleTimes;
                }
                if (TaypeNumber > 0)
                {
                    Bool = true;
                }
            }
            return Bool;
        }
        private bool Undone(int ID)//未完成
        {
            bool Bool = false;
            if (model.WeekPartyActionDic.ContainsKey(ID))
            {
                var WeekPartyAction = model.WeekPartyActionDic[ID];
                int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes;
                int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数
                int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数
                int TaypeNumber = 0;
                if (carryOutNum - rewardNum > 0)
                {
                    TaypeNumber = (carryOutNum - rewardNum) / WeekPartyAction.SingleTimes;
                }
                if (TaypeNumber <= 0)
                {
                    Bool = true;
                }
            }
            return Bool;
        }
        private bool Completed(int ID)//已领取
        {
            bool Bool = false;
            if (model.WeekPartyActionDic.ContainsKey(ID))
            {
                var WeekPartyAction = model.WeekPartyActionDic[ID];
                int number = WeekPartyAction.TotalTimes / WeekPartyAction.SingleTimes;
                int rewardNum = model.GetRewardNumber(model.SelectedNow, ID);//已领奖次数
                int carryOutNum = model.GetCarryOutNum(model.SelectedNow, ID);//已完成次数
                if (rewardNum > number)
                {
                    Bool = true;
                }
            }
            return Bool;
        }
        private int SizeId(int ID)
        {
            int index = 1;
            var config = Config.Instance.Get<WeekPartyConfig>(ID);
            if (config != null)
            {
                index = config.order;
            }
            return index;
        }
        private void SetTextIntegral()//获取当前积分
        {
            int Point = model.GetPoint(model.SelectedNow);
            m_TextIntegral.text = Point.ToString();
        }
        private void GetPointRewardObj()
        {
            ItemDayList.Clear();
            foreach (var key in model.WeekPartyDayDic.Keys)
            {
                if (key == model.SelectedNow)
                {
                    for (int i = 0; i < model.WeekPartyDayDic[key].WeekPartyItem.Length; i++)
                    {
                        ItemDayList.Add(model.WeekPartyDayDic[key].WeekPartyItem[i]);
                    }
                }
            }
            if (ItemDayList.Count > 1)
            {
                m_One.SetActive(false);
                m_Two.SetActive(true);
                m_OpenServiceItemA1.SetReward(model.SelectedNow, ItemDayList[0],0);
                m_OpenServiceItemB1.SetReward(model.SelectedNow, ItemDayList[1],1);
            }
            else
            {
                m_One.SetActive(true);
                m_Two.SetActive(false);
                m_OpenServiceItemA.SetReward(model.SelectedNow, ItemDayList[0], 0);
            }
        }
    }
}
System/OpenServerActivity/OpenServiceAchievementWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a3ac1f2d21d751d44b6ccc8660a4514d
timeCreated: 1546852387
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/OpenServerActivity/OpenServiceItem.cs
New file
@@ -0,0 +1,69 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, January 09, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class OpenServiceItem : MonoBehaviour
    {
        [SerializeField] Text m_Text_A;
        [SerializeField] Image m_BGM;
        [SerializeField] Image m_ImageShow;
        [SerializeField] Text m_TextPoint;
        [SerializeField] Button m_ReceiveBtn;
        [SerializeField] GameObject m_IsReachImage;
        [SerializeField] GameObject m_IsDrawImage;
        OpenServiceAchievementModel model { get { return ModelCenter.Instance.GetModel<OpenServiceAchievementModel>(); } }
        public void SetReward(int day, WeekPartyItemClass item, int index)
        {
            int Point = model.GetPoint(day);
            m_TextPoint.text = Language.Get("OSA_3", item.NeedPoint);
            bool IsBool = model.IsDayReward(model.SelectedNow, index);
            if (model.SelectedNow > model.DayNow)
            {
                m_ReceiveBtn.gameObject.SetActive(false);
                m_IsReachImage.SetActive(false);
                m_IsDrawImage.SetActive(false);
            }
            else
            {
                if (Point >= item.NeedPoint && !IsBool)//可领
                {
                    m_ReceiveBtn.gameObject.SetActive(true);
                    m_ReceiveBtn.SetListener(() =>
                    {
                        model.SendGetWeekPartyPoint(model.SelectedNow, item.NeedPoint);
                    });
                    m_IsReachImage.SetActive(false);
                    m_IsDrawImage.SetActive(false);
                }
                else if (Point >= item.NeedPoint && IsBool)//已领
                {
                    m_ReceiveBtn.gameObject.SetActive(false);
                    m_IsReachImage.SetActive(false);
                    m_IsDrawImage.SetActive(true);
                }
                else if (item.NeedPoint > Point)
                {
                    m_ReceiveBtn.gameObject.SetActive(false);
                    m_IsReachImage.SetActive(true);
                    m_IsDrawImage.SetActive(false);
                }
            }
        }
    }
}
System/OpenServerActivity/OpenServiceItem.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0b9e5e0dad0ffd24c91131cd43d537a2
timeCreated: 1547014454
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/WindowBase/ModelCenter.cs
@@ -219,6 +219,7 @@
            RegisterModel<GatherSoulDungeonModel>();
            RegisterModel<KingTreasureModel>();
            RegisterModel<CrossServerBossModel>();
            RegisterModel<OpenServiceAchievementModel>();
            RegisterModel<FashionDressModel>();
            inited = true;
        }
Utility/EnumHelper.cs
@@ -1199,7 +1199,9 @@
    Def_RewardType_WishingWell = 16,//  许愿池奖励16
    Def_RewardType_OpenFunc = 17,//功能预告奖励
    Def_RewardType_TotalRecharge = 18,//累计充值奖励
    Def_RewardType_IceLodeStar, //冰晶矿脉星级奖励19
    Def_RewardType_IceLodeStar=19, //冰晶矿脉星级奖励19
    Def_RewardType_WeekPartyAct=20, //领取周狂欢活动奖励20
    Def_RewardType_WeekPartyPoint=21,// 领取周狂欢积分奖励21
}