瀏覽代碼

添加元宵节活动红点、主界面显示

leiyasi 1 年之前
父節點
當前提交
e21f5c9144

+ 13 - 0
GameClient/Assets/Game/HotUpdate/Data/MainDataManager.cs

@@ -33,5 +33,18 @@ namespace GFGGame
                 _canSwipe = value;
             }
         }
+
+        private bool _needUpdateProxyData = true;
+        public bool needUpdateProxyData
+        {
+            get
+            {
+                return _needUpdateProxyData;
+            }
+            set
+            {
+                _needUpdateProxyData = value;
+            }
+        }
     }
 }

+ 6 - 0
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -1068,6 +1068,12 @@ namespace GFGGame
             return ActivityWanShiLiDataManager.Instance.CanGetReward();
         }
 
+        public bool GetActivityYuanXiaoRed()
+        {
+            return false;
+            //return TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.YuanXiaoActivity);
+        }
+
         /// <summary>
         /// 摘星免费抽奖
         /// </summary>

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityGetYuanXiao/UI_ActivityGetYuanXiaoEntryUI.cs

@@ -11,6 +11,7 @@ namespace UI.ActivityGetYuanXiao
         public GGraph m_bgEffect;
         public GGraph m_leafEffect;
         public GGraph m_yuanXiaoEffect;
+        public GGraph m_doubaoEffect;
         public GButton m_btnTask;
         public GButton m_btnShop;
         public GGraph m_cloudEffect;
@@ -72,6 +73,7 @@ namespace UI.ActivityGetYuanXiao
             m_bgEffect = (GGraph)comp.GetChild("bgEffect");
             m_leafEffect = (GGraph)comp.GetChild("leafEffect");
             m_yuanXiaoEffect = (GGraph)comp.GetChild("yuanXiaoEffect");
+            m_doubaoEffect = (GGraph)comp.GetChild("doubaoEffect");
             m_btnTask = (GButton)comp.GetChild("btnTask");
             m_btnShop = (GButton)comp.GetChild("btnShop");
             m_cloudEffect = (GGraph)comp.GetChild("cloudEffect");
@@ -89,6 +91,7 @@ namespace UI.ActivityGetYuanXiao
             m_bgEffect = null;
             m_leafEffect = null;
             m_yuanXiaoEffect = null;
+            m_doubaoEffect = null;
             m_btnTask = null;
             m_btnShop = null;
             m_cloudEffect = null;

+ 9 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityGetYuanXiao/UI_taskItem.cs

