using FairyGUI; using UI.Main; using UnityEngine; using System.Collections.Generic; using ET; using System.Linq; using Assets.Game.HotUpdate.Data; using System.Collections; namespace GFGGame { public class MainUIView : BaseView { private UI_MainUI _ui; private GameObject _sceneObject; private ValueBarController _valueBarController; private SwipeGesture swipeGesture; private const int swipeDistance = 100; private bool isOpen = false; private List _adIds = new List(); private Vector2 _startPos; private Vector2 _endPos; private GButton _btnGongGao; private GButton _btnHaoYou; private GButton _btnYouJian; private GButton _btnRenWu; private GButton _btnPengYouQuan; private GButton _btnJInShu; private GButton _btnTianGong; private GButton _btnLeague; private GButton _btnStore; private GButton _btnTuJian; private GButton _btnStudio; private GButton _btnField; private GButton _btnBag; private GButton _btnActivityDay7; private List _effectUIList = new List(); private UI_ButtonModle1[] _btns; private bool firstIn; //用于标记自动检测打开界面流程已执行完毕 private bool AutoShowCompleted; //用于分帧更新红点 private int redPointUpdateFrame = -1; public override void Dispose() { if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } // Clear Effect for (int i = 0; i < _effectUIList.Count; i++) { EffectUIPool.Recycle(_effectUIList[i]); } _effectUIList.Clear(); if (_sceneObject != null) { PrefabManager.Instance.Restore(_sceneObject); _sceneObject = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_MainUI.PACKAGE_NAME; _ui = UI_MainUI.Create(); viewCom = _ui.target; isfullScreen = true; isReturnView = true; _valueBarController = new ValueBarController(_ui.m_valueBar); _btnYouJian = _ui.m_btnYouJian; _btnGongGao = _ui.m_btnGongGao; _btnHaoYou = _ui.m_list.GetChild("btnHaoYou").asButton; _btnRenWu = _ui.m_list.GetChild("btnRenWu").asButton; _btnPengYouQuan = _ui.m_list.GetChild("btnPengYouQuan").asButton; _btnLeague = _ui.m_list.GetChild("btnLeague").asButton; _btnStore = _ui.m_list.GetChild("btnStore").asButton; _btnTianGong = _ui.m_list.GetChild("btnTianGong").asButton; _btnTuJian = _ui.m_list.GetChild("btnTuJian").asButton; _btnJInShu = _ui.m_list.GetChild("btnJInShu").asButton; _btnBag = _ui.m_list.GetChild("btnBag").asButton; _btnActivityDay7 = _ui.m_btnActivityDay7.target; _btnPengYouQuan.visible = false; _btnJInShu.visible = false; _btnTianGong.visible = false; _btns = new UI_ButtonModle1[] { _ui.m_btnHuanZhuang, _ui.m_btnZhaiXing, _ui.m_btnXiuFang, _ui.m_btnCiPai }; _ui.m_btnMain.target.onClick.Add(OnClickBtnMain); _ui.m_btnHuanZhuang.target.onClick.Add(OnClickBtnHuanZhuang); _ui.m_btnZhaiXing.target.onClick.Add(OnClickBtnZhaiXing); _ui.m_btnXiuFang.target.onClick.Add(OnClickBtnXiuFang); _ui.m_btnCiPai.target.onClick.Add(OnClickBtnCiPai); _ui.m_headBar.target.onClick.Add(OnClickHeadBar); _ui.m_btnDailyWelfare.target.onClick.Add(OnClickBtnDailyWelfare); _ui.m_btnActivityLuckyBox.target.onClick.Add(OnClickBtnActivityLuckyBox); _ui.m_btnWanShiLi.target.onClick.Add(OnClickBtnWanShiLi); _btnLeague.onClick.Add(OnClickBtnLeague); _btnStore.onClick.Add(OnClickBtnStore); _btnTuJian.onClick.Add(OnClickBtnTuJian); _btnYouJian.onClick.Add(OnClickBtnYouJian); _btnHaoYou.onClick.Add(OnClickBtnHaoYou); _btnGongGao.onClick.Add(OnClickBtnGongGao); _btnRenWu.onClick.Add(OnClickBtnRenWu); _ui.m_btnActivityAfuGift.target.onClick.Add(OnClickBtnAfuGift); _btnActivityDay7.onClick.Add(OnClickBtnDay7); _ui.m_btnFirstRecharge.target.onClick.Add(OnClickBtnFirstRecharge); _btnBag.onClick.Add(OnClickBtnBag); _ui.m_btnGiftBag1.target.onClick.Add(OnClickBtnGiftBag2); _ui.m_btnGiftBag2.target.onClick.Add(OnClickBtnGiftBag1); _ui.m_btnHaiZhiShi.target.onClick.Add(OnClickBtnInstanceZones); _ui.m_comListAd.m_listAd.itemRenderer = RenderListAdItem; _ui.m_comListAd.m_listAd.SetVirtualAndLoop(); _ui.m_comListAd.m_listAd.scrollPane.onScrollEnd.Add(OnListAdScrollEnd); _ui.m_comListAd.m_listAd.scrollPane.decelerationRate = 0.8f; _ui.m_list.ResizeToFit(); _ui.m_btnChange.target.onClick.Add(OnBtnChangClick); _ui.m_btnChange.m_c1.selectedIndex = 1; _ui.m_btnChange.target.selected = true; firstIn = true; } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, OnNumericChange); EventAgent.AddEventListener(ConstMessage.STORY_LEVEL_CHANGE, CheckFunOpen); EventAgent.AddEventListener(ConstMessage.RED_CHANGE, OnRedDotChanged); EventAgent.AddEventListener(ConstMessage.CHANGE_ROLE_HEAD, UpdateHead); EventAgent.AddEventListener(ConstMessage.RESET_DAILY_DATA, ResetDailyData); EventAgent.AddEventListener(ConstMessage.AFU_GIFT_CHANGED, ChangeAfuActivityState); EventAgent.AddEventListener(ConstMessage.VIEW_CLOSED, CheckAutoShowViews); EventAgent.AddEventListener(ConstMessage.AFTER_DATA_INITED, OnFaterDataInited); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, OnNumericChange); EventAgent.RemoveEventListener(ConstMessage.STORY_LEVEL_CHANGE, CheckFunOpen); EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, OnRedDotChanged); EventAgent.RemoveEventListener(ConstMessage.CHANGE_ROLE_HEAD, UpdateHead); EventAgent.RemoveEventListener(ConstMessage.AFU_GIFT_CHANGED, ChangeAfuActivityState); EventAgent.RemoveEventListener(ConstMessage.VIEW_CLOSED, CheckAutoShowViews); EventAgent.RemoveEventListener(ConstMessage.AFTER_DATA_INITED, OnFaterDataInited); } protected override void OnShown() { base.OnShown(); MainDataManager.Instance.CanSwipe = false; //GRoot.inst.touchable = false; //_ui.m_loaGuidestudio.visible = true; _ui.m_headBar.m_txtName.text = RoleDataManager.roleName; if (_sceneObject == null) { _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath("SceneMain")); } SceneController.UpdateMainScene(_sceneObject); UpdateRoleLvl(); UpdateHead(); _valueBarController.OnShown(); CheckFunOpen(); UpdateBtnFirstRecharge(); Timers.inst.Remove(Update); Timers.inst.Remove(CheckGuide); Timers.inst.AddUpdate(CheckGuide); Timers.inst.AddUpdate(Update); Update(null); //让主界面先显示出来,其他逐步处理 Timers.inst.Remove(OnShowLater); Timers.inst.Add(0.1f, 1, OnShowLater); // 先隐藏茶会提示 _ui.m_grpLeagueTips.visible = false; // 刚进游戏不播放主界面入场动画 if (firstIn) { firstIn = false; MainUIAnimFinished(); AddEffect(); } else { _ui.m_openViewAction.Play(MainUIAnimFinished); } //StorageSProxy.ReqSetClientValue(1012, 4).Coroutine(); } protected override void OnHide() { base.OnHide(); if (_sceneObject != null) { PrefabManager.Instance.Restore(_sceneObject); _sceneObject = null; } _valueBarController.OnHide(); Timers.inst.Remove(Update); Timers.inst.Remove(CheckGuide); Timers.inst.Remove(UpdateAdListTime); Timers.inst.Remove(OnShowLater); } private void OnShowLater(object param) { CheckProbabilityUp(); if(!GameGlobal.AfterDataInited) { GameController.AfterShowMainUI(); } else { OnFaterDataInited(); } } private void OnFaterDataInited() { GetAdIds(); OnRedDotChanged(); CheckAutoShowViews(); } private void AddEffect() { _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_btnMain.m_holder, "ui_zjm", "ZJM_szl_down_3")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_btnMain.m_holder1, "ui_zjm", "ZJM_szl_top_1")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_btnHaiZhiShi.m_holder, "ui_zjm", "ZJM_hzs_down_3")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_btnHaiZhiShi.m_holder1, "ui_zjm", "ZJM_hzs_top_1")); _effectUIList.Add(EffectUIPool.CreateEffectUI(_ui.m_BottomEffectHolder, "ui_zjm", "ZJM_DiBan")); } private void OnClickBtnInstanceZones() { TryCompleteGuide(); ViewManager.Show(); } private void OnBtnChangClick() { int count = 0; for (int i = 0; i < _ui.m_list.numItems; i++) { if (_ui.m_list.GetChildAt(i).visible == true) count++; } int oneItemHeight = 97 + _ui.m_list.lineGap; float height = count * oneItemHeight; if (_ui.m_btnChange.target.selected == true) { _ui.m_btnChange.m_c1.selectedIndex = 1; GTween.To(_ui.m_list.height, height, 0.4f).SetTarget(_ui.m_list) .OnUpdate((GTweener t) => { _ui.m_list.height = t.value.x; }).SetEase(EaseType.QuintInOut); } else { _ui.m_btnChange.m_c1.selectedIndex = 0; GTween.To(_ui.m_list.height, oneItemHeight, 0.4f).SetTarget(_ui.m_list) .OnUpdate((GTweener t) => { _ui.m_list.height = t.value.x; }).SetEase(EaseType.QuintInOut); } } private void OnClickBtnMain() { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.CHUN_ZHONG_LOU, 1); if (isOpen) return; isOpen = true; List _chapterCfgs = StoryChapterCfgArray.Instance.GetCfgsBysubType(0); for (int i = 0; i < _chapterCfgs.Count; i++) { StoryChapterCfg chapterCfg = _chapterCfgs[i]; if (i == _chapterCfgs.Count - 1 && MainStoryDataManager.CheckChapterUnlock(chapterCfg.id)) { ViewManager.Show(new object[] { chapterCfg.id, 0 }); isOpen = false; return; } else if (!MainStoryDataManager.CheckChapterUnlock(chapterCfg.id)) { StoryChapterCfg chapterTowCfg = _chapterCfgs[Mathf.Max(0, i - 1)]; var list = StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(chapterTowCfg.type, chapterTowCfg.subType, chapterTowCfg.id); StoryLevelCfg lastLevelCfg = list[list.Count - 1]; if (lastLevelCfg != null && MainStoryDataManager.CheckLevelUnlock(lastLevelCfg.id)) { ViewManager.Show(new object[] { 0 ,Mathf.Max(0, chapterCfg.order - 1 )}); isOpen = false; return; } ViewManager.Show(new object[] { chapterCfg.id - 1, 0 }); isOpen = false; return; } } } private void OnClickBtnHuanZhuang() { if (isOpen) return; isOpen = true; _ui.m_btnHuanZhuang.m_holder1.visible = true; _ui.m_btnHuanZhuang.m_holder1.visible = false; this.Hide(); ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); isOpen = false; } private void OnClickBtnZhaiXing() { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.ZAI_XING, 1); if (isOpen) return; isOpen = true; _ui.m_btnZhaiXing.m_holder1.visible = false; ViewManager.Show(null, null, false, true); isOpen = false; } private void OnClickBtnXiuFang() { if (isOpen) return; isOpen = true; _ui.m_btnXiuFang.m_holder1.visible = true; _ui.m_btnXiuFang.m_holder1.visible = false; ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); isOpen = false; } private void OnClickBtnDailyLogin() { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_DNEG_LU, 1); ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnDailyWelfare() { ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnActivityLuckyBox() { ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }, true); } private void OnClickBtnWanShiLi() { ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnCiPai() { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.CI_PAI, 1); if (isOpen) return; isOpen = true; _ui.m_btnCiPai.m_holder1.visible = true; _ui.m_btnCiPai.m_holder1.visible = false; CardDataManager.isFilter = false; ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); isOpen = false; } private void OnClickBtnBag() { ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnLeague() { // LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.SHANG_CHENG, 1); if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(LeagueView).Name)) return; // if (LeagueDataManager.Instance.Type == 0) // { // PromptController.Instance.ShowFloatTextPrompt("数据来的有点慢,稍后再试下吧"); // return; // } if (LeagueDataManager.Instance.Type == LeagueJoinType.Join) //已加入联盟 { ViewManager.Show(); } else //未加入联盟 { ViewManager.Show(); } } private void OnClickBtnStore() { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.SHANG_CHENG, 1); ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnTuJian() { LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.TU_JIAN, 1); ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnYouJian() { ViewManager.Show(); } private void OnClickBtnHaoYou() { ViewManager.Show(null, new object[] { typeof(MainUIView).FullName, this.viewData }, true); } private void OnClickBtnGongGao() { ViewManager.Show(); } private void OnClickBtnRenWu() { ViewManager.Show(null, new[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnAfuGift() { if (!ActivityAfuGiftDataManager.Instance.IsOpen) { return; } ViewManager.Show(null, new[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnDay7() { ViewManager.Show(null, new[] { typeof(MainUIView).FullName, this.viewData }); } private void OnClickBtnFirstRecharge() { ViewManager.Show(); } private void OnClickHeadBar() { ViewManager.Show(); } //列表 private void OnClickBtnGiftBag1() { var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1); var list = activityInfoByTypeList .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList(); if (list.Count == 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); } else { ViewManager.Show(); } } //圆形 private void OnClickBtnGiftBag2() { var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB2); var list = activityInfoByTypeList .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList(); if (list.Count == 0) { PromptController.Instance.ShowFloatTextPrompt("活动已结束"); } else { ViewManager.Show(new object[] { ActivityType.XSLB2, this.viewData }); } } //列表样式 private void UpGiftBox1() { var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1); var list = activityInfoByTypeList .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList(); if (list.Count == 0) { _ui.m_btnGiftBag2.target.visible = false; } else { bool isSoldOut = true; foreach (var activityInfo in list) { ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId); var paramsArr = activityOpenCfg.paramsArr; foreach (var shopCfgId in paramsArr) { var shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId); var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId); //只要有一个商品还能购买,就不是售罄 if (remainBuyNum > 0) { isSoldOut = false; break; } } } if (isSoldOut) { _ui.m_btnGiftBag2.target.visible = false; } else { _ui.m_btnGiftBag2.m_txtTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime); _ui.m_btnGiftBag2.target.visible = true; } } } //圆形样式 private void UpGiftBox2() { var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB2); var list = activityInfoByTypeList .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList(); if (list.Count == 0) { _ui.m_btnGiftBag1.target.visible = false; } else { bool isSoldOut = true; foreach (var activityInfo in list) { ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId); var paramsArr = activityOpenCfg.paramsArr; foreach (var shopCfgId in paramsArr) { var shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId); var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId); //只要有一个商品还能购买,就不是售罄 if (remainBuyNum > 0) { isSoldOut = false; break; } } } if (isSoldOut) { _ui.m_btnGiftBag1.target.visible = false; } else { _ui.m_btnGiftBag1.m_txtTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime); _ui.m_btnGiftBag1.target.visible = true; } } } private void Update(object param) { ShowExitAlert(); UpdateActLuckyBox(); UpdateLimitedActvityState(); UpdateTime(); //特惠礼包/限时礼包窗口内的倒计时 UpGiftBox1(); UpGiftBox2(); EventAgent.DispatchEvent(ConstMessage.LUCKY_BOX_TIME); UpdateRedDot(); } private void UpdateActLuckyBox() { int actLuckyBoxId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitLuckyBox); _ui.m_btnActivityLuckyBox.target.visible = actLuckyBoxId > 0; if (actLuckyBoxId > 0) { if (actLuckyBoxId != ActivityDataManager.Instance.lastActLuckyBoxId) { ActivitySProxy.ReqGetTimeLimitLuckyBoxInfo(actLuckyBoxId).Coroutine(); ActivityDataManager.Instance.lastActLuckyBoxId = actLuckyBoxId; } ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(actLuckyBoxId); _ui.m_btnActivityLuckyBox.target.title = activityOpenCfg.themeName; _ui.m_btnActivityLuckyBox.target.icon = "ui://Main/zjm_tb_" + activityOpenCfg.res; long time = TimeUtil.DateTimeToTimestamp(activityOpenCfg.endTime) - TimeHelper.ServerNow(); _ui.m_btnActivityLuckyBox.m_txtTime.text = time > TimeUtil.SECOND_PER_DAY * 1000 ? TimeUtil.FormattingTimeTo_DDHHmm(time) : TimeUtil.FormattingTimeTo_HHmmss(time); } } private void UpdateLimitedActvityState() { int actLimitTsyId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitTsy); if (actLimitTsyId > 0) { if (actLimitTsyId != ActivityDataManager.Instance.lastActLimitTsyId) { ActivitySProxy.ReqGetTimeLimitLuckyBoxInfo(actLimitTsyId).Coroutine(); ActivityDataManager.Instance.lastActLimitTsyId = actLimitTsyId; } } List actListChargeIds = ActivityGlobalDataManager.Instance.GetActivityInfoIdsByType(ConstLimitTimeActivityType.ActLimitChargeId); int actLimitChargeId = actListChargeIds.Count > 0 ? actListChargeIds[0] : 0; if (ActivityDataManager.Instance.lastActLimitChargeId != actLimitChargeId) { ActivityDataManager.Instance.actLimitChargeId = actLimitChargeId; _ui.m_btnDailyWelfare.target.visible = actLimitChargeId > 0 || FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(DailyWelfareView).Name, false) && ( FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(DailySignView).Name, false) || FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(DailySupplyView).Name, false) || !(!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(SevenDayLoginView).Name, false) || ActivityDataManager.Instance.AllSevenDayBonusGot())); } _ui.m_btnActivityDay7.target.visible = ActivityDay7DataManager.Instance.CheckOpen(); _ui.m_btnWanShiLi.target.visible = ActivityWanShiLiDataManager.Instance.CheckOpen(); } private void UpdateTime() { if (_ui.m_btnActivityDay7.target.visible) { long time = ActivityDay7DataManager.Instance.GetEndTime() - TimeHelper.ServerNow(); _ui.m_btnActivityDay7.m_txtTime.text = time > TimeUtil.SECOND_PER_DAY * 1000 ? TimeUtil.FormattingTimeTo_DDHHmm(time) : TimeUtil.FormattingTimeTo_HHmmss(time); } if (_ui.m_btnWanShiLi.target.visible) { long time = ActivityWanShiLiDataManager.Instance.GetEndTime() - TimeHelper.ServerNow(); _ui.m_btnWanShiLi.m_txtTime.text = time > TimeUtil.SECOND_PER_DAY * 1000 ? TimeUtil.FormattingTimeTo_DDHHmm(time) : TimeUtil.FormattingTimeTo_HHmmss(time); } if (_ui.m_btnActivityAfuGift.target.visible) { var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.AFZL); if (activityInfo == null) { _ui.m_btnActivityAfuGift.target.visible = false; } else { long time = activityInfo.EndTime - TimeHelper.ServerNow(); _ui.m_btnActivityAfuGift.m_txtTime.text = time > TimeUtil.SECOND_PER_DAY * 1000 ? TimeUtil.FormattingTimeTo_DDHHmm(time) : TimeUtil.FormattingTimeTo_HHmmss(time); } } } private void ShowExitAlert() { if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home)) { AlertSystem.Show("我会想你的") .SetLeftButton(true, "继续游戏") .SetRightButton(true, "退出游戏", (object data) => { Application.Quit(); }); } } private void OnNumericChange(EventContext context) { var numericType = (int)context.data; if (numericType == NumericType.Lvl) { UpdateRoleLvl(); CheckFunOpen(); } if (numericType == NumericType.FirstRechargeBonusStatus || numericType == NumericType.FirstRechargeTotal) { UpdateBtnFirstRecharge(); } } private void UpdateBtnFirstRecharge() { _ui.m_btnFirstRecharge.target.visible = ActivityDataManager.Instance.firstChargeBonusStatus != ConstBonusStatus.GOT; if (_ui.m_btnFirstRecharge.target.visible) { bool canget = ActivityDataManager.Instance.firstChargeBonusStatus == ConstBonusStatus.CAN_GET; RedDotController.Instance.SetComRedDot(_ui.m_btnFirstRecharge.target, canget, "", -10, 10); } } private void UpdateRoleLvl() { _ui.m_headBar.m_txtLvl.text = "" + GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl); } private void UpdateHead() { RoleInfoManager.Instance.UpdateHead(_ui.m_headBar.m_comHead, RoleDataManager.headId, RoleDataManager.headBorderId); } /// /// 获取当前开启的滚动广告列表 /// private void GetAdIds() { _adIds.Clear(); for (int i = 0; i < AdCfgArray.Instance.dataArray.Length; i++) { AdCfg adCfg = AdCfgArray.Instance.dataArray[i]; if (adCfg.activityId > 0) { if (ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId) == null) continue; ActivityInfo activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(adCfg.activityId); if (TimeHelper.ServerNow() < activityInfo.StartTime || TimeHelper.ServerNow() > activityInfo.EndTime) continue; } if (!string.IsNullOrEmpty(adCfg.startTime) && !string.IsNullOrEmpty(adCfg.endTime)) { long startTime = TimeUtil.DateTimeToTimestamp(adCfg.startTime); long endTime = TimeUtil.DateTimeToTimestamp(adCfg.endTime); if (TimeHelper.ServerNow() < startTime || TimeHelper.ServerNow() > endTime) continue; } _adIds.Add(adCfg); } _ui.m_comListAd.m_listAd.numItems = _adIds.Count; _ui.m_comListAd.m_listAdSelect.numItems = _adIds.Count; if (_ui.m_comListAd.m_listAd.numItems > 0) { _ui.m_comListAd.m_listAd.ScrollToView(0); _ui.m_comListAd.m_listAdSelect.selectedIndex = 0; } _ui.m_comListAd.target.visible = _ui.m_comListAd.m_listAd.numItems > 0; if (_ui.m_comListAd.target.visible) { Timers.inst.Remove(UpdateAdListTime); Timers.inst.Add(3, 0, UpdateAdListTime); } } private void UpdateAdListTime(object param) { int itemIndex = _ui.m_comListAd.m_listAd.ChildIndexToItemIndex(0) + 1; itemIndex = itemIndex == _ui.m_comListAd.m_listAd.numItems ? 0 : itemIndex; _ui.m_comListAd.m_listAdSelect.selectedIndex = itemIndex; _ui.m_comListAd.m_listAd.scrollPane.ScrollRight(0.8f, true); CheckProbabilityUp(); } private void RenderListAdItem(int index, GObject obj) { UI_ListAdItem item = UI_ListAdItem.Proxy(obj); item.m_loaRes.url = "ui://Main/guanggao_" + _adIds[index].res; if (item.m_loaRes.data == null) { item.m_loaRes.onClick.Add(OnBtnAdJump); } item.m_loaRes.data = _adIds[index]; UI_ListAdItem.ProxyEnd(); } private void OnBtnAdJump(EventContext context) { GObject obj = context.sender as GObject; AdCfg adCfg = obj.data as AdCfg; object[] param = null; int jumpIndex = 0; if (adCfg.jumpId == nameof(LimitChargeView)) { param = new object[] { adCfg.activityId }; } if (adCfg.jumpId == nameof(NewLimitChargeView)) { param = new object[] { adCfg.activityId }; } if (adCfg.jumpId == nameof(LuckyBoxView)) { jumpIndex = adCfg.jumpParamArr[0]; } if (jumpIndex != 0) ViewManager.Show($"GFGGame.{adCfg.jumpId}", jumpIndex); else ViewManager.Show($"GFGGame.{adCfg.jumpId}", param); } private void OnListAdScrollEnd() { int itemIndex = _ui.m_comListAd.m_listAd.ChildIndexToItemIndex(0); _ui.m_comListAd.m_listAdSelect.selectedIndex = itemIndex; } private void CheckFunOpen() { _ui.m_btnGiftBag1.target.visible = false; _ui.m_btnGiftBag2.target.visible = false; _ui.m_btnXiuFang.m_loaLockIcons.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(XiuFangView).Name, false); _ui.m_btnHuanZhuang.m_loaLockIcons.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(DressUpView).Name, false); _ui.m_btnCiPai.m_loaLockIcons.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(CardDetailView).Name, false); _ui.m_btnZhaiXing.m_loaLockIcons.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(LuckyBoxView).Name, false); _ui.m_btnMain.m_loaLockIcons.visible = !FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StoryChapterListView).Name, false); _ui.m_btnActivityLuckyBox.target.visible = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitLuckyBox) > 0; List actListChargeIds = ActivityGlobalDataManager.Instance.GetActivityInfoIdsByType(ConstLimitTimeActivityType.ActLimitChargeId); int actLimitChargeId = actListChargeIds.Count > 0 ? actListChargeIds[0] : 0; _ui.m_btnDailyWelfare.target.visible = actLimitChargeId > 0 || FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(DailyWelfareView).Name, false) && ( FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(DailySignView).Name, false) || FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(DailySupplyView).Name, false) || !(!FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(SevenDayLoginView).Name, false) || ActivityDataManager.Instance.AllSevenDayBonusGot())); _btnGongGao.visible = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(NoticeView).Name, false); _btnHaoYou.visible = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(FriendView).Name, false); _btnYouJian.visible = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(MailView).Name, false); _btnLeague.visible = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(LeagueView).Name, false); _btnStore.visible = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(StoreView).Name, false); _btnTuJian.visible = FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(FieldGuideView).Name, false); _btnActivityDay7.visible = ActivityDay7DataManager.Instance.CheckOpen(); _ui.m_btnActivityAfuGift.target.visible = ActivityAfuGiftDataManager.Instance.CheckIconShow(); _ui.m_list.ResizeToFit(); } private void OnRedDotChanged() { LogUtil.LogEditor($"MainUIView OnRedDotChanged GameGlobal.AfterDataInited {GameGlobal.AfterDataInited} AutoShowCompleted {AutoShowCompleted}"); //暂时用这种方法优化下,红点的实现要重构!!! //LogUtil.LogEditor("MainUIView UpdateRedDot OnRedDotChanged"); redPointUpdateFrame = 0; } private void UpdateRedDot() { if (redPointUpdateFrame < 0) return; if (!GameGlobal.AfterDataInited) return; if (!AutoShowCompleted) return; if (!ViewManager.CheckIsTopView(this.viewCom)) return; LogUtil.LogEditor($"MainUIView UpdateRedDot redPointUpdateFrame {redPointUpdateFrame}"); if (redPointUpdateFrame == 0) _valueBarController.UpdateRedPoint(); if (redPointUpdateFrame == 1) RedDotController.Instance.SetComRedDot(_btnGongGao, RedDotDataManager.Instance.GetNoticeRed(), "", -9, 12); if (redPointUpdateFrame == 2) RedDotController.Instance.SetComRedDot(_btnRenWu, RedDotDataManager.Instance.GetTaskRed(), "", -8); if (redPointUpdateFrame == 3) RedDotController.Instance.SetComRedDot(_btnYouJian, RedDotDataManager.Instance.GetMailRed(), "", -9, 12); if (redPointUpdateFrame == 4) RedDotController.Instance.SetComRedDot(_btnTuJian, RedDotDataManager.Instance.GetFieldGuideRed() || RedDotDataManager.Instance.GetTravelGuideRed(), "", -8); if (redPointUpdateFrame == 5) RedDotController.Instance.SetComRedDot(_btnHaoYou, RedDotDataManager.Instance.GetFriendRed(), "", -8); if (redPointUpdateFrame == 6) RedDotController.Instance.SetComRedDot(_btnStore, RedDotDataManager.Instance.GetShopRed(), "", -8); if (redPointUpdateFrame == 7) RedDotController.Instance.SetComRedDot(_ui.m_headBar.m_comHead, RedDotDataManager.Instance.GetHeadRed() || RedDotDataManager.Instance.GetHeadBorderRed(), "", -26, 42); if (redPointUpdateFrame == 8) RedDotController.Instance.SetComRedDot(_btnLeague, RedDotDataManager.Instance.GetLeagueRed(), "", -8); if (redPointUpdateFrame == 9) RedDotController.Instance.SetComRedDot(_ui.m_btnDailyWelfare.target, RedDotDataManager.Instance.GetDailyWelfareRed(), "", 9, -1); if (redPointUpdateFrame == 10) RedDotController.Instance.SetComRedDot(_ui.m_btnActivityLuckyBox.target, RedDotDataManager.Instance.GetMeiRiTeHuiRed() || RedDotDataManager.Instance.GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitLuckyBox) || RedDotDataManager.Instance.GetActLuckyBoxTaskdRed() || RedDotDataManager.Instance.GetGiftBagRewardRed(), "", -11, 5); if (redPointUpdateFrame == 11) RedDotController.Instance.SetComRedDot(_btnBag, RedDotDataManager.Instance.GetMainBagGiftRed(), "", -8); if (redPointUpdateFrame == 12) RedDotController.Instance.SetComRedDot(_ui.m_btnActivityDay7.target, RedDotDataManager.Instance.GetActivityDay7Red()); RedDotController.Instance.SetComRedDot(_ui.m_btnWanShiLi.target, RedDotDataManager.Instance.GetActivityWanShiLiRed(), "", -25, -7); if (redPointUpdateFrame == 13) RedDotController.Instance.SetComRedDot(_ui.m_btnXiuFang.target, RedDotDataManager.Instance.GetClothingFosterRed() || RedDotDataManager.Instance.GetClothingSyntheticRed(), "", -10, 20); if (redPointUpdateFrame == 14) RedDotController.Instance.SetComRedDot(_ui.m_btnCiPai.target, RedDotDataManager.Instance.GetCardRed(), "", -10, 20); if (redPointUpdateFrame == 15) RedDotController.Instance.SetComRedDot(_ui.m_btnZhaiXing.target, RedDotDataManager.Instance.GetActLuckyBoxRewardRed(ConstLimitTimeActivityType.ActLimitTsy) || RedDotDataManager.Instance.GetLuckyBoxFreeTimes()); // 阿福赠礼 if (_ui.m_btnActivityAfuGift.target.visible) { if (redPointUpdateFrame == 16) RedDotController.Instance.SetComRedDot(_ui.m_btnActivityAfuGift.target, ActivityAfuGiftDataManager.Instance.HaveCanGetReward(), "", -43, 2); } redPointUpdateFrame++; if(redPointUpdateFrame > 16) { redPointUpdateFrame = -1; } } private void CheckProbabilityUp() { int activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ConstLimitTimeActivityType.ActLimitTsy); if (activityId > 0) _ui.m_btnZhaiXing.m_ProbabilityUpType.selectedIndex = 1; else _ui.m_btnZhaiXing.m_ProbabilityUpType.selectedIndex = 0; } private void CheckGuide(object param) { MainDataManager.Instance.CanSwipe = true; GRoot.inst.touchable = true; if (GuideDataManager.IsGuideFinish(ConstGuideId.FREEDOM_DRESS) <= 0 //|| GuideDataManager.IsGuideFinish(ConstGuideId.CLOTHING_DECOMPOSE) <= 0 //|| GuideDataManager.IsGuideFinish(ConstGuideId.CLOTHING_SYNTHETIC) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.UP_CARD_LV) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_FILING) <= 0 //|| GuideDataManager.IsGuideFinish(ConstGuideId.FIELD) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_PORCELAIN) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER_1) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER_2) <= 0 //|| GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER_3) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER_4) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.UP_CARD_STAR) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.ENTER_CHAPTER_5) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.STUDIO_PROPERTY) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.ARENA_OPEN) <= 0 || GuideDataManager.IsGuideFinish(ConstGuideId.SUIT_LIST_VIEW) <= 0) { UpdateToCheckGuide(null); } else { _ui.m_loaGuidestudio.visible = false; Timers.inst.Remove(CheckGuide); } } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_btnHuanZhuang.target, ConstGuideId.FREEDOM_DRESS, 2, "在这里,自由搭配服饰和分享哦~", -1, false); GuideController.TryGuide(_ui.m_btnMain.target, ConstGuideId.ENTER_CHAPTER, 3, "海市蜃楼,镜花水月,是所有故事开始的地方。", -1, false); //GuideController.TryGuide(_ui.m_btnXiuFang.target, ConstGuideId.CLOTHING_DECOMPOSE, 2, "绣坊里增添了新功能。", -1, false); //GuideController.TryGuide(_ui.m_btnXiuFang.target, ConstGuideId.CLOTHING_SYNTHETIC, 1, "进入绣坊界面。", -1, false); //GuideController.TryCompleteGuide(ConstGuideId.CLOTHING_SYNTHETIC, 7); GuideController.TryGuide(_ui.m_btnCiPai.target, ConstGuideId.UP_CARD_LV, 2, "“词牌”可进行升级和管理。", -1, false); GuideController.TryGuide(_ui.m_btnMain.target, ConstGuideId.ENTER_CHAPTER_1, 2, "", -1, false); GuideController.TryGuide(_ui.m_btnMain.target, ConstGuideId.ENTER_CHAPTER_2, 2, "", -1, false); //GuideController.TryGuide(_ui.m_btnMain.target, ConstGuideId.ENTER_CHAPTER_3, 1, "", -1, false); GuideController.TryGuide(_ui.m_btnMain.target, ConstGuideId.ENTER_CHAPTER_4, 1, "", -1, false); GuideController.TryGuide(_ui.m_btnCiPai.target, ConstGuideId.UP_CARD_STAR, 2, "“词牌”可进行升星。", -1, false); GuideController.TryGuide(_ui.m_btnMain.target, ConstGuideId.ENTER_CHAPTER_5, 2, "", -1, false); GuideController.TryGuide(_ui.m_btnXiuFang.target, ConstGuideId.SUIT_LIST_VIEW, 1, "获得“天衣”服饰后,可进行养护和焕新,到绣坊看看。", -1, false); GuideController.TryGuide(_ui.m_btnHaiZhiShi.target, ConstGuideId.ARENA_OPEN, 2, "新玩法-飞花令开启了哦", -1, false); bool isStudioMetalGuide = GuideController.TryGuide(_ui.m_btnHaiZhiShi.target, ConstGuideId.STUDIO_PORCELAIN, 2, "进入副本", -1, false, _ui.target.height - 700); bool isStudioFilingGuide = GuideController.TryGuide(_ui.m_btnHaiZhiShi.target, ConstGuideId.STUDIO_FILING, 2, "进入副本", -1, false, _ui.target.height - 700); //bool isFieldGuide = GuideController.TryGuide(_ui.m_btnHaiZhiShi.target, ConstGuideId.FIELD, 1, "进入副本", -1, false, _ui.target.height - 700); bool isStudioPropertyGuide = GuideController.TryGuide(_ui.m_btnHaiZhiShi.target, ConstGuideId.STUDIO_PROPERTY, 1, "进入副本", -1, false, _ui.target.height - 700); _ui.m_loaGuidestudio.visible = false; // if (isStudioMetalGuide || isStudioFilingGuide || isFieldGuide || isStudioPropertyGuide) // { // _ui.m_loaGuidestudio.visible = true; // MainDataManager.Instance.CanSwipe = true; // } // else // { // _ui.m_loaGuidestudio.visible = false; // } } private void MainUIAnimFinished() { _ui.m_grpLeagueTips.visible = _btnLeague.visible && LeagueDataManager.Instance.CheckLeagueMainTips() != ""; if (_ui.m_grpLeagueTips.visible) { _ui.m_grpLeaguetext.text = LeagueDataManager.Instance.CheckLeagueMainTips(); Vector2 pos = _ui.m_list.TransformPoint(_btnLeague.position, _ui.target); _ui.m_grpLeagueTips.SetPosition(pos.x - _ui.m_grpLeagueTips.width + 20, pos.y + 20, 0); } } private void ChangeAfuActivityState() { _ui.m_btnActivityAfuGift.target.visible = ActivityAfuGiftDataManager.Instance.IsOpen; } private void ResetDailyData() { CheckFunOpen(); OnRedDotChanged(); UpdateHead(); UpdateBtnFirstRecharge(); CheckAutoShowViews(); } private void CheckAutoShowViews() { if (AutoShowCompleted) return; if (!GameGlobal.AfterDataInited) return; if (!ViewManager.CheckIsTopView(this.viewCom)) return; //if (!TimeUtil.CheckIsSameTime(lastTime * 1000, TimeHelper.ClientNow())) if (GameGlobal.AutoSevenDayLoginView) { if (ActivityDataManager.Instance.CanGetSevenDayBonus() && GuideDataManager.currentGuideId <= 0) { ViewManager.Show(); return; } //GameGlobal.lastLoginTime = GameGlobal.myNumericComponent.GetAsInt(NumericType.OnlineTimeSecs); } if (GameGlobal.AutoDailySignView) { if (RedDotDataManager.Instance.DailySignGot()) { ViewManager.Show(new object[] { 1 }); return; } } if (FieldDataManager.Instance.waitToShowFieldFightEndView) { ViewManager.Show(); return; } AutoShowCompleted = true; } } }