using System.Collections.Generic; using UnityEngine; using FairyGUI; using FGUI.ZM_Pass_14; using DG.Tweening; using System; using Unity.VisualScripting; using IgnoreOPS; namespace ZooMatch { public class PassViewUI : BaseUI { private PassViewUICtrl ctrl; private PassViewModel model; private FGUI.ZM_Pass_14.com_pass_view ui; List passing_list = new List(); List Durationtasks_list = new List(); List Passportrewards_list = new List(); private Vector2 start_pos; public PassViewUI(PassViewUICtrl ctrl) : base(ctrl) { uiName = UIConst.PassViewUI; this.ctrl = ctrl; } protected override void SetUIInfo(UIInfo uiInfo) { uiInfo.packageName = "ZM_Pass_14"; uiInfo.assetName = "com_pass_view"; uiInfo.layerType = UILayerType.Popup; uiInfo.isNeedOpenAnim = false; uiInfo.isNeedCloseAnim = false; uiInfo.isNeedUIMask = true; } #region 生命周期 protected override void OnInit() { model = ModuleManager.Instance.GetModel(ModelConst.PassViewModel) as PassViewModel; } protected override void OnClose() { GameHelper.showGameUI = true; HallManager.Instance.UpdateSecondEvent -= upData; WebviewManager.Instance.SetDarkThough(true); } protected override void OnBind() { ui = baseUI as FGUI.ZM_Pass_14.com_pass_view; } protected override void OnOpenBefore(object args) { if (Screen.safeArea.y != 0) { ui.gold.y += Screen.safeArea.y; ui.title.y += Screen.safeArea.y; ui.close.y += Screen.safeArea.y; ui.top_bg.height += Screen.safeArea.y; } WebviewManager.Instance.SetDarkThough(false); if (GameHelper.GetGameday() != DateTime.Now.Day) { PlayerPrefs.SetInt("_time", 0); SaveData.GetSaveobject().time_task_record = new List(); GameHelper.SetGameday(); } HallManager.Instance.UpdateSecondEvent += upData; InitView(); } protected override void OnOpen(object args) { } protected override void OnHide() { } protected override void OnDisplay(object args) { } #endregion #region 消息 protected override void AddListener() { GameDispatcher.Instance.AddListener(GameMsg.apple_pay_success, pay_success); } protected override void RemoveListener() { GameDispatcher.Instance.RemoveListener(GameMsg.apple_pay_success, pay_success); } #endregion private void pay_success(object a) { string type = (string)a; if (type == AdRedeemManager.battle_pass) { DOVirtual.DelayedCall(0.5f, () => { SaveData.GetSaveobject().is_get_battlepass = true; int gold = 0; int _out = 0; int _back = 0; int _refresh = 0; List paylist = SaveData.GetSaveobject().battle_pass_paylist; for (int i = 0; i < Passportrewards_list.Count; i++) { if (GameHelper.GetBattleLv() > i ) { if (Passportrewards_list[i].Paid_rewards_type == 0) gold += Passportrewards_list[i].Paid_rewards_num; else if (Passportrewards_list[i].Paid_rewards_type == 1) _out += Passportrewards_list[i].Paid_rewards_num; else if (Passportrewards_list[i].Paid_rewards_type == 2) _back += Passportrewards_list[i].Paid_rewards_num; else if (Passportrewards_list[i].Paid_rewards_type == 3) _refresh += Passportrewards_list[i].Paid_rewards_num; SaveData.GetSaveobject().battle_pass_paylist.Add(i+1); } else break; } GameDispatcher.Instance.Dispatch(GameMsg.Gold_refresh); GameHelper.AddItemNumber(0,_out); GameHelper.AddItemNumber(1,_back); GameHelper.AddItemNumber(2,_refresh); GameDispatcher.Instance.Dispatch(GameMsg.Sheep_item_refresh); SaveData.saveDataFunc(); GameHelper.ShowTips("Purchase successful"); if(gold > 0) { GetReward(gold); } ui.pass_list.numItems = Passportrewards_list.Count; ui.btn_recive.visible = false; }); } } //初始化页面逻辑 private void InitView() { ui.close.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassViewUI_Close); }); ui.btn_recive.ad_icon.visible = false; ui.gold.GetChild("text_gold").text = $"{PreferencesMgr.Instance.Currency101:N0}"; passing_list = ConfigSystem.GetConfig().dataList; Durationtasks_list = ConfigSystem.GetConfig().dataList; Passportrewards_list = ConfigSystem.GetConfig().dataList; setPassCom(); gotoItem(); } void upData() { ui.remain_time.text = CommonHelper.TimeFormat( SaveData.GetSaveobject().battle_pass_time + Passportrewards_list[0].Passportrewards_CD * 24 * 3600 - Convert.ToInt32(GameHelper.GetNowTime()), CountDownType.Day); if ((SaveData.GetSaveobject().battle_pass_time + Passportrewards_list[0].Passportrewards_CD * 24 * 3600) < GameHelper.GetNowTime()) { SaveData.GetSaveobject().battle_pass_time = (int)GameHelper.GetNowTime(); SaveData.GetSaveobject().battle_pass_freelist.Clear(); SaveData.GetSaveobject().battle_pass_paylist.Clear(); SaveData.GetSaveobject().is_get_battlepass = false; GameHelper.ResetGameExp(); SaveData.saveDataFunc(); setPassCom(); } } void setPassCom() { if ((SaveData.GetSaveobject().battle_pass_time + Passportrewards_list[0].Passportrewards_CD * 24 * 3600) < GameHelper.GetNowTime()) { SaveData.GetSaveobject().battle_pass_time = (int)GameHelper.GetNowTime(); GameHelper.ResetGameExp(); SaveData.GetSaveobject().battle_pass_freelist.Clear(); SaveData.GetSaveobject().battle_pass_paylist.Clear(); SaveData.GetSaveobject().is_get_battlepass = false; SaveData.saveDataFunc(); } upData(); ui.pass_list.itemRenderer = battle_itemRender; ui.pass_list.numItems = Passportrewards_list.Count; ui.text_level.text = GameHelper.GetBattleLv().ToString(); ui.progress_pass.value = GameHelper.GetGameExp(); if (GameHelper.GetBattleLv() >= Passportrewards_list.Count) { ui.progress_pass.max = Passportrewards_list[GameHelper.GetBattleLv() - 1].Eliminating_quantity; ui.progress_pass.text_num.text = GameHelper.GetGameExp().ToString(); } else { ui.progress_pass.max = Passportrewards_list[GameHelper.GetBattleLv()].Eliminating_quantity; ui.progress_pass.text_num.text = GameHelper.GetGameExp() + "/" + Passportrewards_list[GameHelper.GetBattleLv()].Eliminating_quantity; } ui.btn_recive.visible = !SaveData.GetSaveobject().is_get_battlepass; ui.btn_recive.SetClick(() => { // if (!GameHelper.IsGiftSwitch())UnlockPass(); UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassunlockUI_Open); }); } void setItemUrl(GLoader loader, int urltype) { if (urltype == 0) loader.url = "ui://ZM_Pass_14/passing_jbd_01"; else if (urltype == 4) loader.url = "ui://ZM_Pass_14/passing_jbd_02"; else if (urltype == 1) loader.url = "ui://ZM_Common_01/prop_icon_003"; else if (urltype == 2) loader.url = "ui://ZM_Common_01/prop_icon_002"; else if (urltype == 3) loader.url = "ui://ZM_Common_01/prop_icon_001"; } void seItemClick(com_item_award item, int number, int type) { if (type == 0) { GetReward(number); getRewardIndex = -1; } else { GameHelper.AddItemNumber(type - 1, number); GameDispatcher.Instance.Dispatch(GameMsg.Sheep_item_refresh); } ui.pass_list.numItems = Passportrewards_list.Count; GameDispatcher.Instance.Dispatch(GameMsg.RefreshRedDot); } private void UnlockPass() { GameHelper.ShowVideoAd("pass_unlock", isSuccess => { if (isSuccess) { SaveData.GetSaveobject().is_get_battlepass = true; int gold = 0; int out_ = 0; int back_ = 0; int refresh_ = 0; for (int i = 0; i < Passportrewards_list.Count; i++) { if (GameHelper.GetBattleLv() > i) { if (Passportrewards_list[i].Paid_rewards_type == 0) gold += Passportrewards_list[i].Paid_rewards_num; else if (Passportrewards_list[i].Paid_rewards_type == 1) out_ += Passportrewards_list[i].Paid_rewards_num; else if (Passportrewards_list[i].Paid_rewards_type == 2) back_ += Passportrewards_list[i].Paid_rewards_num; else if (Passportrewards_list[i].Paid_rewards_type == 3) refresh_ += Passportrewards_list[i].Paid_rewards_num; SaveData.GetSaveobject().battle_pass_paylist.Add(i + 1); } else break; } if (gold > 0) { GetReward(gold); // var start = GameHelper.GetUICenterPosition(ui.btn_recive); // var end = GameHelper.GetUICenterPosition(ui.gold.GetChild("icon")); // var rewardData = new RewardData(); // var rewardSingleData = new RewardSingleData(101, gold, RewardOrigin.AdTask); // rewardData.AddReward(rewardSingleData); // rewardData.displayType = RewardDisplayType.RewardFly | RewardDisplayType.ValueChange; // rewardData.AddCompleted((isScu) => // { // DOVirtual.DelayedCall(0.5f, () => // { // var startNum = PreferencesMgr.Instance.Currency101 - gold; // DOVirtual.Float((float)startNum, (float)GameHelper.GetGoldNumber(), 1f, // value => { ui.gold.GetChild("text_gold").text = ((int)value).ToString(); }); // }); // }); // GameDispatcher.Instance.Dispatch(GameMsg.GetReward, rewardData); } GameHelper.AddItemNumber(0, out_); GameHelper.AddItemNumber(1, back_); GameHelper.AddItemNumber(2, refresh_); GameDispatcher.Instance.Dispatch(GameMsg.Sheep_item_refresh); ui.pass_list.numItems = Passportrewards_list.Count; ui.btn_recive.visible = false; SaveData.saveDataFunc(); } }); } private void GetReward(int awardNum) { var rewardData = new RewardData(); var end = GameHelper.GetUICenterPosition(ui.gold.GetChild("icon")); var rewardSingleData = new RewardSingleData(101, awardNum, RewardOrigin.AdTask) { startPosition = start_pos, endPosition = new Vector2(end.x - 150, end.y - 136) }; rewardData.AddReward(rewardSingleData); rewardData.displayType = RewardDisplayType.RewardFly | RewardDisplayType.ValueChange; rewardData.AddCompleted(success => { if (success) { var startNum = PreferencesMgr.Instance.Currency101 - awardNum; DOVirtual.Float((float)startNum, (float)GameHelper.GetGoldNumber(), 1f, value => { ui.gold.GetChild("text_gold").text = GameHelper.Get101Str((decimal)value); }); } }); GameDispatcher.Instance.Dispatch(GameMsg.GetReward, rewardData); } private int getRewardIndex = -1; void gotoItem(){ if (getRewardIndex > 0){ ui.pass_list.ScrollToView_UseAnim(getRewardIndex-1,true,0.65f); } } void battle_itemRender(int index, GObject obj) { index++; com_pass_item item = (com_pass_item)obj; int pass_level = GameHelper.GetBattleLv(); item.index_text.text = index.ToString(); item.free_item.type.selectedIndex = 0; item.pay_item.type.selectedIndex = 1; List freelist = SaveData.GetSaveobject().battle_pass_freelist; List paylist = SaveData.GetSaveobject().battle_pass_paylist; if (index > 0) { item.free_item.number_text.text = "x" + GameHelper.Get101Str(Passportrewards_list[index - 1].Free_rewards_num); item.pay_item.number_text.text = "x" + GameHelper.Get101Str(Passportrewards_list[index - 1].Paid_rewards_num); if (Passportrewards_list[index - 1].Free_rewards_type == 0) { setItemUrl(item.free_item.item_loader, 0); } else { setItemUrl(item.free_item.item_loader, Passportrewards_list[index - 1].Paid_rewards_type); } if (Passportrewards_list[index - 1].Paid_rewards_type == 0) { setItemUrl(item.pay_item.item_loader, 4); } else { setItemUrl(item.pay_item.item_loader, Passportrewards_list[index - 1].Paid_rewards_type); if (Passportrewards_list[index - 1].Paid_rewards_type >= 1 && Passportrewards_list[index - 1].Paid_rewards_type <= 3) { // item.pay_item.item_loader.SetScale(0.55f, 0.55f); } } if (index <= pass_level)//等级超过了 { if (freelist.Contains(index))//领取过 { item.free_item.state.selectedIndex = 2; item.free_item.SetClick(() => { }); } else { if (getRewardIndex < 0) getRewardIndex = index; item.free_item.state.selectedIndex = 1; item.free_item.SetClick(() => { freelist.Add(index); SaveData.saveDataFunc(); GameHelper.ShowTips("Successfully claimed"); seItemClick(item.free_item, Passportrewards_list[index - 1].Free_rewards_num, Passportrewards_list[index - 1].Free_rewards_type); }); } if (paylist.Contains(index))//领取过 { item.pay_item.state.selectedIndex = 2; item.pay_item.SetClick(() => { }); } else { if (SaveData.GetSaveobject().is_get_battlepass) { if (getRewardIndex < 0) getRewardIndex = index; item.pay_item.state.selectedIndex = 1; item.pay_item.SetClick(() => { paylist.Add(index); SaveData.saveDataFunc(); seItemClick(item.pay_item, Passportrewards_list[index - 1].Paid_rewards_num, Passportrewards_list[index - 1].Paid_rewards_type); GameHelper.ShowTips("Successfully claimed"); }); } else { item.pay_item.state.selectedIndex = 4; item.pay_item.SetClick(() => { // if (!GameHelper.IsGiftSwitch()) UnlockPass(); UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassunlockUI_Open); }); } } } else { item.free_item.state.selectedIndex = 0;//不可领取 item.free_item.SetClick(() => { GameHelper.ShowTips("Receiving level not reached"); }); item.pay_item.SetClick(() => { if (SaveData.GetSaveobject().is_get_battlepass) { GameHelper.ShowTips("Receiving level not reached"); } else { // if (!GameHelper.IsGiftSwitch()) UnlockPass(); UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassunlockUI_Open); } }); if (SaveData.GetSaveobject().is_get_battlepass) { item.pay_item.state.selectedIndex = 0; } else { item.pay_item.state.selectedIndex = 3; } } } if (index < pass_level)//进度条 { item.is_full.selectedIndex = com_pass_item.Is_full_full; } else if (index >= pass_level) { item.is_full.selectedIndex = com_pass_item.Is_full_full; } else { item.is_full.selectedIndex = com_pass_item.Is_full_full; } if (index == 0) { // item.state.selectedIndex = 3; // index++; } if (index == 1) { item.state.selectedIndex = 0; if (pass_level > 0) { item.progress_0_top.width = 150; if (((float)(GameHelper.GetGameExp() - Passportrewards_list[0].Eliminating_quantity) / (Passportrewards_list[1].Eliminating_quantity - Passportrewards_list[0].Eliminating_quantity)) > 0.5) { item.progress_0_down.width = 170; } else { item.progress_0_down.width = (float)(GameHelper.GetGameExp() - Passportrewards_list[0].Eliminating_quantity) / (Passportrewards_list[1].Eliminating_quantity - Passportrewards_list[0].Eliminating_quantity) * 2 * 170; } } else { item.progress_0_top.width = (float)GameHelper.GetGameExp() / Passportrewards_list[0].Eliminating_quantity * 150; item.progress_0_down.width = 0; } } else if (index == Passportrewards_list.Count) { item.state.selectedIndex = 2; if (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) > 0.5) { float width = (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) - 0.5f) * 2 * 188; if (width > 190) width = 190; item.progress_2_top.width = width; } else item.progress_2_top.width = 0; } else { item.state.selectedIndex = 1; if (pass_level >= index) { item.progress_1_top.width = 165; } else { if (pass_level == (index - 1)) { if (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) > 0.5) { float width = (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) - 0.5f) * 2 * 165; if (width > 165) width = 165; item.progress_1_top.width = width; } else item.progress_1_top.width = 0; } else { item.progress_1_top.width = 0; } } if (pass_level == index) { if (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 1].Eliminating_quantity) / (Passportrewards_list[index].Eliminating_quantity - Passportrewards_list[index - 1].Eliminating_quantity)) <= 0.5) { float width = (float)(GameHelper.GetGameExp() - Passportrewards_list[index - 1].Eliminating_quantity) / (Passportrewards_list[index].Eliminating_quantity - Passportrewards_list[index - 1].Eliminating_quantity) * 2 * 170; if (width > 170) width = 170; item.progress_1_down.width = width; } else { item.progress_1_down.width = 170; } } else { if (pass_level > index) item.progress_1_down.width = 170; else item.progress_1_down.width = 0; } } } } }