@@ -8,10 +8,12 @@ namespace UI.ActivityGetYuanXiao
     {
         public GComponent target;
         public Controller m_c1;
+        public Controller m_c2;
         public GButton m_btnGet;
         public GTextField m_desc;
-        public GButton m_btnLock;
         public GList m_rewardList;
+        public GButton m_btnGo;
+        public GTextField m_txtCount;
         public const string URL = "ui://tguohf7uhmj62r";
         public const string PACKAGE_NAME = "ActivityGetYuanXiao";
         public const string RES_NAME = "taskItem";
@@ -60,18 +62,22 @@ namespace UI.ActivityGetYuanXiao
         private void Init(GComponent comp)
         {
             m_c1 = comp.GetController("c1");
+            m_c2 = comp.GetController("c2");
             m_btnGet = (GButton)comp.GetChild("btnGet");
             m_desc = (GTextField)comp.GetChild("desc");
-            m_btnLock = (GButton)comp.GetChild("btnLock");
             m_rewardList = (GList)comp.GetChild("rewardList");
+            m_btnGo = (GButton)comp.GetChild("btnGo");
+            m_txtCount = (GTextField)comp.GetChild("txtCount");
         }
         public void Dispose(bool disposeTarget = false)
         {
             m_c1 = null;
+            m_c2 = null;
             m_btnGet = null;
             m_desc = null;
-            m_btnLock = null;
             m_rewardList = null;
+            m_btnGo = null;
+            m_txtCount = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 16 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoDataManager.cs

@@ -0,0 +1,16 @@
+using ET;
+using System.Collections;
+using UnityEngine;
+
+namespace GFGGame
+{
+    public class ActivityGetYuanXiaoDataManager : SingletonBase<ActivityGetYuanXiaoDataManager>
+    {
+        //public bool CheckOpen()
+        //{
+        //    var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.YuanXiao);
+        //    return activityInfo != null && activityInfo.StartTime <= TimeHelper.ServerNow() &&
+        //           activityInfo.EndTime > TimeHelper.ServerNow();
+        //}
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoDataManager.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7d8e36e8bc416eb468552676ce2e3cdb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 21 - 2
GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoEntryView.cs

@@ -60,6 +60,8 @@ namespace GFGGame
             _effectUIDic.Add("YXJ_Text", EffectUIPool.CreateEffectUI(_ui.m_titleTextEffect, "ui_Activity", "YXJ_Text"));
             _effectUIDic.Add("YXJ_Open_Down", EffectUIPool.CreateEffectUI(_ui.m_cloudEffect, "ui_Activity", "YXJ_Open_Down"));
             _effectUIDic.Add("YXJ_Open_Up", EffectUIPool.CreateEffectUI(_ui.m_leafEffect, "ui_Activity", "YXJ_Open_Up"));
+            _effectUIDic.Add("RedPack_doubao_Loop_R", EffectUIPool.CreateEffectUI(_ui.m_doubaoEffect, "ui_Activity", "RedPack_doubao_Loop_R"));
+
 
         }
 
@@ -76,8 +78,8 @@ namespace GFGGame
             //}
 
             _ui.m_list.numItems = PickUpGameArray.Instance.dataArray.Length;
-            _ui.m_list.selectedIndex = 0;
-
+            _ui.m_list.selectedIndex = GetCurLevel();
+            _ui.m_list.ScrollToView(_ui.m_list.selectedIndex);
         }
 
         protected override void OnHide()
@@ -120,6 +122,23 @@ namespace GFGGame
             //UI_level.ProxyEnd();
         }
 
+        // 获取当前达到的关卡
+        private int GetCurLevel()
+        {
+            return 0;
+
+            int i;
+            for (i = 0; i < MiniGameDateManager.Instance.gameinfoList.Count; i++)
+            {
+                if (!MiniGameDateManager.Instance.gameinfoList[i].IsCleared)
+                {
+                    return i;
+                }
+            }
+
+            return i - 1;
+        }
+
         private void OnBtnStartClick()
         {
             //if (!MiniGameDateManager.Instance.gameinfoList[_ui.m_list.selectedIndex].IsUnlock)

+ 94 - 19
GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoTaskView.cs

@@ -3,6 +3,7 @@ using UnityEngine;
 using UI.ActivityGetYuanXiao;
 using FairyGUI;
 using System.Collections.Generic;
+using System.Linq;
 
 namespace GFGGame
 {
@@ -10,6 +11,8 @@ namespace GFGGame
     {
         private UI_ActivityGetYuanXiaoTaskUI _ui;
         private int _activityID;
+        private int _funcType;
+        private List<TaskCfg> _cfgs;
 
         public override void Dispose()
         {
@@ -33,6 +36,8 @@ namespace GFGGame
             modal = true;
 
             _ui.m_itemList.itemRenderer = ListRenderer;
+            //_funcType = TaskFuncType.YuanXiaoActivity;
+            _funcType = TaskFuncType.BattlePass;
         }
 
         protected override void OnShown()
@@ -40,43 +45,113 @@ namespace GFGGame
             base.OnShown();
 
             _activityID = (int)viewData;
-            _ui.m_itemList.numItems = PickUpGameArray.Instance.dataArray.Length;
+            UpdateTask();
             _ui.m_itemList.scrollPane.ScrollTop();
         }
 
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges);
+        }
+
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges);
+        }
+
+        //更新任务列表
+        private void UpdateTask()
+        {
+            _cfgs = TaskDataManager.Instance.GetTaskCfgs(_funcType);
+            _ui.m_itemList.numItems = _cfgs.Count;
+        }
+
+        private void OnTaskChanges(EventContext eventContext)
+        {
+            var taskIds = (List<int>)eventContext.data;
+            if (taskIds.Select(taskId => TaskCfgArray.Instance.GetCfg(taskId)).Where(taskCfg => taskCfg != null)
+                .Any(taskCfg => taskCfg.funcType == _funcType))
+            {
+                UpdateTask();
+            }
+        }
+
         private void ListRenderer(int index, GObject gObject)
         {
+            if(index >= _cfgs.Count)
+            {
+                return;
+            }
+
             UI_taskItem item = UI_taskItem.Proxy(gObject);
-            item.m_c1.selectedIndex = 0;
-            item.m_desc.text = "";
-            item.m_rewardList.data = index;
-            List<ItemData> itemDatas = ItemUtil.CreateItemDataList(PickUpGameArray.Instance.dataArray[index].bonusWinArr);
-            item.m_rewardList.numItems = itemDatas.Count;
-            for (int i = 0; i < itemDatas.Count; i++)
+            item.m_desc.text = TaskDataManager.Instance.GetTaskDesc(_cfgs[index].id);
+            item.m_txtCount.SetVar("cur", $"{TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].id)}")
+                .SetVar("sum", $"{_cfgs[index].GetTargetCount()}").FlushVars();
+            item.m_c1.selectedIndex = TaskDataManager.Instance.GetTaskStateById(_cfgs[index].id);
+            item.m_c2.selectedIndex = _cfgs[index].jumpId == "" ? 1 : 0;
+
+            // 奖励列表更新事件绑定
+            
+            if (item.m_rewardList.data == null)
             {
-                GObject obj = item.m_rewardList.GetChildAt(i);
-                ItemData reward = itemDatas[i];
-                if (obj.data == null)
-                {
-                    obj.data = new ItemView(obj as GComponent);
-                }
-                (obj.data as ItemView).SetData(reward);
+                item.m_rewardList.itemRenderer = ListTaskRewardItemRender;
             }
-            item.m_c1.selectedIndex = MiniGameDateManager.Instance.gameinfoList[index].FirstPassRewardStatus;
+
+            item.m_rewardList.data = _cfgs[index];
+            var reward = TaskDataManager.Instance.GetReward(_cfgs[index]);
+            item.m_rewardList.numItems = reward.Length;
+
+            // 领取奖励按钮事件
             if(item.m_btnGet.data == null)
             {
-                item.m_btnGet.data = PickUpGameArray.Instance.dataArray[index];
                 item.m_btnGet.onClick.Add(OnClickBtnGet);
             }
+            item.m_btnGet.data = _cfgs[index].id;
+
+            // 前往按钮事件
+            if (item.m_btnGo.data == null)
+            {
+                item.m_btnGo.onClick.Add(OnBtnGoClick);
+            }
+            item.m_btnGo.data = _cfgs[index];
+
             UI_taskItem.ProxyEnd();
         }
 
