少年修仙传客户端代码仓库
client_Zxw
2019-01-18 3a6fea4b9598bf899de808e465915cec7d4eaa6f
5314 子 【1.5.100】登录奖励活动
8个文件已添加
4个文件已修改
439 ■■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0C_tagMCActLoginAwardInfo.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0C_tagMCActLoginAwardInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0D_tagMCActLoginAwardPlayerInfo.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0D_tagMCActLoginAwardPlayerInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0C_tagMCActLoginAwardInfo.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0C_tagMCActLoginAwardInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0D_tagMCActLoginAwardPlayerInfo.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0D_tagMCActLoginAwardPlayerInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/LoginRewardModel.cs 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -433,6 +433,8 @@
        Register(typeof(HA806_tagMCMysticalShopTimeInfo), typeof(DTCA806_tagMCMysticalShopTimeInfo));
        Register(typeof(HAA0A_tagMCWeekPartyInfo), typeof(DTCAA0A_tagMCWeekPartyInfo));
        Register(typeof(HAA0B_tagMCWeekPartyPlayerInfo), typeof(DTCAA0B_tagMCWeekPartyPlayerInfo));
        Register(typeof(HAA0C_tagMCActLoginAwardInfo), typeof(DTCAA0C_tagMCActLoginAwardInfo));
        Register(typeof(HAA0D_tagMCActLoginAwardPlayerInfo), typeof(DTCAA0D_tagMCActLoginAwardPlayerInfo));
    }
    private static void Register(Type _pack, Type _business)
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0C_tagMCActLoginAwardInfo.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
public class DTCAA0C_tagMCActLoginAwardInfo : DtcBasic {
    LoginRewardModel m_LoginRewardModel;
    LoginRewardModel loginRewardModel { get { return m_LoginRewardModel ?? (m_LoginRewardModel = ModelCenter.Instance.GetModel<LoginRewardModel>()); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA0C_tagMCActLoginAwardInfo vNetData = vNetPack as HAA0C_tagMCActLoginAwardInfo;         if (vNetData == null)
        {
            return;
        }         loginRewardModel.LoginAwardInfo(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0C_tagMCActLoginAwardInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7a1f6e4974acd9e4fa893257d4a0a5a3
timeCreated: 1547783303
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0D_tagMCActLoginAwardPlayerInfo.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
public class DTCAA0D_tagMCActLoginAwardPlayerInfo : DtcBasic {
    LoginRewardModel m_LoginRewardModel;
    LoginRewardModel loginRewardModel { get { return m_LoginRewardModel ?? (m_LoginRewardModel = ModelCenter.Instance.GetModel<LoginRewardModel>()); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA0D_tagMCActLoginAwardPlayerInfo vNetData = vNetPack as HAA0D_tagMCActLoginAwardPlayerInfo;         if (vNetData == null)
        {
            return;
        }
        loginRewardModel.LoginAwardPlayerInfo(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA0D_tagMCActLoginAwardPlayerInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 34ae4e7c0f7c0184391054f28930408a
timeCreated: 1547783303
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0C_tagMCActLoginAwardInfo.cs
New file
@@ -0,0 +1,75 @@
using UnityEngine;
using System.Collections;
// AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
public class HAA0C_tagMCActLoginAwardInfo : GameNetPackBasic {
    public string StartDate;    // 开始日期 y-m-d
    public string EndtDate;    // 结束日期 y-m-d
    public ushort AdvanceMinutes;    // 提前显示分钟
    public byte IsDayReset;    //是否每天重置
    public byte ResetType;    // 重置类型,0-0点重置;1-5点重置
    public ushort LimitLV;    // 限制等级
    public byte DayCnt;    // 天数
    public  tagMCActLoginAwardDayInfo[] DayInfoList;    // 每天模板
    public byte TCount;    // 模板数
    public  tagMCActLoginAwardAction[] ActionInfo;    // 活动模板信息
    public HAA0C_tagMCActLoginAwardInfo () {
        _cmd = (ushort)0xAA0C;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out AdvanceMinutes, vBytes, NetDataType.WORD);
        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 tagMCActLoginAwardDayInfo[DayCnt];
        for (int i = 0; i < DayCnt; i ++) {
            DayInfoList[i] = new tagMCActLoginAwardDayInfo();
            TransBytes (out DayInfoList[i].ActCnt, vBytes, NetDataType.BYTE);
            TransBytes (out DayInfoList[i].TemplateList, vBytes, NetDataType.WORD, DayInfoList[i].ActCnt);
        }
        TransBytes (out TCount, vBytes, NetDataType.BYTE);
        ActionInfo = new tagMCActLoginAwardAction[TCount];
        for (int i = 0; i < TCount; i ++) {
            ActionInfo[i] = new tagMCActLoginAwardAction();
            TransBytes (out ActionInfo[i].TemplateID, vBytes, NetDataType.DWORD);
            TransBytes (out ActionInfo[i].ActionType, vBytes, NetDataType.WORD);
            TransBytes (out ActionInfo[i].TotalTimes, vBytes, NetDataType.DWORD);
            TransBytes (out ActionInfo[i].SingleTimes, vBytes, NetDataType.DWORD);
            TransBytes (out ActionInfo[i].Count, vBytes, NetDataType.BYTE);
            ActionInfo[i].ItemInfo = new tagMCActLoginAwardItem[ActionInfo[i].Count];
            for (int j = 0; j < ActionInfo[i].Count; j ++) {
                ActionInfo[i].ItemInfo[j] = new tagMCActLoginAwardItem();
                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 tagMCActLoginAwardItem {
        public uint ItemID;        // 物品ID
        public ushort ItemCnt;        // 物品数量
        public byte IsBind;        // 是否绑定
    }
    public struct tagMCActLoginAwardAction {
        public uint TemplateID;        // 模板ID
        public ushort ActionType;        // 活动类别
        public uint TotalTimes;        // 可完成的总次数,0表示不限次数
        public uint SingleTimes;        // 单次领奖需要的次数
        public byte Count;        // 物品数
        public  tagMCActLoginAwardItem[] ItemInfo;        // 物品信息
    }
    public struct tagMCActLoginAwardDayInfo {
        public byte ActCnt;        // 数量
        public  ushort[] TemplateList;        // 模板列表
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0C_tagMCActLoginAwardInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b1fcb37796d75a545a76f01f1ec085bf
timeCreated: 1547783303
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0D_tagMCActLoginAwardPlayerInfo.cs
New file
@@ -0,0 +1,43 @@
using UnityEngine;
using System.Collections;
// AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
public class HAA0D_tagMCActLoginAwardPlayerInfo : GameNetPackBasic {
    public byte Count;
    public  tagMCActLoginAwardDayPlayerInfo[] DayInfoList;    //活动完成次数信息
    public HAA0D_tagMCActLoginAwardPlayerInfo () {
        _cmd = (ushort)0xAA0D;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out Count, vBytes, NetDataType.BYTE);
        DayInfoList = new tagMCActLoginAwardDayPlayerInfo[Count];
        for (int i = 0; i < Count; i ++) {
            DayInfoList[i] = new tagMCActLoginAwardDayPlayerInfo();
            TransBytes (out DayInfoList[i].DayIndex, vBytes, NetDataType.DWORD);
            TransBytes (out DayInfoList[i].ACount, vBytes, NetDataType.DWORD);
            DayInfoList[i].TaskList = new tagMCActLoginAwardTaskInfo[DayInfoList[i].ACount];
            for (int j = 0; j < DayInfoList[i].ACount; j ++) {
                DayInfoList[i].TaskList[j] = new tagMCActLoginAwardTaskInfo();
                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 tagMCActLoginAwardDayPlayerInfo {
        public uint DayIndex;        //第X天
        public uint ACount;        //任务条目数
        public  tagMCActLoginAwardTaskInfo[] TaskList;        //活动完成次数信息
    }
    public struct tagMCActLoginAwardTaskInfo {
        public ushort TemplateID;        // 模板ID
        public ushort CurTimes;        //已完成次数
        public ushort GotTimes;        //已领取次数
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA0D_tagMCActLoginAwardPlayerInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0ba7797ba0b9ed64daf82d4441538adf
timeCreated: 1547783303
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/OpenServerActivity/LoginRewardModel.cs
@@ -10,6 +10,14 @@
[XLua.LuaCallCSharp]
public class LoginRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
{
    public event Action LoginAwardInfoUpdate;//领奖记录变更
    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>();//活动模板信息
    public Dictionary<int, Redpoint> RedPointDic = new Dictionary<int, Redpoint>();//红点
    public int LimitLV = 0;//限制等级
    private const int Redpoint_key = 6666;//周狂欢红点
    public Redpoint redPointStre = new Redpoint(666, Redpoint_key);
    public override void Init()
    {
      
@@ -17,18 +25,234 @@
    public void OnBeforePlayerDataInitialize()
    {
        LoginAwardInfoDic.Clear();
    }
    public void OnPlayerLoginOk()
    {
        SetRedPoint();
    }
    public override void UnInit()
    {
        
    }
    public void LoginAwardInfo(HAA0C_tagMCActLoginAwardInfo info)//登录奖励活动信息
    {
        LimitLV = info.LimitLV;
        LoginAwardDayDic.Clear();
        LoginAwardDic.Clear();
        for (int i = 0; i < info.DayCnt; i++)//每天的奖励信息
        {
            int Index = i;
            var dayInfo = info.DayInfoList[i];
            WeekPartyDayClass loginAwardDay = new WeekPartyDayClass();
            loginAwardDay.TemplateList = new int[dayInfo.ActCnt];
            for (int k = 0; k < dayInfo.ActCnt; k++)
            {
                loginAwardDay.TemplateList[k] = dayInfo.TemplateList[k];
            }
            if (LoginAwardDayDic.ContainsKey(Index))
            {
                LoginAwardDayDic[Index] = loginAwardDay;
            }
            else
            {
                LoginAwardDayDic.Add(Index, loginAwardDay);
            }
        }
        for (int i = 0; i < info.TCount; i++)// 活动模板信息
        {
            var ActionInfo = info.ActionInfo[i];
            var templateID = (int)ActionInfo.TemplateID;
            WeekPartyActionClass loginAward = new WeekPartyActionClass();
            loginAward.TemplateID = (int)ActionInfo.TemplateID;
            loginAward.ActionType = (int)ActionInfo.ActionType;
            loginAward.TotalTimes = (int)ActionInfo.TotalTimes;
            loginAward.SingleTimes = (int)ActionInfo.SingleTimes;
            loginAward.WeekPartyItem = new WeekPartyItemClass[ActionInfo.Count];
            for (int z = 0; z < ActionInfo.Count; z++)
            {
                var item = ActionInfo.ItemInfo[z];
                WeekPartyItemClass loginAwardItem = new WeekPartyItemClass();
                loginAwardItem.ItemID = (int)item.ItemID;
                loginAwardItem.ItemCnt = (int)item.ItemCnt;
                loginAwardItem.IsBind = item.IsBind;
                loginAward.WeekPartyItem[z] = loginAwardItem;
            }
            if (LoginAwardDic.ContainsKey(templateID))
            {
                LoginAwardDic[templateID] = loginAward;
            }
            else
            {
                LoginAwardDic.Add(templateID, loginAward);
            }
        }
    }
    public void LoginAwardPlayerInfo(HAA0D_tagMCActLoginAwardPlayerInfo info)//登录奖励玩家活动信息
    {
        for (int i = 0; i < info.Count; i++)
        {
            var Dayinfo = info.DayInfoList[i];
            WeekPartyDayInfoClass loginAwardPlayerClass = new WeekPartyDayInfoClass();
            var dayindex = (int)Dayinfo.DayIndex;
            loginAwardPlayerClass.DayIndex = dayindex;
            if (LoginAwardInfoDic.ContainsKey(dayindex))
            {
                var dit = LoginAwardInfoDic[dayindex];
                dit.DayIndex = dayindex;
                for (int j = 0; j < dit.ActionType.Length; j++)
                {
                    if (dit.ActionType[j].TemplateID == Dayinfo.TaskList[0].TemplateID)
                    {
                        ActionTypeClass ActionType = new ActionTypeClass();
                        ActionType.TemplateID = Dayinfo.TaskList[0].TemplateID;
                        ActionType.CurTimes = Dayinfo.TaskList[0].CurTimes;
                        ActionType.GotTimes = Dayinfo.TaskList[0].GotTimes;
                        dit.ActionType[j] = ActionType;
                    }
                }
                LoginAwardInfoDic[dayindex] = dit;
            }
            else
            {
                loginAwardPlayerClass.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;
                    LoginAwardInfoDic.Add(dayindex, loginAwardPlayerClass);
                }
            }
        }
        SetRedPoint();
        if (LoginAwardInfoUpdate != null)
        {
            LoginAwardInfoUpdate();
        }
    }
    public int GetRewardNumber(int Day, int ID)//获取领奖次数
    {
        int Num = 0;
        if (LoginAwardInfoDic.ContainsKey(Day))
        {
            var loginAward = LoginAwardInfoDic[Day];
            for (int i = 0; i < loginAward.ActionType.Length; i++)
            {
                var ActionType = loginAward.ActionType[i];
                if (ID == ActionType.TemplateID)
                {
                    Num = ActionType.GotTimes;
                }
            }
        }
        return Num;
    }
    public int GetCarryOutNum(int Day,int ID)//获取已完成次数
    {
        int Num = 0;
        if (LoginAwardInfoDic.ContainsKey(Day))
        {
            var loginAward = LoginAwardInfoDic[Day];
            for (int i = 0; i < loginAward.ActionType.Length; i++)
            {
                var ActionType = loginAward.ActionType[i];
                if (ID == ActionType.TemplateID)
                {
                    Num = ActionType.CurTimes;
                }
            }
        }
        return Num;
    }
    public void SendLoginAwardInfo(int day, int temdayplateID)//领取奖励
    {
        CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
        getReward.RewardType = (byte)GotServerRewardType.Def_RewardType_ActLoginAwardAct;
        getReward.DataEx = (uint)day;
        string StrID = temdayplateID.ToString();
        getReward.DataExStrLen = (byte)StrID.Length;
        getReward.DataExStr = StrID;
        GameNetSystem.Instance.SendInfo(getReward);
    }
    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 LoginAwardInfoDic.Keys)
        {
            int RedPoint = Redpoint_key * 10 + key;
            if (!RedPointDic.ContainsKey(key))
            {
                Redpoint redPointMountStare = new Redpoint(Redpoint_key, RedPoint);
                RedPointDic.Add(key, redPointMountStare);
            }
        }
    }
    private RedPointState SetRedPointState(int day)//红点状态设置
    {
        if (!LoginAwardDayDic.ContainsKey(day) || !LoginAwardInfoDic.ContainsKey(day))
        {
            return RedPointState.None;
        }
        WeekPartyDayClass loginAward = new WeekPartyDayClass();
        foreach (var key in LoginAwardDayDic.Keys)
        {
            if (key == day)
            {
                loginAward = LoginAwardDayDic[key];
            }
        }
        for (int i = 0; i < loginAward.TemplateList.Length; i++)
        {
            var TemplateID = loginAward.TemplateList[i];
            if (LoginAwardDic.ContainsKey(TemplateID))
            {
                var LoginAward = LoginAwardDic[TemplateID];
                int number = LoginAward.TotalTimes / LoginAward.SingleTimes;
                int rewardNum = GetRewardNumber(day, TemplateID);//已领奖次数
                int carryOutNum = GetCarryOutNum(day, TemplateID);//已完成次数
                int TaypeNumber = 0;
                if (carryOutNum - rewardNum > 0)
                {
                    TaypeNumber = (carryOutNum - rewardNum) / LoginAward.SingleTimes;
                }
                if (TaypeNumber > 0 && rewardNum < number)
                {
                    return RedPointState.GetReward;
                }
            }
        }
        return RedPointState.None;
    }
}
System/WindowBase/ModelCenter.cs
@@ -221,6 +221,7 @@
            RegisterModel<CrossServerBossModel>();
            RegisterModel<OpenServiceAchievementModel>();
            RegisterModel<FashionDressModel>();
            RegisterModel<LoginRewardModel>();
            inited = true;
        }
Utility/EnumHelper.cs
@@ -1203,6 +1203,8 @@
    Def_RewardType_IceLodeStar=19, //冰晶矿脉星级奖励19
    Def_RewardType_WeekPartyAct=20, //领取周狂欢活动奖励20
    Def_RewardType_WeekPartyPoint=21,// 领取周狂欢积分奖励21
    Def_RewardType_ActLoginAwardAct=22,// 领取登录奖励活动奖励22
}