|
@@ -0,0 +1,208 @@
|
|
|
+
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using ET;
|
|
|
+using FairyGUI;
|
|
|
+using UI.DailyWelfare;
|
|
|
+using UnityEngine;
|
|
|
+
|
|
|
+namespace GFGGame
|
|
|
+{
|
|
|
+ public class DailySignView : BaseWindow
|
|
|
+ {
|
|
|
+ private UI_DailySignUI _ui;
|
|
|
+
|
|
|
+ private int _signCount;
|
|
|
+ private int _month;
|
|
|
+ private int _day;
|
|
|
+
|
|
|
+ public override void Dispose()
|
|
|
+ {
|
|
|
+ base.Dispose();
|
|
|
+
|
|
|
+ if (_ui != null)
|
|
|
+ {
|
|
|
+ _ui.Dispose();
|
|
|
+ _ui = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void OnInit()
|
|
|
+ {
|
|
|
+ base.OnInit();
|
|
|
+
|
|
|
+ packageName = UI_DailySignUI.PACKAGE_NAME;
|
|
|
+ _ui = UI_DailySignUI.Create();
|
|
|
+ this.viewCom = _ui.target;
|
|
|
+ this.viewCom.Center();
|
|
|
+ this.modal = true;
|
|
|
+ viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
|
|
|
+ _ui.m_btnClose.onClick.Add(Hide);
|
|
|
+ _ui.m_list.itemRenderer = ListItemRender;
|
|
|
+
|
|
|
+ }
|
|
|
+ protected override void AddEventListener()
|
|
|
+ {
|
|
|
+ base.AddEventListener();
|
|
|
+ EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateSignView);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void OnShown()
|
|
|
+ {
|
|
|
+ base.OnShown();
|
|
|
+
|
|
|
+ if (TimeHelper.ClientNow() < TimeUtil.GetCurDayTime(GlobalCfgArray.globalCfg.refreshTime))
|
|
|
+ {
|
|
|
+ if (DateTime.Now.Day == 1)
|
|
|
+ {
|
|
|
+ if (DateTime.Now.Month == 1)
|
|
|
+ {
|
|
|
+ _month = 12;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _month = DateTime.Now.Month - 1;
|
|
|
+ }
|
|
|
+ List<DailySignBonusCfg> cfgs = DailySignBonusCfgArray.Instance.GetCfgsBymonth(_month);
|
|
|
+ _day = cfgs[cfgs.Count - 1].day;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _day = DateTime.Now.Day - 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _month = DateTime.Now.Month;
|
|
|
+ _day = DateTime.Now.Day;
|
|
|
+ }
|
|
|
+ _ui.m_txtMonth.text = NumberUtil.GetOldChiniseNumberText(_month);
|
|
|
+ UpdateSignView();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void OnHide()
|
|
|
+ {
|
|
|
+ base.OnHide();
|
|
|
+ }
|
|
|
+ protected override void RemoveEventListener()
|
|
|
+ {
|
|
|
+ base.RemoveEventListener();
|
|
|
+ EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateSignView);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UpdateSignView()
|
|
|
+ {
|
|
|
+ _signCount = MathHelper.CountOnes(GameGlobal.myNumericComponent.GetAsInt(NumericType.SignDay));
|
|
|
+ _ui.m_txtSignCount.text = _signCount.ToString();
|
|
|
+ List<DailySignBonusCfg> signBonusCfgs = DailySignBonusCfgArray.Instance.GetCfgsBymonth(_month);
|
|
|
+ _ui.m_proSign.target.max = signBonusCfgs.Count;
|
|
|
+ _ui.m_proSign.target.value = _signCount;
|
|
|
+ List<DailySignCfg> signCfgs = DailySignCfgArray.Instance.GetCfgsBymonth(_month);
|
|
|
+ for (int i = 0; i < signCfgs.Count; i++)
|
|
|
+ {
|
|
|
+ GComponent comProBonus = _ui.m_proSign.target.GetChild("comProBonus" + i).asCom;
|
|
|
+ comProBonus.x = ((float)signCfgs[i].day / (float)signBonusCfgs.Count) * _ui.m_proSign.target.width;
|
|
|
+ UI_ComProBonus item = UI_ComProBonus.Proxy(comProBonus);
|
|
|
+ item.m_loaIcon.url = ResPathUtil.GetIconPath(ItemCfgArray.Instance.GetCfg(signCfgs[i].bonusArr[0][0]));
|
|
|
+ item.m_txtCount.text = signCfgs[i].bonusArr[0][1].ToString();
|
|
|
+ item.m_txtDay.text = signCfgs[i].day.ToString();
|
|
|
+ if (item.target.data == null)
|
|
|
+ {
|
|
|
+ item.target.onClick.Add(OnBtnGetProBonus);
|
|
|
+ }
|
|
|
+ item.target.data = signCfgs[i];
|
|
|
+ bool isGot = MathHelper.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.SignReward), signCfgs[i].day);
|
|
|
+ item.m_imgGot.visible = isGot;
|
|
|
+ bool canGet = _signCount >= signCfgs[i].day && !isGot;
|
|
|
+ RedDotController.Instance.SetComRedDot(item.target, canGet);
|
|
|
+ UI_ComProBonus.ProxyEnd();
|
|
|
+ }
|
|
|
+ _ui.m_list.numItems = signBonusCfgs.Count > 29 ? signBonusCfgs.Count + 1 : signBonusCfgs.Count;
|
|
|
+ }
|
|
|
+ private async void OnBtnGetProBonus(EventContext context)
|
|
|
+ {
|
|
|
+ GObject obj = context.sender as GObject;
|
|
|
+ DailySignCfg signCfg = obj.data as DailySignCfg;
|
|
|
+ if (_signCount < signCfg.day || MathHelper.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.SignReward), signCfg.day))
|
|
|
+ {
|
|
|
+ GoodsItemTipsController.ShowItemTips(signCfg.bonusArr[0][0]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ bool result = await DailyWelfareSProxy.ReqGetSignReward(signCfg.day);
|
|
|
+ if (result)
|
|
|
+ {
|
|
|
+ UpdateSignView();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ListItemRender(int index, GObject obj)
|
|
|
+ {
|
|
|
+
|
|
|
+ UI_ListSignItem item = UI_ListSignItem.Proxy(obj);
|
|
|
+ if (index == 29)
|
|
|
+ {
|
|
|
+ item.target.touchable = false;
|
|
|
+ item.target.visible = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int _index = index >= 29 ? index - 1 : index;
|
|
|
+ DailySignBonusCfg bonusCfg = DailySignBonusCfgArray.Instance.GetCfgsBymonth(_month)[_index];
|
|
|
+ ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(bonusCfg.bonusArr[0][0]);
|
|
|
+ bool isGot = MathHelper.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.SignDay), bonusCfg.day);
|
|
|
+
|
|
|
+ item.m_c1.selectedIndex = itemCfg.itemType == ConstItemType.DRESS_UP ? 0 : bonusCfg.type;
|
|
|
+ item.m_txtDay.text = NumberUtil.GetChiniseNumberText(bonusCfg.day);// bonusCfg.day.ToString();
|
|
|
+ if (item.m_comItem.data == null)
|
|
|
+ {
|
|
|
+ item.m_comItem.data = new ItemView(item.m_comItem);
|
|
|
+ }
|
|
|
+ ItemData itemData = ItemUtil.createItemData(bonusCfg.bonusArr[0]);
|
|
|
+ (item.m_comItem.data as ItemView).SetData(itemData);
|
|
|
+ (item.m_comItem.data as ItemView).ShowTips = false;
|
|
|
+ (item.m_comItem.data as ItemView).ChangeTxtCountStyle();
|
|
|
+
|
|
|
+ item.m_imgMask.visible = isGot || bonusCfg.day < _day && !isGot;
|
|
|
+ item.m_imgGot.visible = isGot;
|
|
|
+ item.m_imgNotGet.visible = bonusCfg.day < _day && !isGot;
|
|
|
+ RedDotController.Instance.SetComRedDot(item.target, bonusCfg.day == _day && !isGot);
|
|
|
+ if (item.target.data == null)
|
|
|
+ {
|
|
|
+ item.target.onClick.Add(OnGetSignBonus);
|
|
|
+ }
|
|
|
+ item.target.data = bonusCfg.day;
|
|
|
+ UI_ListSignItem.ProxyEnd();
|
|
|
+ }
|
|
|
+ private async void OnGetSignBonus(EventContext context)
|
|
|
+ {
|
|
|
+ GObject obj = context.sender as GObject;
|
|
|
+ int day = (int)obj.data;
|
|
|
+ bool result = false;
|
|
|
+ if (day > _day) return;
|
|
|
+ if (day < _day)
|
|
|
+ {
|
|
|
+ int[] cost = GlobalCfgArray.globalCfg.dailySignConsumeArr[0];
|
|
|
+ AlertUI.Show(string.Format("是否确定花费{0}{1}补签?", cost[1], ItemCfgArray.Instance.GetCfg(cost[0]).name)).
|
|
|
+ SetLeftButton(true, "否").
|
|
|
+ SetRightButton(true, "是", async (object param) =>
|
|
|
+ {
|
|
|
+ if (ItemDataManager.GetItemNum(cost[0]) < cost[1])
|
|
|
+ {
|
|
|
+ PromptController.Instance.ShowFloatTextPrompt("消耗不足");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ result = await DailyWelfareSProxy.ReqReSign(day);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result = await DailyWelfareSProxy.ReqSign(day);
|
|
|
+ }
|
|
|
+ if (result)
|
|
|
+ {
|
|
|
+ _ui.m_list.numItems = DailySignBonusCfgArray.Instance.GetCfgsBymonth(_month).Count;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|