Browse Source

Merge branch 'master' of http://10.108.64.190:3000/gfg/client

guodong 1 year ago
parent
commit
1a18174dc8
27 changed files with 301 additions and 50 deletions
  1. 1 0
      GameClient/Assets/Game/HotUpdate/Controller/GameController.cs
  2. 1 1
      GameClient/Assets/Game/HotUpdate/Data/ActivityTeaDataManager.cs
  3. 19 1
      GameClient/Assets/Game/HotUpdate/Data/FriendDataManager.cs
  4. 19 0
      GameClient/Assets/Game/HotUpdate/Data/MainDataManager.cs
  5. 6 0
      GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs
  6. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityGetYuanXiao/UI_ActivityGetYuanXiaoEntryUI.cs
  7. 9 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityGetYuanXiao/UI_taskItem.cs
  8. 3 3
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Friend/UI_ListItem.cs
  9. 2 1
      GameClient/Assets/Game/HotUpdate/ServerProxy/NewYearRedEnvelopeSproxy.cs
  10. 16 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoDataManager.cs
  11. 11 0
      GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoDataManager.cs.meta
  12. 21 2
      GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoEntryView.cs
  13. 94 19
      GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoTaskView.cs
  14. 6 1
      GameClient/Assets/Game/HotUpdate/Views/ActivityGetYuanXiao/ActivityGetYuanXiaoView.cs
  15. 34 1
      GameClient/Assets/Game/HotUpdate/Views/Friend/FriendView.cs
  16. 1 1
      GameClient/Assets/Game/HotUpdate/Views/League/LeagueAnswerRewardView.cs
  17. 4 1
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxActivityView.cs
  18. 13 8
      GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxView.cs
  19. 31 7
      GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs
  20. 7 1
      GameClient/Assets/Game/HotUpdate/Views/OpenServerActivity/OpenServerActivityView.cs
  21. BIN
      GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0!a.png
  22. BIN
      GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0.png
  23. BIN
      GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0_1!a.png
  24. BIN
      GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0_1.png
  25. BIN
      GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_fui.bytes
  26. BIN
      GameClient/Assets/ResIn/UI/Friend/Friend_fui.bytes
  27. BIN
      GameClient/Assets/ResIn/UI/League/League_fui.bytes

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -330,6 +330,7 @@ namespace GFGGame
             LeagueDataManager.Instance.Clear();
             ActivityAfuGiftDataManager.Instance.Clear();
             FightDataManager.Instance.Clear();
+            MainDataManager.Instance.Clear();
             NewYearRedEnvelopeDataManager.Instance.Clear();
             GameGlobal.zoneScene.GetComponent<SessionComponent>()?.Disconnect();
             GameGlobal.zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Data/ActivityTeaDataManager.cs

@@ -77,7 +77,7 @@ namespace Assets.Game.HotUpdate.Data
             {
                 ItemCfg itemSyntheticCfg = ItemCfgArray.Instance.GetCfg(suitCfg.partsArr[i]);
                 var materiarsArr = itemSyntheticCfg.syntheticMateriarsArr;
-                if (ItemDataManager.GetItemNum(materiarsArr[0][0]) >= materiarsArr[0][1] && ItemDataManager.GetItemNum(materiarsArr[1][0]) >= materiarsArr[1][1])
+                if (ItemDataManager.GetItemNum(materiarsArr[0][0]) >= materiarsArr[0][1] && ItemDataManager.GetItemNum(materiarsArr[1][0]) >= materiarsArr[1][1] && ItemDataManager.GetItemNum(suitCfg.partsArr[i]) <= 0)
                     return true;
             }
             return false;

+ 19 - 1
GameClient/Assets/Game/HotUpdate/Data/FriendDataManager.cs

@@ -103,13 +103,31 @@ namespace GFGGame
                 _friendDic[roleId].takeGiftState = takeState;
             }
         }
