using System; using System.Collections.Generic; using System.IO; using System.Linq; using DG.Tweening; using FairyGUI; using FGUI.Common_01; using FGUI.Lobby_03; using IgnoreOPS; using Newtonsoft.Json; using SGModule.ApplePay; using Spine.Unity; using UnityEngine; namespace ChillConnect { public class HallUI : BaseUI { private HallUICtrl ctrl; private HallModel model; public com_hall ui; public static bool isClosed; private long userUid; public int ad_numbers; public int ad_times; public int active_cd = 10; private Tweener tweener; private SkeletonAnimation anim_ad; private int limitTimes; private int OnlineLimit; private string formattedDate = ""; private btn_noads btn_noads; public HallUI(HallUICtrl ctrl) : base(ctrl) { uiName = UIConst.HallUI; this.ctrl = ctrl; } protected override void SetUIInfo(UIInfo uiInfo) { uiInfo.packageName = "Lobby_03"; uiInfo.assetName = "com_hall"; uiInfo.layerType = UILayerType.Normal; uiInfo.isNeedOpenAnim = false; uiInfo.isNeedCloseAnim = false; uiInfo.isNeedUIMask = false; } #region 生命周期 protected override void OnInit() { model = moduleManager.GetModel(ModelConst.HallModel) as HallModel; InitData(); } protected override void OnClose() { HallManager.Instance.UpdateSecondEvent -= UpBtnCoin; isClosed = true; //关闭时保存cd数据 PlayerPrefs.SetInt($"active_cd_num_{userUid}", active_cd); // HallManager.Instance.countTimes = (int)Time.time; CommonHelper.FadeOut(ui); tweener?.Kill(); closeCallback?.Invoke(); } protected override void OnBind() { ui = baseUI as com_hall; } protected override void OnOpenBefore(object args) { if (Screen.safeArea.y != 0) { // ui.top_group.y += 68; ui.left_group.y += 68; ui.right_group.y += 68; } // ui.com_panel.scrollPane.ScrollRight(12,false); // if(GameHelper.IsGiftSwitch()) // { // ui.com_panel.scrollPane.touchEffect = false; // } var anim_paly = FXManager.Instance.SetFx(ui.btn_gold.GetChild("gold_anim") as GGraph, Fx_Type.fx_coin, ref closeCallback); anim_paly.state.SetAnimation(0, "animation", true); CreateGoldtimeList(); int num = PlayerPrefs.GetInt("new_one", 0); limitTimes = ConfigSystem.GetConfig().DataList[0].OnlineCountTime; OnlineLimit = ConfigSystem.GetConfig().DataList[0].OnlineLimitNum; DateTime dataTime = DateTime.Now; formattedDate = dataTime.ToString("yyyy_MM_dd"); btn_noads = ui.btn_noads as btn_noads; // int hall_cd = PlayerPrefs.GetInt($"coin_cd_times_{formattedDate}", 0); // if (HallManager.Instance.countTimes != 0) // { // int cds = (int)Time.time - HallManager.Instance.countTimes; // cds = hall_cd - cds; // PlayerPrefs.SetInt($"coin_cd_times_{formattedDate}", cds <= 0 ? 0 : cds); // HallManager.Instance.countTimes = 0; // } GameHelper.IsShowFirstReward(); isClosed = false; var loginModel = GameHelper.GetLoginModel(); userUid = loginModel.Uid; RankSystemMgr.Instance.checkUsers(); InitView(); UpBtnCoin(); HallManager.Instance.UpdateSecondEvent += UpBtnCoin; (ui.btn_money as com_money).btn_ch.title = GameHelper.getDesByKey("ch_out_1"); } protected override void OnOpen(object args) { // CommonHelper.FadeIn(ui); } protected override void OnHide() { } protected override void OnDisplay(object args) { } public override void OnSwitchLanguage() { base.OnSwitchLanguage(); InitView(); } #endregion #region 消息 protected override void AddListener() { HallManager.Instance.AddChangeGiftSwitch(InitView); GameDispatcher.Instance.AddListener(GameMsg.RefreshMakeupData, OnRefreshMakeupData); GameDispatcher.Instance.AddListener(GameMsg.RefreshRedDot, RefreshRed); PreferencesDispatcher.Instance.AddListener(DataMsg.playerAvatarId, UpdataAvatar); GameDispatcher.Instance.AddListener(GameMsg.noads_refresh, SetBtnAds); PreferencesDispatcher.Instance.AddListener(DataMsg.playerName, OnChangeName); HallManager.Instance.UpdateEvent += UpdateEvent; } protected override void RemoveListener() { HallManager.Instance.RemoveChangeGiftSwitch(InitView); GameDispatcher.Instance.RemoveListener(GameMsg.RefreshMakeupData, OnRefreshMakeupData); GameDispatcher.Instance.RemoveListener(GameMsg.RefreshRedDot, RefreshRed); GameDispatcher.Instance.RemoveListener(GameMsg.noads_refresh, SetBtnAds); PreferencesDispatcher.Instance.RemoveListener(DataMsg.playerAvatarId, UpdataAvatar); PreferencesDispatcher.Instance.RemoveListener(DataMsg.playerName, OnChangeName); HallManager.Instance.UpdateEvent -= UpdateEvent; } #endregion private List Paidcoins_list = ConfigSystem.GetConfig().DataList; private int time_count = 11; private com_broadcast_text1 text_ui; void CreateGoldtimeList() { // 获取保存对象 var saveObject = SaveData.GetSaveObject(); // 检查_goldtime是否为null或者长度与Paidcoins_list.Count不相等 if (saveObject._goldtime == null || saveObject._goldtime.Length != Paidcoins_list.Count) { // 重置_goldtime,并创建一个新的数组,长度为Paidcoins_list.Count saveObject._goldtime = new int[Paidcoins_list.Count]; } } private void UpBtnCoin() { int time = SaveData.GetSaveObject()._goldtime[0]; com_gold btn_gold = ui.btn_gold as com_gold; if (time + Paidcoins_list[0].receive_CD < GameHelper.GetNowTime()) { btn_gold.state.selectedIndex = 2; ui.btn_shop.red.visible = true; } else { btn_gold.state.selectedIndex = 1; ui.btn_shop.red.visible = false; } checkThreeGift(); time_count++; ui.btn_sign.red.visible = signRed(); if (!GameHelper.IsGiftSwitch()) return; if (DataMgr.MakeupTaskHistory.Value.Count < 1) return; MakeupTaskData data = DataMgr.MakeupTaskHistory.Value[DataMgr.MakeupTaskHistory.Value.Count - 1]; if (data.status != MakeupTaskStatus.Level) { (ui.btn_money as com_money).group_tips.visible = false; return; } if (data.ch_time > GameHelper.GetNowTime()) { (ui.btn_money as com_money).text_time.text = "Only " + CommonHelper.TimeFormat((int)data.ch_time - Convert.ToInt32(GameHelper.GetNowTime()), CountDownType.Hour); } else { (ui.btn_money as com_money).group_tips.visible = false; return; } time_number++; if (time_number > 15) { (ui.btn_money as com_money).group_tips.visible = true; } if (time_number > 20) { (ui.btn_money as com_money).group_tips.visible = false; time_number = 0; } } private int time_number = 0; void OnRefreshMakeupData(object obj) { } private void InitData() { model.showCoin = DataMgr.Coin.Value; model.showDollar = DataMgr.Ticket.Value; } private Action closeCallback; private List btn_play_list; private void InitView() { // var anim_paly = FXManager.Instance.SetFx(ui.btn_play.GetChild("btn_parent") as GGraph, // Fx_Type.fx_btn_play, ref closeCallback); // anim_paly.state.SetAnimation(0, "animation", true); btn_play_list = new List { ui.com_level.btn_play1, ui.com_level.btn_play2, ui.com_level.btn_play3, ui.com_level.btn_play4, ui.com_level.btn_play5 }; InitBtn(); Set101(); Set102(); SetName(ui.text_name); RefreshRed(); SetBtnAds(); UpdataAvatar(); ui.btn_sign.SetClickDownEffect(1.0f); ui.btn_sign.SetClick(OnClickTreasure); ui.btn_spin.SetClick(() => { OnClickLuckySpin(); }); ui.bnt_luck_gift.SetClick(() => { OnClickShop(); }); ui.btn_shop.SetClick(() => { OnClickShop(); }); // ui.head_red.visible = PlayerPrefs.GetInt("player_head_red", 0) == 0; ui.btn_head.SetClick(() => { // if (PlayerPrefs.GetInt("player_head_red", 0) == 0) PlayerPrefs.SetInt("player_head_red", 1); // ui.head_red.visible = PlayerPrefs.GetInt("player_head_red", 0) == 0; UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.MenuUI_Open); }); var btnCoin = ui.btn_gold as com_gold; btnCoin.text_gold.text = $"{DataMgr.Coin.Value:N0}"; btnCoin.SetClick(OnClickShop); ad_times = PlayerPrefs.GetInt("main_ad_times", 0); ad_numbers = PlayerPrefs.GetInt("main_ad_numbers", 1); if (HallManager.Instance.enterHallTimes == 1) { reCreatPur(); } ui.state.selectedIndex = GameHelper.IsGiftSwitch() ? 1 : 0; if (ConfigSystem.GetConfig().PiggyBankSwitch == 0 || !GameHelper.IsGiftSwitch()) { ui.btn_saveingpot.visible = false; } ui.btn_saveingpot.SetClick(() => { uiCtrlDispatcher.Dispatch(UICtrlMsg.SaveingPotUI_Open); }); btn_noads.SetClick(() => { if (!SaveData.GetSaveObject().is_get_packreward && !SaveData.GetSaveObject().is_get_removead) { if (btn_noads.GetChild("img_ad").visible) { PackRewardData param = new PackRewardData(); param.isAutoPop = false; param.isNeedScroll = true; UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PackrewardUI_Open, param); } else { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PackrewardUI_Open); } } else if (SaveData.GetSaveObject().is_get_packreward) { PackRewardData param = new PackRewardData(); param.isAutoPop = false; param.isNeedScroll = true; UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PackrewardUI_Open, param); } else { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PackrewardUI_Open); } GameHelper.showGameUI = false; }); if (ConfigSystem.GetConfig().PiggyBankSwitch == 1 && GameHelper.IsGiftSwitch()) { bool isPopPot = false; if (GameHelper.GetLoginModel().NewPlayer) { isPopPot = true; uiCtrlDispatcher.Dispatch(UICtrlMsg.SaveingPotUI_Open); } else { if (DateTime.Now.Day != PlayerPrefs.GetInt("pot_day", 0)) { isPopPot = true; uiCtrlDispatcher.Dispatch(UICtrlMsg.SaveingPotUI_Open); PlayerPrefs.SetInt("pot_day", DateTime.Now.Day); } } if (!isPopPot) { var data = SaveData.GetRankData().rankRewardData; if (data.Count > 0 && !HallManager.Instance.isShowRankView) { HallManager.Instance.isShowRankView = true; uiCtrlDispatcher.Dispatch(UICtrlMsg.RankRewardUI_Open); } } } checkThreeGift(); ui.btn_failpack.SetClick(() => { float progress = showResurgence(); UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.ResurgenceUI_Open, progress); }); ui.btn_three_day.SetClick(() => { uiCtrlDispatcher.Dispatch(UICtrlMsg.ThreeDaysGiftUI_Open); }); ui.btn_battle.SetClick(() => { OnClickPass(); }); ui.btn_faq.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.FAQUI_Open); }); ui.btn_rank.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.RankUI_Open); }); ui.btn_restore.SetClick(() => { ApplePayManager.Instance.AppleRestore((success, message) => { if (success) { GameHelper.ShowTips("Restore Purchases Success!"); // SaveData.GetSaveObject().is_get_packreward = success; SaveData.GetSaveObject().have_slot = success; GameDispatcher.Instance.Dispatch(GameMsg.noads_refresh); } else { // Debug.Log("[barry] restore failed: " + success); GameHelper.ShowTips("There are no recoverable transactions"); } }); }); ui.btn_task.SetClick(() => { OnClickTask(false); }); ui.btn_start.SetClick(() => { if (GameHelper.IsGiftSwitch() && !SaveData.GetSaveObject().have_slot && (DateTime.Now.Day != PlayerPrefs.GetInt("off_new", 0))) { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.AddviewnewUI_Open); PlayerPrefs.SetInt("off_new", DateTime.Now.Day); } else if (GameHelper.IsGiftSwitch() && !SaveData.GetSaveObject().have_slot && UnityEngine.Random.Range(0, 100) < ConfigSystem.GetConfig().BonusInside) { uiCtrlDispatcher.Dispatch(UICtrlMsg.AddviewnewUI_Open); } else OnClickPlay(); }); ui.btn_setting.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PersonViewUI_Open); }); } private void OnClickTask(bool isLevel) { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.NewTaskUI_Open, isLevel); } private void InitBtn() { int level_ = GameHelper.GetLevel(); int start_level = 0; if (level_ >= 3) { start_level = level_ - 2; ui.com_level.state.selectedIndex = 2; } else { ui.com_level.state.selectedIndex = level_ - 1; start_level = 1; } for (int i = 0; i < 5; i++) { int lv = start_level + i; btn_play_list[i].text_level.text = lv.ToString(); if (lv < level_) { btn_play_list[i].state.selectedIndex = 2; } else if (lv == level_) { btn_play_list[i].state.selectedIndex = 1; btn_play_list[i].SetClick(() => { if (GameHelper.IsGiftSwitch() && !SaveData.GetSaveObject().have_slot && (DateTime.Now.Day != PlayerPrefs.GetInt("off_new", 0))) { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.AddviewnewUI_Open); PlayerPrefs.SetInt("off_new", DateTime.Now.Day); } else if (GameHelper.IsGiftSwitch() && !SaveData.GetSaveObject().have_slot && UnityEngine.Random.Range(0, 100) < ConfigSystem.GetConfig().BonusInside) { uiCtrlDispatcher.Dispatch(UICtrlMsg.AddviewnewUI_Open); } else OnClickPlay(); }); } else { btn_play_list[i].state.selectedIndex = 0; } } } void SetBtnAds(object a = null) { // if (SaveData.GetSaveObject().is_get_removead && SaveData.GetSaveObject().is_get_packreward) // { // btn_noads.visible = false; // } if (!SaveData.GetSaveObject().is_get_removead && !SaveData.GetSaveObject().is_get_packreward) { btn_noads.t0.Play(-1, 0, null); } else if (SaveData.GetSaveObject().is_get_removead && SaveData.GetSaveObject().is_get_packreward) { btn_noads.t0.Stop(); // btn_noads.visible = false; btn_noads.img_pack.visible = false; btn_noads.img_ad.visible = true; } else if (SaveData.GetSaveObject().is_get_packreward) { btn_noads.t0.Stop(); btn_noads.t1.Play(); //btn_noads.state.selectedIndex = 0; btn_noads.img_pack.visible = false; btn_noads.img_ad.visible = true; } else if (SaveData.GetSaveObject().is_get_removead) { btn_noads.t0.Stop(); btn_noads.t1.Play(); btn_noads.img_pack.visible = true; btn_noads.img_ad.visible = false; //btn_noads.state.selectedIndex = 1; } } private void RefreshRed(object isShow = null) { ui.btn_battle.GetChild("red").visible = SaveData.battlepassred(); ui.btn_task.GetChild("red").visible = SaveData.timetaskred() || SaveData.passtaskred() || SaveData.AdTaskred(); ui.btn_rank.GetChild("red").visible = SaveData.GetRankData().rankRewardData.Count > 0; } private bool signRed() { for (var i = 0; i < 7; i++) { var signDays = DataMgr.SignState.Value.Count; var isToday = false; if (signDays > 0) { isToday = GameHelper.InToday(DataMgr.SignState.Value[signDays - 1], 0, true); } if (i == signDays) { if (signDays > 0 && isToday) { continue; } else { // sk.SetActive(true); // sk.state.SetAnimation(0, "signin1_6", true); // btnSign.status.selectedIndex = btn_sign.State_today; return true; } } } return false; } private void checkThreeGift(object obj = null) { var isToday = GameHelper.InToday(SaveData.GetSaveObject().last_got_three_gift_time, 0, true); int three_gift_got_index = SaveData.GetSaveObject().three_gift_got_index; if (three_gift_got_index > (int)rewardState.day3) { ui.btn_three_day.visible = false; } else if (!isToday) { ui.btn_three_day.GetChild("red").visible = true; } else { ui.btn_three_day.GetChild("red").visible = false; } } float showResurgence() { string jsonFilePath = Path.Combine(Application.persistentDataPath, "RainData1.json"); string jsonstr = ""; if (File.Exists(jsonFilePath)) { jsonstr = File.ReadAllText(jsonFilePath); //return JsonUtility.FromJson(json); } List> card_item_list = JsonConvert.DeserializeObject>>(jsonstr); int surplus_item = 0; for (int i = 0; i < card_item_list.Count; i++) { for (int j = 0; j < card_item_list[i].Count; j++) { // if (card_item_list[i][j].sheep_card.IsDestroyed() || card_item_list[i][j].sheep_card == null) continue; surplus_item++; } } return 1 - (float)surplus_item / (SaveData.GetSaveObject().all_card_numbers * 3); } void UpdateEvent() { long t = SaveData.GetSaveObject().failed_pack_time; if (t > GameHelper.GetNowTime()) { ui.btn_failpack.visible = true; long time_ = t * 1000 - GameHelper.getNowTimeByMillisecond(); DateTime oldDate = new DateTime(1970, 1, 1); oldDate = oldDate.AddMilliseconds(time_); ui.btn_failpack.GetChild("lab_time").text = DateTimeManager.Instance.DateTimeToFFFString(oldDate); } else { ui.btn_failpack.visible = false; HallManager.Instance.UpdateEvent -= UpdateEvent; } } private void UpdataAvatar(object obj = null) { var head = ui.btn_head as btn_head; GameHelper.SetSelfAvatar(head.load_avatar); // if (btn_play_list.Count == 0) return; // for (int i = 0; i < btn_play_list.Count; i++) // { // var head1 = btn_play_list[i].btn_hall_head.btn_head as btn_head; // GameHelper.SetSelfAvatar(head1.load_avatar); // } ; } void reCreatPur(object a = null) { // PurchasingManager.Instance.startPay(); } private void OnClickLuckySpin() { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.WheelUI_Open); } private void OnClickTreasure() { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.SignInUI_Open); } private void OnClickShop() { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.BuygoldUI_Open); } private void OnClickSetting() { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.MenuUI_Open); } private void OnClickPass() { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassViewUI_Open); } private void OnClickPlay() { GameHelper.gameType = 0; GameDispatcher.Instance.Dispatch(GameMsg.OpenGame); } public void OnUpdate101(object obj = null) { Set101(); } public void OnUpdate102(object obj = null) { Set102(); } public void Set101(decimal coin = -1) { if (coin < 0) { coin = DataMgr.Coin.Value; } var btnCoin = ui.btn_gold as com_gold; btnCoin.text_gold.text = $"{coin:N0}"; } public void Set102() { decimal coin = DataMgr.Ticket.Value; com_money com_money = ui.btn_money as com_money; com_money.text_gold.text = coin.ToString("0.00"); com_money.SetClick(() => { var makeupTaskData = DataMgr.MakeupTaskHistory.Value.Last(); var vo = ConfigSystem.GetConfig().GetData(makeupTaskData.tableId); //DataMgr.Ticket.Value=99999; //makeupTaskData.videoCount = 50; if (vo == null) { return; } var leftCash = (double)Math.Max(vo.item_need - DataMgr.Coin.Value, 0); //com_box.text_more.SetVar("left", GameHelper.Get101Str((decimal)leftCash)).FlushVars(); // com_box.pb_num.max = vo.item_need; // com_box.pb_num.value = vo.item_need - leftCash; // pbTxt.text = // $"{GameHelper.Get101Str((decimal)(vo.item_need - leftCash))}/{GameHelper.Get101Str((decimal)com_box.pb_num.max)}"; GameHelper.showGameUI = false; uiCtrlDispatcher.Dispatch(UICtrlMsg.MakeupConfirmUI_Open, makeupTaskData); }); } private void OnChangeName(ChangeValue obj) { GameHelper.SetName(ui.text_name); } private void SetName(GTextField gTextField) { GameHelper.SetName(gTextField); } } }