少年修仙传客户端代码仓库
client_Zxw
2019-02-13 333be95a8c982bfda2c4a41a0a8d78a14f6512ed
5314 子 【1.6】登录奖励活动
2个文件已添加
6个文件已修改
500 ■■■■■ 已修改文件
Core/GameEngine/Model/Config/LoginRewardConfig.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/LoginRewardConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/EntryInformationCell.cs 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/ImpactRankModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/LoginRewardModel.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/LoginRewardWin.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/LoginRewardConfig.cs
New file
@@ -0,0 +1,56 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Wednesday, February 13, 2019
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class LoginRewardConfig : 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 int SpecialDisplayType { 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;
                SpecialDisplayType=IsNumeric(rawContents[6]) ? int.Parse(rawContents[6]):0;
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/LoginRewardConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 20bbea206a1a28d428792f768452039b
timeCreated: 1550027145
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -236,7 +236,7 @@
        AddAsyncTask<FestivalRedpackTaskConfig>();
        AddAsyncTask<HolidayHomingConfig>();
        AddAsyncTask<HolidayHomingPointConfig>();
        AddAsyncTask<LoginRewardConfig>();
        while (!AllCompleted())
        {
            var completedCount = 0;
System/OpenServerActivity/EntryInformationCell.cs
@@ -5,6 +5,7 @@
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI {
    [XLua.Hotfix]
@@ -12,19 +13,175 @@
        [SerializeField] ItemCell m_ItemCell;
        [SerializeField] Text m_Text1;
        [SerializeField] Text m_Text2;
        [SerializeField] Button m_Button;
        [SerializeField] Text m_ButtonText;
        [SerializeField] Button m_Btn;
        [SerializeField] Text m_BtnText;
        [SerializeField] GameObject m_Miss;//错过
        [SerializeField] GameObject m_Reach;//未达成
        [SerializeField] GameObject m_Draw;//已领取
        LoginRewardModel m_LoginRewardModel;
        LoginRewardModel loginRewardModel { get { return m_LoginRewardModel ?? (m_LoginRewardModel = ModelCenter.Instance.GetModel<LoginRewardModel>()); } }
        public Button mButton
        {
            get { return m_Button; }
            set { m_Button = value; }
        }
        LoginRewardModel loginRewardModel { get { return m_LoginRewardModel ?? (m_LoginRewardModel = ModelCenter.Instance.GetModel<LoginRewardModel>()); } }
        ItemTipsModel m_itemTipsModel;
        ItemTipsModel itemTipsModel { get { return m_itemTipsModel ?? (m_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        public void GetDisplayInformation(int id)
        {
            var config = Config.Instance.Get<LoginRewardConfig>(id);
            if (config == null)
            {
                DebugEx.LogError("登录奖励表没有此ID"+id);
                return;
            }
            if (!loginRewardModel.LoginAwardDic.ContainsKey(id))
            {
                DebugEx.LogError("登录条目字典查无次ID" + id);
                return;
            }
            var LoginAward = loginRewardModel.LoginAwardDic[id];
            int rewardNum = loginRewardModel.GetRewardNumber(loginRewardModel.SelectedNow, id);//已领奖次数
            int carryOutNum = loginRewardModel.GetCarryOutNum(loginRewardModel.SelectedNow, id);//已完成次数
            int number = LoginAward.TotalTimes / LoginAward.SingleTimes;
            var RemainingNum = 0;
            if (LoginAward.TotalTimes - rewardNum > 0)
            {
                RemainingNum = (LoginAward.TotalTimes - rewardNum) / LoginAward.SingleTimes;
            }
            if (LoginAward.TotalTimes - carryOutNum > 0 && RemainingNum > 0)
            {
                m_Text2.text = Language.Get("OSA_1", RemainingNum);
            }
            else
            {
                m_Text2.text = Language.Get("OSA_4");
            }
            if (LoginAward.WeekPartyItem.Length >= 0)
            {
                var Item = LoginAward.WeekPartyItem[0];
                ItemCellModel cellModel = new ItemCellModel(Item.ItemID, true, (ulong)Item.ItemCnt, Item.IsBind);
                m_ItemCell.Init(cellModel);
                m_ItemCell.cellBtn.SetListener(() =>
                {
                    ItemAttrData attrData = new ItemAttrData(Item.ItemID, false, (ulong)Item.ItemCnt, -1, Item.IsBind);
                    itemTipsModel.SetItemTipsModel(attrData);
                });
            }
            bool IsOpenPreviewTime = OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.LoginReward);
            if (loginRewardModel.SelectedNow != loginRewardModel.DayNow || IsOpenPreviewTime)
            {
                if (loginRewardModel.SelectedNow > loginRewardModel.DayNow || IsOpenPreviewTime)//还未到达的天数
                {
                    m_Btn.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) / LoginAward.SingleTimes;
                    }
                    if (TaypeNumber > 0)//可领
                    {
                        //m_TextNumber.gameObject.SetActive(true);
                        //m_TextNumber.text = SetText(ID);
                        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(() =>
                        {
                            bool _bool = loginRewardModel.IsOpenFeatures();
                            if (_bool)
                            {
                                loginRewardModel.SendLoginAwardInfo(loginRewardModel.SelectedNow, id);
                            }
                            else
                            {
                                SysNotifyMgr.Instance.ShowTip("SevenDayOver2");
                            }
                        });
                    }
                    else
                    {
                        if (rewardNum >= number)//已经领完
                        {
                            m_Btn.gameObject.SetActive(false);
                            m_Miss.SetActive(false);
                            m_Reach.SetActive(false);
                            m_Draw.SetActive(true);
                        }
                        else//未到达
                        {
                            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) / LoginAward.SingleTimes;
                }
                if (TaypeNumber > 0)//可领
                {
                    //m_TextNumber.gameObject.SetActive(true);
                    //m_TextNumber.text = SetText(ID);
                    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(() =>
                    {
                        bool _bool = loginRewardModel.IsOpenFeatures();
                        if (_bool)
                        {
                            loginRewardModel.SendLoginAwardInfo(loginRewardModel.SelectedNow, id);
                        }
                        else
                        {
                            SysNotifyMgr.Instance.ShowTip("SevenDayOver2");
                        }
                    });
                }
                else
                {
                    if (rewardNum >= LoginAward.TotalTimes)//已经领完
                    {
                        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 = SetText(ID);
                        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/ImpactRankModel.cs
@@ -833,6 +833,8 @@
            FestivalRedpack,
            [Header("幸运鉴宝")]
            LuckyTreasure,
            [Header("登录奖励")]
            LoginReward,
        }
    }
System/OpenServerActivity/LoginRewardModel.cs
@@ -8,9 +8,11 @@
using Snxxz.UI;
//登录奖励
[XLua.LuaCallCSharp]
public class LoginRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
public class LoginRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
{
    public event Action LoginAwardInfoUpdate;//领奖记录变更 
    public event Action<int> onStateUpate;
    public Dictionary<int, WeekPartyDayInfoClass> LoginAwardInfoDic = new Dictionary<int, WeekPartyDayInfoClass>();//领奖信息
    public Dictionary<int, WeekPartyDayClass> LoginAwardDayDic = new Dictionary<int, WeekPartyDayClass>();//每天的奖励信息
    public Dictionary<int, WeekPartyActionClass> LoginAwardDic = new Dictionary<int, WeekPartyActionClass>();//活动模板信息
@@ -18,12 +20,47 @@
    public int DayNow = 0;//当前天
    public int SelectedNow = 0;//获取选择天
    public int LimitLV = 0;//限制等级
    private const int Redpoint_key = 6666;//登录奖励红点
    public Redpoint redPointStre = new Redpoint(666, Redpoint_key);
    private const int Redpoint_key = 20921;//登录奖励红点
    public Redpoint redPointStre = new Redpoint(209, Redpoint_key);
    public bool IsOpen
    {
        get
        {
            return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.LoginReward);
        }
    }
    public bool IsAdvance
    {
        get
        {
            return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.LoginReward);
        }
    }
    public bool priorityOpen
    {
        get
        {
            if (redPointStre.state == RedPointState.GetReward || redPointStre.state == RedPointState.Simple)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    public override void Init()
    {
        OpenServerActivityCenter.Instance.Register(21, this);
        OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
    }
    public void OnBeforePlayerDataInitialize()
    {
@@ -34,6 +71,45 @@
    {
        GetDay();
        SetRedPoint();
        OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
        OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
        OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
        OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
    }
    private void OperationEndEvent(Operation arg1, int arg2)
    {
        if (arg1 == Operation.LoginReward  && arg2 == 0)
        {
            if (onStateUpate != null)
            {
                onStateUpate(21);
            }
        }
    }
    private void DayResetEvent(int obj)
    {
        if (obj == (int)Operation.LoginReward)
        {
            GetDay();
            SetRedPoint();
            if (onStateUpate != null)
            {
                onStateUpate(21);
            }
        }
    }
    private void OperationStartEvent(Operation arg1, int arg2)
    {
        if (arg1 == Operation.LoginReward)
        {
            GetDay();
            SetRedPoint();
            if (arg2 == 0 && onStateUpate != null)
            {
                onStateUpate(21);
            }
        }
    }
    public override void UnInit()
@@ -44,8 +120,8 @@
    public void LoginAwardInfo(HAA0C_tagMCActLoginAwardInfo info)//登录奖励活动信息
    {
        LimitLV = info.LimitLV;
        LoginAwardDayDic.Clear();
        LoginAwardDic.Clear();
        //LoginAwardDayDic.Clear();
        //LoginAwardDic.Clear();
        for (int i = 0; i < info.DayCnt; i++)//每天的奖励信息
        {
            int Index = i;
@@ -143,6 +219,7 @@
                LoginAwardInfoDic.Add(dayindex, loginAwardPlayerClass);
            }
        }
        GetDay();
        SetRedPoint();
        if (LoginAwardInfoUpdate != null)
        {
@@ -211,7 +288,7 @@
    }
    private void SetRedPointID()//设置红点ID
    {
        if (RedPointDic.Count > 0)
        if (RedPointDic.Count >= 7)
        {
            return;
        }
@@ -259,19 +336,36 @@
                    return RedPointState.GetReward;
                }
            }
        }
        return RedPointState.None;
    }
    private void GetDay()
    public void GetDay()
    {
        OperationBase operationBase;
        if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.LoginReward, out operationBase))
        {
            DayNow = (operationBase as EventDaysTime).GetInDayNow();
            int inday = (operationBase as EventDaysTime).GetInDayNow();
            if (LoginAwardInfoDic.Count <= 0 && inday <= 0)
            {
                DayNow = 0;
            } else if (inday >= 0 && LoginAwardInfoDic.Count > 0 && inday < LoginAwardInfoDic.Count)
            {
                DayNow = inday;
            }
            else if (LoginAwardInfoDic.Count > 0 && inday >= LoginAwardInfoDic.Count)
            {
                DayNow = LoginAwardInfoDic.Count - 1;
            }
        }
    }
    public bool IsOpenFeatures()
    {
        bool Isbool = false;
        Isbool = (OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.LoginReward)
            || OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.LoginReward));
        return Isbool;
    }
}
System/OpenServerActivity/LoginRewardWin.cs
@@ -6,10 +6,12 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class LoginRewardWin : Window
    {
@@ -32,7 +34,9 @@
        protected override void OnPreOpen()
        {
            ChooseDay();
            ChooseDay();
            OnCreateGridLineCell_1(m_ScrollerController_1);
            OnCreateGridLineCell_2(m_ScrollerController_2);
            if (loginRewardModel.SelectedNow >= 3)
@@ -42,7 +46,9 @@
        }
        protected override void OnAfterOpen()
        {
        {
            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
            OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
            loginRewardModel.LoginAwardInfoUpdate += LoginAwardInfoUpdate;
        }
@@ -52,11 +58,34 @@
        protected override void OnAfterClose()
        {
            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
            OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
            loginRewardModel.LoginAwardInfoUpdate -= LoginAwardInfoUpdate;
        }
        private void OperationStartEvent(Operation arg1, int arg2)
        {
            if (arg1 == Operation.LoginReward)
            {
                loginRewardModel.GetDay();
                m_ScrollerController_1.m_Scorller.RefreshActiveCellViews();//刷新可见
                m_ScrollerController_2.m_Scorller.RefreshActiveCellViews();//刷新可见
            }
        }
        private void DayResetEvent(int obj)
        {
            if (obj == (int)Operation.LoginReward)
            {
                loginRewardModel.GetDay();
                m_ScrollerController_1.m_Scorller.RefreshActiveCellViews();//刷新可见
                m_ScrollerController_2.m_Scorller.RefreshActiveCellViews();//刷新可见
            }
        }
        private void LoginAwardInfoUpdate()
        {
            loginRewardModel.GetDay();
            m_ScrollerController_1.m_Scorller.RefreshActiveCellViews();
            m_ScrollerController_2.m_Scorller.RefreshActiveCellViews();
        }
@@ -75,7 +104,7 @@
            int Index = cell.index;
            LogInDayNumber logInDayNumber = cell.GetComponent<LogInDayNumber>();
            logInDayNumber.SetInDayNumber(Index, loginRewardModel.SelectedNow);
            logInDayNumber.DayNumberBtn.SetListener(()=>
            logInDayNumber.DayNumberBtn.SetListener(() =>
            {
                if (loginRewardModel.SelectedNow != Index)
                {
@@ -87,10 +116,11 @@
        }
        void OnCreateGridLineCell_2(ScrollerController gridCtrl)
        {
            ToAddSorting();
            gridCtrl.Refresh();
            for (int i = 0; i < 10; i++)
            for (int i = 0; i < SortList.Count; i++)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, i);
                gridCtrl.AddCell(ScrollerDataType.Header, SortList[i]);
            }
            gridCtrl.Restart();
        }
@@ -98,11 +128,7 @@
        {
            int Index = cell.index;
            EntryInformationCell entryInformationCell = cell.GetComponent<EntryInformationCell>();
            entryInformationCell.GetDisplayInformation(1);
            entryInformationCell.mButton.SetListener(()=>
            {
               // m_ScrollerController_2.m_Scorller.RefreshActiveCellViews();//刷新可见
            });
            entryInformationCell.GetDisplayInformation(Index);
        }
        public void ChooseDay()//选择天
        {
@@ -137,7 +163,93 @@
        }
        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 (loginRewardModel.LoginAwardDic.ContainsKey(ID))
            {
                var loginAward = loginRewardModel.LoginAwardDic[ID];
                int number = loginAward.TotalTimes / loginAward.SingleTimes;
                int rewardNum = loginRewardModel.GetRewardNumber(loginRewardModel.SelectedNow, ID);//已领奖次数
                int carryOutNum = loginRewardModel.GetCarryOutNum(loginRewardModel.SelectedNow, ID);//已完成次数
                int TaypeNumber = 0;
                if (carryOutNum - rewardNum > 0)
                {
                    TaypeNumber = (carryOutNum - rewardNum) / loginAward.SingleTimes;
                }
                if (TaypeNumber > 0)
                {
                    Bool = true;
                }
            }
            return Bool;
        }
        private bool Undone(int ID)//未完成
        {
            bool Bool = false;
            if (loginRewardModel.LoginAwardDic.ContainsKey(ID))
            {
                var loginAward = loginRewardModel.LoginAwardDic[ID];
                int number = loginAward.TotalTimes / loginAward.SingleTimes;
                int rewardNum = loginRewardModel.GetRewardNumber(loginRewardModel.SelectedNow, ID);//已领奖次数
                int carryOutNum = loginRewardModel.GetCarryOutNum(loginRewardModel.SelectedNow, ID);//已完成次数
                if (loginAward.TotalTimes > rewardNum)
                {
                    Bool = true;
                }
            }
            return Bool;
        }
        private bool Completed(int ID)//已领取
        {
            bool Bool = false;
            if (loginRewardModel.LoginAwardDic.ContainsKey(ID))
            {
                var loginAward = loginRewardModel.LoginAwardDic[ID];
                int rewardNum = loginRewardModel.GetRewardNumber(loginRewardModel.SelectedNow, ID);//已领奖次数
                int carryOutNum = loginRewardModel.GetCarryOutNum(loginRewardModel.SelectedNow, ID);//已完成次数
                if (rewardNum >= loginAward.TotalTimes)
                {
                    Bool = true;
                }
            }
            return Bool;
        }
        private int SizeId(int ID)
        {
            int index = 1;
            var config = Config.Instance.Get<LoginRewardConfig>(ID);
            if (config != null)
            {
                index = config.order;
            }
            return index;
        }
    }
System/OpenServerActivity/OpenServerActivityWin.cs
@@ -633,6 +633,11 @@
                case 19:
                    WindowCenter.Instance.Open<FestivalRedpackWin>(true);
                    break;
                case 20:
                    break;
                case 21:
                    WindowCenter.Instance.Open<LoginRewardWin>(true);
                    break;
            }
        }