+        private void ListTaskRewardItemRender(int index, GObject obj)
+        {
+            TaskCfg cfg = (TaskCfg)obj.parent.data;
+            int[][] reward = TaskDataManager.Instance.GetReward(cfg);
+            var itemData = ItemUtil.createItemData(reward[index]);
+            var item = new ItemView(obj as GComponent);
+            obj.data = item;
+            item.SetData(itemData);
+            item.ChangeTxtCountStyle();
+            item.SetTxtCountScale = 1.3f;
+            item.GrpGotVisible = TaskDataManager.Instance.GetTaskStateById(cfg.id) == 2;
+        }
+
         private async void OnClickBtnGet(EventContext context)
         {
-            GObject obj = (GObject)context.sender;
-            PickUpGame pickUpGame = (PickUpGame)obj.data;
-            var result = await MiniGameProxy.ReqGetFirstPassReward(pickUpGame.id, pickUpGame.type, _activityID);
+            if (!(context.sender is GObject btnGet)) return;
+            var result = await TaskSProxy.GetTaskBonus((int)btnGet.data);
             if (!result) return;
+            UpdateTask();
+        }
+
+        private void OnBtnGoClick(EventContext context)
+        {
+            if (!(context.sender is GObject { data: TaskCfg taskCfg })) return;
+            //功能未开放
+            if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(taskCfg.jumpId)) return;
+            var param = new object[taskCfg.jumpParamArr.Length];
+            for (var i = 0; i < taskCfg.jumpParamArr.Length; i++)
+            {
+                param[i] = taskCfg.jumpParamArr[i];
+            }
+            ViewManager.JumpToView(taskCfg.jumpId, param, false, false);
         }
     }
 }

+ 6 - 1
GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoView.cs

@@ -272,7 +272,7 @@ namespace GFGGame
             }
         }
 
-        private void GameEnd()
+        private async void GameEnd()
         {
             _ui.m_catcher.target.draggable = false;
             HideGameView();
@@ -297,6 +297,11 @@ namespace GFGGame
                 }
             }
 
