using System.Collections; using UnityEngine; using UI.ActivityAFuGift; using ET; using FairyGUI; using System; using UI.CommonGame; namespace GFGGame { public class ActivityAfuGiftView : BaseWindow { private UI_ActivityAFuGiftUI _ui; private GList _rewardListUI; private struct GetState { public int rewardID; public bool canGet; } public override void Dispose() { base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ActivityAFuGiftUI.PACKAGE_NAME; _ui = UI_ActivityAFuGiftUI.Create(); viewCom = _ui.target; viewCom.Center(); modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_btnClose.onClick.Add(Hide); // Data ActivityAfuGiftDataManager.Instance.InitActivityInfo(); // UI _rewardListUI = _ui.m_panel.m_scrollPane.m_list; _rewardListUI.itemRenderer = RenderListReward; _rewardListUI.numItems = ActivityAfuGiftDataManager.Instance.RewardCfgs.Count; InitUI(); } protected override void OnShown() { base.OnShown(); _ui.m_panel.m_scrollPane.target.scrollPane.posX = 0; UpdateTime(null); Timers.inst.Add(1, 0, UpdateTime); } protected override void OnHide() { base.OnHide(); Timers.inst.Remove(UpdateTime); } protected override void AddEventListener() { base.AddEventListener(); } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void InitUI() { // 112121 // 使列表宽度等于子节点的总宽度 float itemWidth = _rewardListUI.GetChildAt(0).width; float columnGap = _rewardListUI.columnGap; _rewardListUI.width = CalculateListWidth(_rewardListUI.numItems, itemWidth, columnGap); // 根据列表 初始化进度条长度 float marginLeft = 147; GProgressBar gProgressBar = _ui.m_panel.m_scrollPane.m_progress; gProgressBar.width = marginLeft + _rewardListUI.width; } private float CalculateListWidth(int num, float itemWidth, float columnGap) { return num * itemWidth + (num - 1) * columnGap; } private void UpdateTime(object param) { long curTime = TimeHelper.ServerNow(); long endTime = ActivityAfuGiftDataManager.Instance.GetEndTime(); _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime); } private void RenderListReward(int index, GObject item) { UI_reward rewardUI = UI_reward.Proxy(item); rewardUI.m_day.m_day.SetVar("day", (index + 1).ToString()).FlushVars(); int itemNormalId = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusFreeArr[0][0]; int itemVipId1 = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[0][0]; int itemVipId2 = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[1][0]; LoadItem(itemNormalId, rewardUI.m_reward_normal, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusFreeArr[0][1]); LoadItem(itemVipId1, rewardUI.m_reward_vip1, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[0][1], true, true); LoadItem(itemVipId2, rewardUI.m_reward_vip2, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[1][1], true, true); UI_reward.ProxyEnd(); } private void LoadItem(int id, GObject obj, int num, bool isVip = false, bool isLock = false) { ItemCfg itemNormal = ItemCfgArray.Instance.GetCfg(id); UI_ComItem comItem = UI_ComItem.Proxy(obj); comItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemNormal); comItem.m_txtCount.text = num.ToString(); comItem.m_QualityType.selectedIndex = itemNormal.rarity - 1; comItem.target.onClick.Add(OnItemClick); comItem.m_Lock.selectedIndex = isLock ? 1 : 0; int dayIndex = _rewardListUI.GetChildIndex(obj) + 1; // 已经到达的日期 int passDay = ActivityAfuGiftDataManager.Instance.GetMaxPassDay(); bool arrive = dayIndex <= passDay; comItem.target.data = new GetState { rewardID = id, canGet = arrive }; if (arrive) { ActivityInfo activityInfo = ActivityAfuGiftDataManager.Instance.Info; bool canGet = false; // Vip专属 if (isVip) { canGet = ActivityAfuGiftDataManager.Instance.CanGetSuperReward(dayIndex); } else { canGet = ActivityAfuGiftDataManager.Instance.CanGetNormalReward(dayIndex); } // 已领 if (!canGet) { //bonus.m_imgGot.visible = true; obj.touchable = false; // 隐藏红点 RedDotController.Instance.SetComRedDot(obj.asCom, false); } // 未领 else { //bonus.m_imgGot.visible = false; // 显示红点 RedDotController.Instance.SetComRedDot(obj.asCom, true); } } UI_ComItem.ProxyEnd(); } private void OnItemClick(EventContext eventContext) { GObject obj = (GObject)eventContext.sender; GetState getState = (GetState)(obj.data); if (getState.canGet) { //ActivityGlobalSProxy.ReqGetActivityBonus(_activityInfo.ActivityId, getState.rewardID).Coroutine(); } else { GoodsItemTipsController.ShowItemTips(getState.rewardID); } } } }