Procházet zdrojové kódy

摘星抽奖奖励领取

huangxiaoyue před 1 rokem
rodič
revize
0a81d0c5d9

+ 43 - 5
GameClient/Assets/Game/HotUpdate/Data/ActivityDataManager.cs

@@ -10,6 +10,10 @@ namespace GFGGame
             allPlayTimes = 0;
             lastActLuckyBoxId = 0;
             lastActLimitChargeId = 0;
+
+            luckyActTsyBonusState.Clear();
+            allTsyPlayTimes = 0;
+            lastActLimitTsyId = 0;
         }
 
         /**********************************************************活动*************************************************/
@@ -41,7 +45,9 @@ namespace GFGGame
 
         /**********************************************************限时抽奖活动*********************************************/
         public int lastActLuckyBoxId = 0;
+        public int lastActLimitTsyId = 0;
         private int _actLuckyBoxId = 0;
+        private int _actLuckyTsyId = 0;
         /// <summary>
         /// 当前抽奖活动id
         /// </summary>
@@ -63,14 +69,46 @@ namespace GFGGame
         /// <typeparam name="int">值由ConstBonusStatus定义</typeparam>
         /// <returns></returns>
         public Dictionary<int, int> luckyBoxActBonusState = new Dictionary<int, int>();
-        public List<ActivityLuckybonusCfg> SortActivityLuckybonusCfg(List<ActivityLuckybonusCfg> list)
+
+        /// <summary>
+        /// 当前天市垣抽奖活动id
+        /// </summary>
+        /// <value></value>
+        public int actLimitTsyId { get { return _actLuckyTsyId; } set { _actLuckyTsyId = value; } }
+        /// <summary>
+        /// 天市垣抽奖总次数
+        /// </summary>
+        /// <value></value>
+        public long allTsyPlayTimes { get; set; }
+        /// <summary>
+        /// 限时天市垣抽奖必掉次数
+        /// </summary>
+        /// <value></value>
+        public int lastTsyDrawCount { get; set; }
+        /// <summary>
+        /// </summary>
+        /// <typeparam name="int">奖励key,这里对应天市垣抽奖次数</typeparam>
+        /// <typeparam name="int">值由ConstBonusStatus定义</typeparam>
+        /// <returns></returns>
+        public Dictionary<int, int> luckyActTsyBonusState = new Dictionary<int, int>();
+        public List<ActivityLuckybonusCfg> SortActivityLuckybonusCfg(List<ActivityLuckybonusCfg> list,int typeId)
         {
             list.Sort((ActivityLuckybonusCfg a, ActivityLuckybonusCfg b) =>
             {
-
-                long allPlayTimes = ActivityDataManager.Instance.allPlayTimes;// GameGlobal.myNumericComponent.GetAsInt(NumericType.TotalRechargeScore);
-                int stateA = ActivityDataManager.Instance.luckyBoxActBonusState.ContainsKey(a.num) ? 1 : -1;
-                int stateB = ActivityDataManager.Instance.luckyBoxActBonusState.ContainsKey(b.num) ? 1 : -1;
+                long allPlayTimes = 0;
+                int stateA = 0;
+                int stateB = 0;
+                if (typeId == ConstLimitTimeActivityType.ActLimitLuckyBox) {
+                    allPlayTimes = ActivityDataManager.Instance.allPlayTimes;// GameGlobal.myNumericComponent.GetAsInt(NumericType.TotalRechargeScore);
+                    stateA = ActivityDataManager.Instance.luckyBoxActBonusState.ContainsKey(a.num) ? 1 : -1;
+                    stateB = ActivityDataManager.Instance.luckyBoxActBonusState.ContainsKey(b.num) ? 1 : -1;
+                }
+                else if(typeId == ConstLimitTimeActivityType.ActLimitTsy) 
+                {
+                    allPlayTimes = ActivityDataManager.Instance.allTsyPlayTimes;// GameGlobal.myNumericComponent.GetAsInt(NumericType.TotalRechargeScore);
+                    stateA = ActivityDataManager.Instance.luckyActTsyBonusState.ContainsKey(a.num) ? 1 : -1;
+                    stateB = ActivityDataManager.Instance.luckyActTsyBonusState.ContainsKey(b.num) ? 1 : -1;
+                }
 
                 if (allPlayTimes >= a.num && allPlayTimes < b.num && stateA < 0) return -1;
                 if (allPlayTimes >= b.num && allPlayTimes < a.num && stateB < 0) return 1;

+ 25 - 8
GameClient/Assets/Game/HotUpdate/ServerProxy/ActivitySProxy.cs

@@ -95,16 +95,33 @@ namespace GFGGame
             {
                 if (response.Error == ErrorCode.ERR_Success)
                 {
-                    if (ActivityDataManager.Instance.actLuckyBoxId != response.ActivityId)
-                    {
-                        ActivityDataManager.Instance.luckyBoxActBonusState.Clear();
+                    var activityCfg = ActivityOpenCfgArray.Instance.GetCfg(activityId);
+                    if (activityCfg.type == ConstLimitTimeActivityType.ActLimitLuckyBox) { 
+                        if (ActivityDataManager.Instance.actLuckyBoxId != response.ActivityId)
+                        {
+                            ActivityDataManager.Instance.luckyBoxActBonusState.Clear();
+                        }
+                        ActivityDataManager.Instance.actLuckyBoxId = response.ActivityId;
+                        ActivityDataManager.Instance.allPlayTimes = response.AllPlayTimes;
+                        ActivityDataManager.Instance.lastDrawCount = response.Count;
+                        for (int i = 0; i < response.KsBonusState.Count; i++)
+                        {
+                            ActivityDataManager.Instance.luckyBoxActBonusState[response.KsBonusState[i]] = response.VsBonusState[i];
+                        }
                     }
-                    ActivityDataManager.Instance.actLuckyBoxId = response.ActivityId;
-                    ActivityDataManager.Instance.allPlayTimes = response.AllPlayTimes;
-                    ActivityDataManager.Instance.lastDrawCount = response.Count;
-                    for (int i = 0; i < response.KsBonusState.Count; i++)
+                    else if (activityCfg.type == ConstLimitTimeActivityType.ActLimitTsy)
                     {
-                        ActivityDataManager.Instance.luckyBoxActBonusState[response.KsBonusState[i]] = response.VsBonusState[i];
+                        if (ActivityDataManager.Instance.actLimitTsyId != response.ActivityId)
+                        {
+                            ActivityDataManager.Instance.luckyActTsyBonusState.Clear();
+                        }
+                        ActivityDataManager.Instance.actLimitTsyId = response.ActivityId;
+                        ActivityDataManager.Instance.allTsyPlayTimes = response.AllPlayTimes;
+                        ActivityDataManager.Instance.lastTsyDrawCount = response.Count;
+                        for (int i = 0; i < response.KsBonusState.Count; i++)
+                        {
+                            ActivityDataManager.Instance.luckyActTsyBonusState[response.KsBonusState[i]] = response.VsBonusState[i];
+                        }
                     }
                     return true;
                 }

+ 8 - 4
GameClient/Assets/Game/HotUpdate/ServerProxy/LuckyBoxSProxy.cs

@@ -30,18 +30,22 @@ namespace GFGGame
     public class LuckyBoxSProxy
     {
         //抽奖
-        public static async ETTask<bool> ReqGetBonus(int luckyBoxId, int times, bool free = false)
+        public static async ETTask<bool> ReqGetBonus(int luckyBoxId, int times, bool free = false,int activityId = 0)
         {
             M2C_DrawLuckyBox response = null;
-            response = (M2C_DrawLuckyBox)await MessageHelper.SendToServer(new C2M_DrawLuckyBox() { LuckyBoxId = luckyBoxId, Times = times, Free = free });
+            response = (M2C_DrawLuckyBox)await MessageHelper.SendToServer(new C2M_DrawLuckyBox() { LuckyBoxId = luckyBoxId, Times = times, Free = free, ActivityId = activityId });
             if (response != null)
             {
                 if (response.Error == ErrorCode.ERR_Success)
                 {
-                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(ActivityDataManager.Instance.actLuckyBoxId);
+                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(response.ActivityId);
                     if (activityOpenCfg != null && activityOpenCfg.paramsArr[0] == luckyBoxId)
                     {
-                        ActivityDataManager.Instance.allPlayTimes += response.Times;
+                        var activityCfg = ActivityOpenCfgArray.Instance.GetCfg(response.ActivityId);
+                        if (activityCfg.type == ConstLimitTimeActivityType.ActLimitLuckyBox)
+                            ActivityDataManager.Instance.allPlayTimes += response.Times;
+                        else if(activityCfg.type == ConstLimitTimeActivityType.ActLimitTsy)
+                            ActivityDataManager.Instance.allTsyPlayTimes += response.Times;
                     }
                     LuckyBoxDataManager.Instance.times = response.Times;
                     // LuckyBoxDataManager.Instance.luckyBoxIndex = response.LuckyBoxId;

+ 23 - 9
GameClient/Assets/Game/HotUpdate/Views/ActivityThemeLuckyBox/ActivityThemeLuckyBoxBonusView.cs

@@ -10,7 +10,10 @@ namespace GFGGame
     {
         private UI_ActivityThemeLuckyBoxBonusUI _ui;
         private List<ActivityLuckybonusCfg> _bonueCfgs = new List<ActivityLuckybonusCfg>();
-
+        private int _typeId = 0; //活动类型id
+        private int _activityId = 0; //活动id
+        private long _allPlayTimes = 0;
+        private Dictionary<int, int> _bonusState = new Dictionary<int, int>();
         public override void Dispose()
         {
             if (_ui != null)
@@ -43,8 +46,19 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
-            _bonueCfgs = ActivityLuckybonusCfgArray.Instance.GetCfgsByid(ActivityDataManager.Instance.actLuckyBoxId);
-            _bonueCfgs = ActivityDataManager.Instance.SortActivityLuckybonusCfg(_bonueCfgs);
+            _typeId = (int)this.viewData;
+
+            _activityId = ActivityDataManager.Instance.actLuckyBoxId;
+            _allPlayTimes = ActivityDataManager.Instance.allPlayTimes;
+            _bonusState = ActivityDataManager.Instance.luckyBoxActBonusState;
+            if (_typeId == ConstLimitTimeActivityType.ActLimitTsy) { 
+                _activityId = ActivityDataManager.Instance.actLimitTsyId;
+                _allPlayTimes = ActivityDataManager.Instance.allTsyPlayTimes;
+                _bonusState = ActivityDataManager.Instance.luckyActTsyBonusState;
+            }
+
+            _bonueCfgs = ActivityLuckybonusCfgArray.Instance.GetCfgsByid(_activityId);
+            _bonueCfgs = ActivityDataManager.Instance.SortActivityLuckybonusCfg(_bonueCfgs, _typeId);
             _ui.m_list.numItems = _bonueCfgs.Count;
         }
 
@@ -62,11 +76,11 @@ namespace GFGGame
 
         private void RenderListItem(int index, GObject obj)
         {
-            ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(ActivityDataManager.Instance.actLuckyBoxId);
+            ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(_activityId);
 
             UI_ListItem item = UI_ListItem.Proxy(obj);
 
-            item.m_txtTitle.text = string.Format("{0}限定摘星{1}次({2}/{3})", activityOpenCfg.themeName, _bonueCfgs[index].num, ActivityDataManager.Instance.allPlayTimes, _bonueCfgs[index].num);
+            item.m_txtTitle.text = string.Format("{0}限定摘星{1}次({2}/{3})", activityOpenCfg.themeName, _bonueCfgs[index].num, _allPlayTimes, _bonueCfgs[index].num);
             if (item.m_listRewards.data == null)
             {
                 item.m_listRewards.itemRenderer = RenderListRewardItem;
@@ -74,8 +88,8 @@ namespace GFGGame
             item.m_listRewards.data = _bonueCfgs[index].bonusArr;
             item.m_listRewards.numItems = _bonueCfgs[index].bonusArr.Length;
             int key = _bonueCfgs[index].num;
-            int state = ActivityDataManager.Instance.luckyBoxActBonusState.ContainsKey(key) ? ActivityDataManager.Instance.luckyBoxActBonusState[key] : 0;
-            bool canGet = state < ConstBonusStatus.GOT && ActivityDataManager.Instance.allPlayTimes >= _bonueCfgs[index].num;
+            int state = _bonusState.ContainsKey(key) ? _bonusState[key] : 0;
+            bool canGet = state < ConstBonusStatus.GOT && _allPlayTimes >= _bonueCfgs[index].num;
             item.m_c1.selectedIndex = canGet ? 1 : state;
 
             if (item.m_btnGet.data == null)
@@ -103,10 +117,10 @@ namespace GFGGame
         {
             GObject obj = context.sender as GObject;
             int key = (int)obj.data;
-            bool result = await ActivitySProxy.ReqGetTimeLimitLuckyBoxBonus(ActivityDataManager.Instance.actLuckyBoxId, key);
+            bool result = await ActivitySProxy.ReqGetTimeLimitLuckyBoxBonus(_activityId, key);
             if (result)
             {
-                _bonueCfgs = ActivityDataManager.Instance.SortActivityLuckybonusCfg(_bonueCfgs);
+                _bonueCfgs = ActivityDataManager.Instance.SortActivityLuckybonusCfg(_bonueCfgs,_typeId);
                 _ui.m_list.numItems = _bonueCfgs.Count;
             }
         }

+ 3 - 3
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxActivityView.cs

@@ -210,7 +210,7 @@ namespace GFGGame
             }
             LuckyBoxDataManager.Instance.CheckItemEnough(_luckyBoxCfg.id, LuckyBoxDataManager.ONCE_TIME, async () =>
              {
-                 bool result = await LuckyBoxSProxy.ReqGetBonus(_luckyBoxCfg.id, LuckyBoxDataManager.ONCE_TIME);
+                 bool result = await LuckyBoxSProxy.ReqGetBonus(_luckyBoxCfg.id, LuckyBoxDataManager.ONCE_TIME,false, _activityId);
                  if (result)
                  {
                      ViewManager.Show<LuckyBoxStarView>(null, new object[] { typeof(LuckyBoxActivityView).FullName, _activityId });
@@ -231,7 +231,7 @@ namespace GFGGame
             }
             LuckyBoxDataManager.Instance.CheckItemEnough(this._luckyBoxCfg.id, LuckyBoxDataManager.TEN_TIME, async () =>
             {
-                bool result = await LuckyBoxSProxy.ReqGetBonus(this._luckyBoxCfg.id, LuckyBoxDataManager.TEN_TIME);
+                bool result = await LuckyBoxSProxy.ReqGetBonus(this._luckyBoxCfg.id, LuckyBoxDataManager.TEN_TIME,false, _activityId);
                 if (result)
                 {
                     ViewManager.Show<LuckyBoxStarView>(null, new object[] { typeof(LuckyBoxActivityView).FullName, _activityId });
@@ -242,7 +242,7 @@ namespace GFGGame
 
         private void OnClikcBtnReward()
         {
-            ViewManager.Show<ActivityThemeLuckyBoxBonusView>();
+            ViewManager.Show<ActivityThemeLuckyBoxBonusView>(ConstLimitTimeActivityType.ActLimitLuckyBox);
         }
         private void OnClikcBtnShop()
         {

+ 38 - 9
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxView.cs

@@ -307,7 +307,7 @@ namespace GFGGame
 
         private void OnClikcBtnReward()
         {
-            ViewManager.Show<ActivityThemeLuckyBoxBonusView>();
+            ViewManager.Show<ActivityThemeLuckyBoxBonusView>(ConstLimitTimeActivityType.ActLimitTsy);
         }
 
         private void OnClikcBtnShop()
@@ -320,7 +320,7 @@ namespace GFGGame
         {
             int boxId = LuckyBoxDataManager.Instance.luckyBoxIds[_curIndex];
             LuckyBoxCfg cfg = LuckyBoxCfgArray.Instance.GetCfg(boxId);
-            comBox.m_txtCount.SetVar("value", ActivityDataManager.Instance.lastDrawCount.ToString()).FlushVars();
+            comBox.m_txtCount.SetVar("value", ActivityDataManager.Instance.lastTsyDrawCount.ToString()).FlushVars();
             comBox.m_txtCount.SetVar("name", cfg.name).FlushVars();
 
             var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
@@ -420,12 +420,33 @@ namespace GFGGame
                 if (item == null) return;
                 GObject textField = item.asCom.GetChild("txtTime");
                 if (textField == null) return;
-                long time = 100;
-                string strTime = time > TimeUtil.SECOND_PER_DAY * 100 ? TimeUtil.FormattingTimeTo_DDHHmm(time) : TimeUtil.FormattingTimeTo_HHmmss(time);
-                textField.asTextField.text = string.Format("概率提升剩余:{0}", strTime);
+                int activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitTsy);
+                var activityCfg = ActivityOpenCfgArray.Instance.GetCfg(activityId);
+                long endTime = TimeUtil.DateTimeToTimestamp(activityCfg.endTime);
+                long curTime = TimeHelper.ServerNow();
+                if (endTime < curTime)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+                    Timers.inst.Remove(UpdateTime);
+                    OnClickBtnBack();
+                    return;
+                }
+                TimeUtil.FormattingTime(curTime, endTime, out int num, out string str);
+                textField.asTextField.text = "概率提升剩余: " + TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
+
+                //=====限时礼包倒计时
+                //UpGiftBox();
+                //EventAgent.DispatchEvent(ConstMessage.LUCKY_BOX_TIME);
+                //=====限时礼包倒计时END
             }
         }
 
+
+        private void UpdateTime(object param = null)
+        {
+            
+        }
+
         private void updateBoxEffect()
         {
             if (isActiveBoxOpen)
@@ -456,11 +477,15 @@ namespace GFGGame
             }
             LuckyBoxDataManager.Instance.CheckItemEnough(boxId, LuckyBoxDataManager.ONCE_TIME, async () =>
              {
+                 int activityId = 0;
+                 if (boxId == LuckyBoxDataManager.BOX_ID_2) {
+                     activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitTsy);
+                 }
                  bool result = false;
                  if (freeTime > 0 && freeTime < TimeHelper.ServerNow())
-                    result = await LuckyBoxSProxy.ReqGetBonus(boxId, LuckyBoxDataManager.ONCE_TIME, true);
+                    result = await LuckyBoxSProxy.ReqGetBonus(boxId, LuckyBoxDataManager.ONCE_TIME, true, activityId);
                  else
-                    result = await LuckyBoxSProxy.ReqGetBonus(boxId, LuckyBoxDataManager.ONCE_TIME);
+                    result = await LuckyBoxSProxy.ReqGetBonus(boxId, LuckyBoxDataManager.ONCE_TIME,false, activityId);
 
                  if (result)
                  {
@@ -490,8 +515,12 @@ namespace GFGGame
             }
             LuckyBoxDataManager.Instance.CheckItemEnough(boxId, LuckyBoxDataManager.TEN_TIME, async () =>
             {
-
-                bool result = await LuckyBoxSProxy.ReqGetBonus(boxId, LuckyBoxDataManager.TEN_TIME);
+                int activityId = 0;
+                if (boxId == LuckyBoxDataManager.BOX_ID_2)
+                {
+                    activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitTsy);
+                }
+                bool result = await LuckyBoxSProxy.ReqGetBonus(boxId, LuckyBoxDataManager.TEN_TIME,false, activityId);
                 if (result)
                 {
                     ViewManager.Show<LuckyBoxStarView>(null, new object[] { typeof(LuckyBoxView).FullName, boxId });

+ 11 - 1
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -773,7 +773,17 @@ namespace GFGGame
                 _ui.m_btnActivityLuckyBox.m_txtTime.text = time > TimeUtil.SECOND_PER_DAY * 1000 ? TimeUtil.FormattingTimeTo_DDHHmm(time) : TimeUtil.FormattingTimeTo_HHmmss(time);
             }
 
-            List<int> actListChargeIds = ActivityGlobalDataManager.Instance.GetActivityInfoIdsByType(ConstLimitTimeActivityType.ActLimitChargeId);
+            int actLimitTsyId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitTsy);
+            if (actLimitTsyId > 0)
+            {
+                if (actLimitTsyId != ActivityDataManager.Instance.lastActLimitTsyId)
+                {
+                    ActivitySProxy.ReqGetTimeLimitLuckyBoxInfo(actLimitTsyId).Coroutine();
+                    ActivityDataManager.Instance.lastActLimitTsyId = actLimitTsyId;
+                }
+            }
+
+             List<int> actListChargeIds = ActivityGlobalDataManager.Instance.GetActivityInfoIdsByType(ConstLimitTimeActivityType.ActLimitChargeId);
             int actLimitChargeId = actListChargeIds.Count > 0 ? actListChargeIds[0] : 0;
             if (ActivityDataManager.Instance.lastActLimitChargeId != actLimitChargeId)
             {

binární
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_fui.bytes