+            //ViewManager.Show<ModalStatusView>("加载中...");
+            //// 请求游戏结束协议
+            //await MiniGameProxy.ReqMiniGameEnd(_cfg.id, _cfg.type, 0, win, _activityID, false);
+            //ViewManager.Hide<ModalStatusView>();
+
             if (win)
             {
                 ViewManager.Show<ActivityGetYuanXiaoSuccessView>(_cfg);

+ 31 - 7
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -110,8 +110,7 @@ namespace GFGGame
             _ui.m_btnWanShiLi.target.onClick.Add(OnClickBtnWanShiLi);
             _ui.m_btnTea.target.onClick.Add(OnClickBtnTea);
             _ui.m_btnActivityZCJB.target.onClick.Add(OnClickBtnZCJB);
-            //_ui.m_btnGetYuanXiao.target.onClick.Add(OnClickBtnGetYuanXiao);
-            //_ui.m_btnGetYuanXiao.target.visible = false;
+            _ui.m_btnGetYuanXiao.target.onClick.Add(OnClickBtnGetYuanXiao);
             _btnLeague.onClick.Add(OnClickBtnLeague);
             _btnStore.onClick.Add(OnClickBtnStore);
             _btnTuJian.onClick.Add(OnClickBtnTuJian);
@@ -264,10 +263,17 @@ namespace GFGGame
 
         private async void UpdateButtons()
         {
+            if (!MainDataManager.Instance.needUpdateProxyData)
+            {
+                return;
+            }
+            MainDataManager.Instance.needUpdateProxyData = false;
             var result = await NewYearRedEnvelopeSProxy.ReqGetRedPacketInfo();
             if (result) {
                 RefreshBtnNewYearRedEnvelope();
             }
+
+            RefreshBtnYuanXiaoActivity();
         }
 
         private void RefreshBtnNewYearRedEnvelope()
@@ -276,6 +282,12 @@ namespace GFGGame
             _ui.m_btnNewYearRedEnvelope.target.visible = (actRedPacketId > 0 && NewYearRedEnvelopeDataManager.Status > 0 && NewYearRedEnvelopeDataManager.Status != RedPacketStatus.Double);
         }
 
+        private void RefreshBtnYuanXiaoActivity()
+        {
+            //_ui.m_btnGetYuanXiao.target.visible = ActivityGetYuanXiaoDataManager.Instance.CheckOpen();
+            _ui.m_btnGetYuanXiao.target.visible = true;
+        }
+
         private void AddEffect()
         {
             _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_btnMain.m_holder, "ui_zjm", "ZJM_szl_down_3"));
@@ -997,8 +1009,19 @@ namespace GFGGame
                     RedDotController.Instance.SetComRedDot(_ui.m_btnNewYearRedEnvelope.target, NewYearRedEnvelopeDataManager.Instance.CheckNewYearRedEnvelopeRed(), "", -19, 5);
             }
 
+            // 元宵活动
+            if (_ui.m_btnGetYuanXiao.target.visible)
+            {
+                if (redPointUpdateFrame == 22)
+                {
+                    //RedDotController.Instance.SetComRedDot(_ui.m_btnGetYuanXiao.target
+                    //    , RedDotDataManager.Instance.GetActivityYuanXiaoRed(), "", 0, 0);
+
+                }
+            }
+
             redPointUpdateFrame++;
-            if(redPointUpdateFrame > 22)
+            if(redPointUpdateFrame > 23)
             {
                 redPointUpdateFrame = -1;
             }
@@ -1122,6 +1145,7 @@ namespace GFGGame
             UpdateBtnFirstRecharge();
             CheckAutoShowViews();
             RefreshBtnNewYearRedEnvelope();
+            RefreshBtnYuanXiaoActivity();
         }
         private void CheckAutoShowViews()
         {
@@ -1230,9 +1254,9 @@ namespace GFGGame
             _ui.m_show.Play();
         }
 
-        //private void OnClickBtnGetYuanXiao()
-        //{
-        //    ViewManager.Show<ActivityGetYuanXiaoEntryView>();
-        //}
+        private void OnClickBtnGetYuanXiao()
+        {
+            ViewManager.Show<ActivityGetYuanXiaoEntryView>();
+        }
     }
 }

二進制
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0!a.png


二進制
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0.png


二進制
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0_1!a.png


二進制
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0_1.png


二進制
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_fui.bytes