+
         public void UpdateFriendList(bool sort)
         {
             // _list = _friendDic.Values.ToList<FriendInfoData>();
             if (!sort) return;
+            // 按照时间戳大->小排序,时间戳为0的(在线)置顶
             _list.Sort((long a, long b) =>
             {
-                long count = _friendDic[b].roleInfo.offlineTimeSec - _friendDic[a].roleInfo.offlineTimeSec;
+                if(_friendDic[a].roleInfo.offlineTimeSec == 0 
+                && _friendDic[b].roleInfo.offlineTimeSec == 0)
+                {
+                    return 0;
+                }
+
+                if(_friendDic[a].roleInfo.offlineTimeSec == 0)
+                {
+                    return -1;
+                }
+
+                if (_friendDic[b].roleInfo.offlineTimeSec == 0)
+                {
+                    return 1;
+                }
+
+                long count = _friendDic[a].roleInfo.offlineTimeSec - _friendDic[b].roleInfo.offlineTimeSec;
                 if (count > 0)
                 {
                     return -1;

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

@@ -3,6 +3,12 @@ namespace GFGGame
     public class MainDataManager : SingletonBase<MainDataManager>
     {
         private int _viewType = 0;
+
+        public void Clear()
+        {
+            _needUpdateProxyData = true;
+        }
+
         /// <summary>
         /// 界面类型,0:主界面,1:二级界面
         /// </summary>
@@ -33,5 +39,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();

+ 3 - 3
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Friend/UI_ListItem.cs

@@ -14,7 +14,7 @@ namespace UI.Friend
         public GTextField m_txtName;
         public GButton m_btnSend;
         public GLoader m_loaState;
-        public GTextField m_txtName_2;
+        public GTextField m_txtTime;
         public const string URL = "ui://wez2ujnnpdeo9";
         public const string PACKAGE_NAME = "Friend";
         public const string RES_NAME = "ListItem";
@@ -69,7 +69,7 @@ namespace UI.Friend
             m_txtName = (GTextField)comp.GetChild("txtName");
             m_btnSend = (GButton)comp.GetChild("btnSend");
             m_loaState = (GLoader)comp.GetChild("loaState");
-            m_txtName_2 = (GTextField)comp.GetChild("txtName");
+            m_txtTime = (GTextField)comp.GetChild("txtTime");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -80,7 +80,7 @@ namespace UI.Friend
             m_txtName = null;
             m_btnSend = null;
             m_loaState = null;
-            m_txtName_2 = null;
+            m_txtTime = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 2 - 1
GameClient/Assets/Game/HotUpdate/ServerProxy/NewYearRedEnvelopeSproxy.cs

@@ -57,7 +57,8 @@ namespace GFGGame
                     //var itemData = ItemUtil.CreateItemDataList(response.ItemId, response.ItemNum);
                     //BonusController.TryShowBonusList(itemData);
                     var ramdomInt = Random.Range(1, 4).ToString();
-                    PlayerPrefs.SetString("NewYearRedEnvelopeRamdomInt", ramdomInt);   
+                    PlayerPrefs.SetString("NewYearRedEnvelopeRamdomInt", ramdomInt);
+                    EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
                     return true;
                 }
             }

+ 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);

+ 34 - 1
GameClient/Assets/Game/HotUpdate/Views/Friend/FriendView.cs

@@ -3,6 +3,7 @@ using FairyGUI;
 using UI.Friend;
 using UI.CommonGame;
 using System.Collections;
+using ET;
 
 namespace GFGGame
 {
@@ -145,6 +146,7 @@ namespace GFGGame
             _ui.m_btnSendAll.text = RedDotDataManager.Instance.GetFriendGiftRed() ? "一键领取并赠送" : "一键赠送";
             _ui.m_txtPowerCount.SetVar("value", FriendDataManager.Instance.Count.ToString()).FlushVars();
             _ui.m_txtPowerCount.SetVar("maxValue", FriendDataManager.Instance.maxGetPowerCount.ToString()).FlushVars();
+
         }
 
 
@@ -155,6 +157,15 @@ namespace GFGGame
 
             UI_ListItem item = UI_ListItem.Proxy(obj);
 
+            if(friendInfo.roleInfo.offlineTimeSec > 0)
+            {
+                item.m_txtTime.visible = true;
+                item.m_txtTime.text = UpdateFriendOfflineTime(friendInfo.roleInfo.offlineTimeSec);
+            }
+            else
+            {
+                item.m_txtTime.visible = false;
+            }
             RoleInfoManager.Instance.UpdateHead(item.m_comHead, friendInfo.roleInfo.headId, friendInfo.roleInfo.headBorderId);
             item.m_txtName.text = friendInfo.roleInfo.roleName;
             item.m_txtLvl.text = friendInfo.roleInfo.roleLv.ToString();
@@ -201,7 +212,7 @@ namespace GFGGame
         {
             if (RedDotDataManager.Instance.GetFriendGiftRed() && FriendDataManager.Instance.Count < FriendDataManager.Instance.maxGetPowerCount)
             {
-                FriendSProxy.ReqTakeGiftFromAllFriend().Coroutine();
+                FriendSProxy.ReqTakeGiftFromAllFriend().Coroutine(); 
             }
             else
             {
@@ -332,5 +343,27 @@ namespace GFGGame
             RedDotController.Instance.SetComRedDot(_ui.m_btnSendAll, RedDotDataManager.Instance.GetFriendGiftRed());
             // RefreshView();
         }
+
+        private string UpdateFriendOfflineTime(long timeMsec)
+        {
+            string timeStr = TimeUtil.FormattingTimeTo_DD_HH_mm(TimeHelper.ClientNow() - timeMsec);
+            string[] timeTipArr = { "天", "小时", "分钟"};
+            string[] timeArr = timeStr.Split(':');
+            for(int i = 0; i < timeArr.Length; i++)
+            {
+                int num = int.Parse(timeArr[i]);
+                if (i == 0 && num > 30)
+                {
+                    return "超过30天";
+                }
+                else if (num > 0)
+                {
+
+                    return num + timeTipArr[i] + "前";
+                }
+            }
+
+            return "1分钟前";
+        }
     }
 }

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/League/LeagueAnswerRewardView.cs

@@ -81,7 +81,7 @@ namespace GFGGame
         private void RenderListItem(int index, GObject obj)
         {
             UI_ListAnswerRewardItem item = UI_ListAnswerRewardItem.Proxy(obj);
-            item.m_txtDesc.text = string.Format("答对{0}题", index + 1);
+            item.m_txtDesc.text = string.Format("全员答对{0}题", index + 1);
             if (item.m_listReward.data == null)
             {
                 item.m_listReward.itemRenderer = RenderListIrem;

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

@@ -107,14 +107,17 @@ namespace GFGGame
             if(activityOpenCfg.params2Arr.Length > 0)
                 GetWishingPoolInfo(activityId);
         }
+
         private void UpdateTime(object param = null)
         {
             long endTime = TimeUtil.DateTimeToTimestamp(_activityCfg.endTime);
             long curTime = TimeHelper.ServerNow();
-            if (endTime < curTime)
+            if (endTime < curTime + 1)
             {
                 PromptController.Instance.ShowFloatTextPrompt("活动已结束");
                 Timers.inst.Remove(UpdateTime);
+                ViewManager.DeleteViewStackCountDown(null, 2);
+                ViewManager.Hide<LuckyBoxWishView>();
                 OnClickBtnBack();
                 return;
             }

+ 13 - 8
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxView.cs

@@ -334,8 +334,9 @@ namespace GFGGame
 
         private void UpdateBtnReward()
         {
-            if (_curIndex == 1) { 
-                GObject obj = _ui.m_listBg.GetChildAt(_curIndex);
+            if (_curIndex == 1) {
+                int boxId = LuckyBoxDataManager.Instance.luckyBoxIds[_curIndex];
+                GObject obj = _listActivityBtnObj[boxId];
                 UI_ComBox1 comBox = UI_ComBox1.Proxy(obj);
                 RedDotController.Instance.SetComRedDot(comBox.m_btnReward.target, RedDotDataManager.Instance.GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitTsy), "", -21, 18);
 
@@ -440,7 +441,8 @@ namespace GFGGame
             long curTime = TimeHelper.ServerNow();
             TimeUtil.FormattingTime(curTime, endTime, out int num, out string str);
 
-            GObject item = _ui.m_listBg.GetChildAt(0);
+            int boxId = LuckyBoxDataManager.Instance.luckyBoxIds[0];
+            GObject item = _listActivityBtnObj[boxId];
             if (item == null) return;
             GObject textField = item.asCom.GetChild("txtTime");
             if (textField == null) return;
@@ -452,7 +454,8 @@ namespace GFGGame
 
         private void UpdateImitateTime(object param = null)
         {
-            GObject item = _ui.m_listBg.GetChildAt(1);
+            int boxId = LuckyBoxDataManager.Instance.luckyBoxIds[1];
+            GObject item = _listActivityBtnObj[boxId];
             GObject textField = item.asCom.GetChild("txtHasTime");
             if (textField == null) return;
             long curTime = TimeHelper.ServerNow();
@@ -467,7 +470,8 @@ namespace GFGGame
 
         private void UpdateTime(object param = null)
         {
-            GObject item = _ui.m_listBg.GetChildAt(1);
+            int boxId = LuckyBoxDataManager.Instance.luckyBoxIds[1];
+            GObject item = _listActivityBtnObj[boxId];
             if (item == null) return;
             GObject textField = item.asCom.GetChild("txtTsyTime");
             if (textField == null) return;
@@ -642,10 +646,11 @@ namespace GFGGame
         protected override void UpdateToCheckGuide(object param)
         {
             if (!ViewManager.CheckIsTopView(this.viewCom)) return;
-            GObject gObject = _ui.m_listBg.GetChildAt(_curIndex);
+            if (_curIndex > 0) return;
+            int boxId = LuckyBoxDataManager.Instance.luckyBoxIds[_curIndex];
+            GObject gObject = _listActivityBtnObj[boxId];
             if (gObject == null) return; 
-           GButton btnBuyTen = gObject.asCom.GetChild("comLuckBoxBtn").asCom.GetChild("btnBuyTen").asButton;
-
+            GButton btnBuyTen = gObject.asCom.GetChild("comLuckBoxBtn").asCom.GetChild("btnBuyTen").asButton;
             GuideController.TryGuide(null, ConstGuideId.LUCKY_BOX, 1, "“摘星”里可以通过星辰的力量获得服饰。", -1, true, _ui.target.height - 600);
             GuideController.TryGuide(btnBuyTen, ConstGuideId.LUCKY_BOX, 2, "点击摘取十次。");
             GuideController.TryCompleteGuide( ConstGuideId.LUCKY_BOX, 2);

+ 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()
         {
@@ -1227,9 +1251,9 @@ namespace GFGGame
             _ui.m_show.Play();
         }
 
-        //private void OnClickBtnGetYuanXiao()
-        //{
-        //    ViewManager.Show<ActivityGetYuanXiaoEntryView>();
-        //}
+        private void OnClickBtnGetYuanXiao()
+        {
+            ViewManager.Show<ActivityGetYuanXiaoEntryView>();
+        }
     }
 }

+ 7 - 1
GameClient/Assets/Game/HotUpdate/Views/OpenServerActivity/OpenServerActivityView.cs

@@ -87,7 +87,6 @@ namespace GFGGame
             Timers.inst.Remove(ShowEffTime);
         }
 
-
         protected override void AddEventListener()
         {
             base.AddEventListener();
@@ -117,6 +116,13 @@ namespace GFGGame
         {
             int actLimitId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitStlyc);
             ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(actLimitId);
+            if (actLimitId <= 0)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("活动已结束");
+                Timers.inst.Remove(UpdateTime);
+                OnClickBtnBack();
+                return;
+            }
             long time = TimeUtil.DateTimeToTimestamp(activityOpenCfg.endTime) - TimeHelper.ServerNow();
             string strTime = TimeUtil.FormattingTimeTo_DD_HH_mm(time);
             string[] str = strTime.Split(':');

BIN
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0.png


BIN
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0_1!a.png


BIN
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_atlas0_1.png


BIN
GameClient/Assets/ResIn/UI/ActivityGetYuanXiao/ActivityGetYuanXiao_fui.bytes


BIN
GameClient/Assets/ResIn/UI/Friend/Friend_fui.bytes


BIN
GameClient/Assets/ResIn/UI/League/League_fui.bytes