using System.Collections.Generic; using UnityEngine; using FairyGUI; using System; using DG.Tweening; using SGModule.NetKit; using FGUI.ZM_store_17; using IgnoreOPS; namespace BallKingdomCrush { public class BuygoldUI : BaseUI { private BuygoldUICtrl ctrl; private BuygoldModel model; private FGUI.ZM_store_17.com_buygold ui; private bool Isbuysuccess = false; public BuygoldUI(BuygoldUICtrl ctrl) : base(ctrl) { uiName = UIConst.BuygoldUI; this.ctrl = ctrl; } protected override void SetUIInfo(UIInfo uiInfo) { uiInfo.packageName = "ZM_store_17"; uiInfo.assetName = "com_buygold"; uiInfo.layerType = UILayerType.Popup; uiInfo.isNeedOpenAnim = false; uiInfo.isNeedCloseAnim = false; uiInfo.isNeedUIMask = true; } #region 生命周期 protected override void OnInit() { //model = ModuleManager.Instance.GetModel(ModelConst.BuygoldModel) as BuygoldModel; } protected override void OnClose() { AdExchangeManager.Instance.Destroy(); GameHelper.showGameUI = true; HallManager.Instance.UpdateSecondEvent -= initList; GameDispatcher.Instance.Dispatch(GameMsg.showBroadCast); GameDispatcher.Instance.Dispatch(GameMsg.pack_close); if (Isbuysuccess) { GameHelper.ShowTurnOffReward(); } else { GameHelper.ShowPaidPack(); } } protected override void OnBind() { ui = baseUI as FGUI.ZM_store_17.com_buygold; } protected override void OnOpenBefore(object args) { if (Screen.safeArea.y != 0) {//刘海屏 ui.top_gold.y += 68; } TrackKit.SendEvent(GameHelper.getTrackEvenName(), ADEventTrack.Property.shop_show); ui.top_gold.GetChild("text_gold").text = GameHelper.Get101Str(GameHelper.GetGoldNumber()); if (!GameHelper.IsAdModelOfPay()) { ui.ads.visible = false; } InitView(); HallManager.Instance.UpdateSecondEvent += initList; } 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 void GetAward(decimal gold, int index) { var item = ui.gold_list.GetChildAt(index); var start = GameHelper.GetUICenterPosition(item); var end = GameHelper.GetUICenterPosition(ui.top_gold.GetChild("img")); var rewardData = new RewardData(); var rewardSingleData = new RewardSingleData(101, gold, RewardOrigin.AdTask) { startPosition = start, endPosition = new Vector2(end.x, end.y) }; rewardData.AddReward(rewardSingleData); rewardData.displayType = RewardDisplayType.RewardFly | RewardDisplayType.ValueChange; rewardData.AddCompleted((isScu) => { DOVirtual.DelayedCall(0.5f, () => { var startNum = DataMgr.Coin.Value - gold; DOVirtual.Float((float)startNum, (float)GameHelper.GetGoldNumber(), 0.5f, value => { ui.top_gold.GetChild("text_gold").text = GameHelper.Get101Str((decimal)value); } ).OnComplete(() => { // 动画完成时确保最终值被正确设置 ui.top_gold.GetChild("text_gold").text = GameHelper.Get101Str(DataMgr.Coin.Value); }); }); }); GameDispatcher.Instance.Dispatch(GameMsg.GetReward, rewardData); } void pay_success(object str) { string type = (string)str; if (type.StartsWith("buy_gold")) { int startIndex = "buy_gold".Length; string suffix = type[startIndex..]; // 截取 "gold" 后的所有字符 int suffix_num = int.Parse(suffix); SaveData.GetSaveObject()._goldtime[suffix_num] = (int)GameHelper.GetNowTime(); SaveData.SaveDataFunc(); GetAward(list[suffix_num].Actual_coins, suffix_num); Isbuysuccess = true; } SetTextString(); } //初始化页面逻辑 private void InitView() { ui.top_gold.touchable = false; ui.btn_close.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.BuygoldUI_Close); }); initList(); } private List list = ConfigSystem.GetConfig(); void initList() { ui.gold_list.itemRenderer = setRemaintime; ui.gold_list.numItems = list.Count; SetTextString(); } public void SetTextString() { var myAds = AdExchangeManager.Instance.GetLookRewardADNum(); ui.ads.SetVar("num", myAds.ToString()).FlushVars(); } void setRemaintime(int index, GObject obj) { buygold_item item = obj as buygold_item; bool is_paid = list[index].is_paid; int time = 0; time = SaveData.GetSaveObject()._goldtime[index]; item.coin_text.text = GameHelper.Get101Str(list[index].Actual_coins); item.index.selectedIndex = 1;//index > 4 ? 4 : index; item.off_text.text = list[index].Discount_rate + "%"; item.discount.visible = !GameHelper.IsAdModelOfPay() && list[index].Discount_rate > 0; if (list[index].Discount_rate != 0) item.off_text.text = list[index].Discount_rate + "%"; if (time + list[index].receive_CD < GameHelper.GetNowTime()) { item.btn_buy.can_buy.selectedIndex = 0; if (!GameHelper.IsAdModelOfPay()){ item.btn_buy.pay_type.selectedIndex = 1; item.text_ads.visible = false; if (!is_paid) { item.btn_buy.btn_text.text = "Free"; item.discount.visible = false; item.index.selectedIndex = 0; } else { decimal price = (decimal)list[index].Payment_amount2; item.btn_buy.btn_text.text = GameHelper.getPrice(price); } item.btn_buy.SetClick(() => { rd_Gold(index); }); } else { int myAds = AdExchangeManager.Instance.GetLookRewardADNum(); int count = (int)list[index].Payment_amount; if (is_paid) { item.text_ads.SetVar("num", count.ToString()).FlushVars(); } if (myAds >= count) { item.btn_buy.pay_type.selectedIndex = 1; if (!is_paid) { item.btn_buy.btn_text.text = Language.GetContent("free"); item.discount.visible = false; item.index.selectedIndex = 0; } else { item.btn_buy.btn_text.text = Language.GetContent("exchange"); } item.btn_buy.SetClick(() => { rd_Gold(index); }); } else if (SaveData.GetSaveObject()._watch_ad_cd > GameHelper.GetNowTime()) { item.btn_buy.can_buy.selectedIndex = 1; item.btn_buy.pay_type.selectedIndex = 1; item.btn_buy.btn_text.text = CommonHelper.TimeFormat(SaveData.GetSaveObject()._watch_ad_cd - Convert.ToInt32(GameHelper.GetNowTime()), CountDownType.Hour); item.btn_buy.SetClick(() => { }); } else { item.btn_buy.can_buy.selectedIndex = 0; item.btn_buy.pay_type.selectedIndex = 0; item.btn_buy.SetClick(() => { GameHelper.ShowVideoAd("BuyGold", (issuccess) => { if (issuccess) { SaveData.GetSaveObject()._watch_ad_cd = (int)GameHelper.GetNowTime() + GameHelper.GetCommonModel().exchangeCD; SaveData.SaveDataFunc(); initList(); } }); TrackKit.SendEvent(GameHelper.getTrackEvenName(), ADEventTrack.Property.shop_click_ + index); }); } } } else { if (!is_paid) { item.discount.visible = false; item.index.selectedIndex = 0; } if (!GameHelper.IsAdModelOfPay()) { item.text_ads.visible = false; } else { if (is_paid) { int count = (int)list[index].Payment_amount; item.text_ads.SetVar("num", count.ToString()).FlushVars(); } } item.btn_buy.can_buy.selectedIndex = 1; item.btn_buy.pay_type.selectedIndex = 1; item.btn_buy.btn_text.text = CommonHelper.TimeFormat(time + list[index].receive_CD - Convert.ToInt32(GameHelper.GetNowTime()), CountDownType.Hour); item.btn_buy.SetClick(() =>{}); } } private void rd_Gold(int index) { // string _type = "buy_gold" + index.ToString(); bool is_paid = list[index].is_paid; if (!is_paid) { SaveData.GetSaveObject()._goldtime[index] = (int)GameHelper.GetNowTime(); SaveData.SaveDataFunc(); GetAward(list[index].Actual_coins, index); InitView(); return; } string _type = getShopName(index); if (GameHelper.IsAdModelOfPay()) { AdExchangeData test = new AdExchangeData() { ad_count = AdExchangeManager.Instance.GetCeilingNeedAds(_type), type = _type, shopName = $"buy_gold{index}" }; AdExchangeManager.Instance.Exchange(test); } else { decimal price = (decimal)list[index].Payment_amount2; ApplePayClass maxPayData = new ApplePayClass() { amount = (int)Math.Round(price * 100), sku = _type, currency = "USD", shopName = $"buy_gold{index}" }; MaxPayManager.Instance.Buy(maxPayData); } } public string getShopName(int index) { string name; // switch(index) // { // case 1: // name = PurchasingManager.buy_gold_1; // break; // case 2: // name = PurchasingManager.buy_gold_2; // break; // case 3: // name = PurchasingManager.buy_gold_3; // break; // case 4: // name = PurchasingManager.buy_gold_4; // break; // case 5: // name = PurchasingManager.buy_gold_5; // break; // default: // return ""; // // } name = list[index].SKU; return name; } } }