using FairyGUI; using UI.LuckyBox; using UI.CommonGame; using System; using System.Collections.Generic; using UnityEngine; using ET; namespace GFGGame { public class LuckyBoxView : BaseWindow { private UI_LuckyBoxUI _ui; private ValueBarController _valueBarController; private GameObject _gameObject; private GoWrapper _wrapper; private GameObject _gameObject1; private GoWrapper _wrapper1; private GameObject _gameObject2; private GoWrapper _wrapper2; private GameObject _gameObject3; private GoWrapper _wrapper3; private bool isActiveBoxOpen = false; public override void Dispose() { _valueBarController.Dispose(); _valueBarController = null; base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_LuckyBoxUI.PACKAGE_NAME; _ui = UI_LuckyBoxUI.Create(); this.viewCom = _ui.target; isfullScreen = true; _ui.m_txtRemainTimes.visible = false; _valueBarController = new ValueBarController(_ui.m_valueBar); _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_btnHome.onClick.Add(OnClickBtnHome); _ui.m_btnBuyOne.target.onClick.Add(OnClickBtnBuyOne); _ui.m_btnBuyTen.target.onClick.Add(OnClickBtnBuyTen); _ui.m_btnPreview.onClick.Add(OnClickBtnPreview); _ui.m_btnExchange.onClick.Add(OnClickBtnExChange); _ui.m_btnLeft.onClick.Add(() => { onClickChange(-1); }); _ui.m_btnRight.onClick.Add(() => { onClickChange(1); }); _ui.m_listBg.itemRenderer = RenderListBgItem; _ui.m_c1.onChanged.Add(OnListBgScroll);//分页控制器 // Reset();//初始默认值 } protected override void OnShown() { base.OnShown(); EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateNormal); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateNormal); int boxId = LuckyBoxDataManager.Instance.luckyBoxIds[0]; if (this.viewData != null) { object[] datas = (this.viewData as object[]); if (datas != null && datas.Length > 1) { boxId = (int)datas[1]; } else { boxId = (int)this.viewData; } } LuckyBoxBonusDataCache.currentBoxId = boxId; isActiveBoxOpen = Array.IndexOf(LuckyBoxDataManager.Instance.luckyBoxIds, LuckyBoxDataManager.BOX_ID_1) >= 0; _ui.m_listBg.numItems = LuckyBoxDataManager.Instance.luckyBoxIds.Length; _ui.m_listBg.ScrollToView(Array.IndexOf(LuckyBoxDataManager.Instance.luckyBoxIds, LuckyBoxBonusDataCache.currentBoxId)); _ui.m_listBg.scrollPane.decelerationRate = 0.8f; Timers.inst.Add(1, 0, CheckTime); _valueBarController.OnShown(); _valueBarController.Controller(4); onClickChange(0); updateActiveBox(); } private void RenderListBgItem(int index, GObject obj) { UI_ComListBgItem item = UI_ComListBgItem.Proxy(obj); LuckyBoxCfg cfg = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxDataManager.Instance.luckyBoxIds[index]); item.m_loaBg.url = string.Format("ui://LuckyBox/{0}", cfg.res); } private void CheckTime(object param = null) { // int index = Array.IndexOf(LuckyBoxDataManager.Instance.luckyBoxIds, LuckyBoxDataManager.BOX_ID_1); if (!isActiveBoxOpen) { //活动未开启 LuckyBoxBonusDataCache.currentBoxId = LuckyBoxDataManager.Instance.luckyBoxIds[0]; Timers.inst.Remove(CheckTime); return; } int endTime = LuckyBoxDataManager.Instance.endTime; int curTime = TimeHelper.ServerNowSecs; UI_ComListBgItem.Proxy(_ui.m_listBg.GetChildAt(0)).m_txtTime.text = string.Format("剩余\n{0}", TimeUtil.FormattingTime(curTime, endTime)); } private void OnListBgScroll() { // if (_ui.m_c1.selectedIndex == -1 || _ui.m_listBg.numChildren <= 0) return; UI_ComListBgItem item = UI_ComListBgItem.Proxy(_ui.m_listBg.GetChildAt(_ui.m_c1.selectedIndex)); LuckyBoxBonusDataCache.currentBoxId = LuckyBoxDataManager.Instance.luckyBoxIds[_ui.m_c1.selectedIndex]; item.m_txtTime.visible = LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1; item.m_imgTitle.visible = LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1; item.m_loaImg.visible = LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_3; item.m_holder.visible = isActiveBoxOpen && LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1; item.m_holder1.visible = isActiveBoxOpen && LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1; onClickChange(0); UpdateNormal(); } private void UpdateNormal() { LuckyBoxCfg luckyBoxCfg = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxBonusDataCache.currentBoxId); _valueBarController.UpdateCJ(LuckyBoxBonusDataCache.currentBoxId); _ui.m_comCostOne.m_txtCost.text = luckyBoxCfg.costNum.ToString(); _ui.m_comCostTen.m_txtCost.text = luckyBoxCfg.costNumTen.ToString(); _ui.m_comCostOne.m_loaCost.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(luckyBoxCfg.costID).res); _ui.m_comCostTen.m_loaCost.url = ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(luckyBoxCfg.costID).res); int count = LuckyBoxBonusDataCache.GetOwnedCount(); _ui.m_txtOwned.SetVar("v1", "" + count).FlushVars(); } private void onClickChange(int count) { _ui.m_c1.selectedIndex = _ui.m_c1.selectedIndex + count; _ui.m_imgSpecial.visible = LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1; _ui.m_btnRight.visible = _ui.m_c1.selectedIndex != _ui.m_listBg.numItems - 1; _ui.m_btnLeft.visible = _ui.m_c1.selectedIndex != 0; _ui.m_btnBuyOne.m_holder.visible = LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1; _ui.m_btnBuyTen.m_holder.visible = LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1; } private void updateActiveBox() { if (isActiveBoxOpen) { int index = Array.IndexOf(LuckyBoxDataManager.Instance.luckyBoxIds, LuckyBoxDataManager.BOX_ID_1); UI_ComListBgItem item = UI_ComListBgItem.Proxy(_ui.m_listBg.GetChildAt(index)); string resPath = ResPathUtil.GetViewEffectPath("ui_cj", "ui_cj_bt"); SceneController.AddObjectToView(_gameObject, _wrapper, item.m_holder, resPath, out _gameObject, out _wrapper); string resPath3 = ResPathUtil.GetDressUpAnimationPath("dz_jiyuet"); SceneController.AddObjectToView(_gameObject3, _wrapper3, item.m_holder1, resPath3, out _gameObject3, out _wrapper3, 120); string resPath1 = ResPathUtil.GetViewEffectPath("ui_cj", "ui_cj_sl"); SceneController.AddObjectToView(_gameObject1, _wrapper1, _ui.m_btnBuyOne.m_holder, resPath1, out _gameObject1, out _wrapper1); SceneController.AddObjectToView(_gameObject2, _wrapper2, _ui.m_btnBuyTen.m_holder, resPath1, out _gameObject2, out _wrapper2); } } private void OnClickBtnExChange() { int storeId = LuckyBoxBonusDataCache.currentBoxId == LuckyBoxDataManager.BOX_ID_1 ? ConstStoreId.LUCKY_BOX_ACTIVITY_STORE_ID : ConstStoreId.LUCKY_BOX_STORE_ID; ViewManager.Show(ViewName.CLOTHING_SHOP_VIEW, new object[] { storeId }, new object[] { ViewName.LUCKY_BOX_VIEW, LuckyBoxBonusDataCache.currentBoxId }); this.Hide(); } private void OnClickBtnPreview() { ViewManager.Show(ViewName.LUCKY_BOX_PRE_SHOW_VIEW); } private void OnClickBtnBuyOne() { LuckyBoxCfg luckyBoxCfg = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxBonusDataCache.currentBoxId); LuckyBoxBonusDataCache.CheckItemEnough(luckyBoxCfg.costID, luckyBoxCfg.costNum, 1, () => { ItemDataManager.Remove(luckyBoxCfg.costID, luckyBoxCfg.costNum); LuckyBoxDataManager.Instance.RewardList = LuckyBoxBonusDataCache.GetBonusList(1); ViewManager.Show(ViewName.LUCKY_BOX_STAR_VIEW, LuckyBoxBonusDataCache.currentBoxId, new object[] { ViewName.LUCKY_BOX_VIEW, LuckyBoxBonusDataCache.currentBoxId }); }); } private void OnClickBtnBuyTen() { // bool result = GuideController.TryCompleteGuide(ConstGuideId.MAIN_UI_BTN_ZHAI_XING); LuckyBoxCfg luckyBoxCfg = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxBonusDataCache.currentBoxId); if (GuideDataManager.GetGuideCountCopy(ConstGuideId.LUCKY_BOX) <= 0) { int count = ItemDataManager.GetItemNum(luckyBoxCfg.costID); if (count < luckyBoxCfg.costNumTen) { ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(luckyBoxCfg.costID); PromptController.Instance.ShowFloatTextPrompt(itemCfg.name + "不足"); return; } ItemDataManager.Remove(luckyBoxCfg.costID, luckyBoxCfg.costNumTen); LuckyBoxDataManager.Instance.RewardList = LuckyBoxBonusDataCache.GetBonusList(10, true); ViewManager.Show(ViewName.LUCKY_BOX_STAR_VIEW, LuckyBoxBonusDataCache.currentBoxId, new object[] { ViewName.LUCKY_BOX_VIEW, LuckyBoxBonusDataCache.currentBoxId }); } else { //判断消耗 LuckyBoxBonusDataCache.CheckItemEnough(luckyBoxCfg.costID, luckyBoxCfg.costNumTen, 10, () => { ItemDataManager.Remove(luckyBoxCfg.costID, luckyBoxCfg.costNumTen); LuckyBoxDataManager.Instance.RewardList = LuckyBoxBonusDataCache.GetBonusList(10, false); ViewManager.Show(ViewName.LUCKY_BOX_STAR_VIEW, LuckyBoxBonusDataCache.currentBoxId, new object[] { ViewName.LUCKY_BOX_VIEW, LuckyBoxBonusDataCache.currentBoxId }); }); } } protected override void OnHide() { base.OnHide(); _valueBarController.OnHide(); Timers.inst.Remove(CheckTime); EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateNormal); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateNormal); } private void OnClickBtnBack() { this.Hide(); Reset(); ViewManager.GoBackFrom(ViewName.LUCKY_BOX_VIEW); } private void OnClickBtnHome() { GameController.GoBackToMainView(); // Reset(); } private void Reset() { LuckyBoxBonusDataCache.currentBoxId = LuckyBoxDataManager.BOX_ID_1; } protected override void UpdateToCheckGuide(object param) { if (!ViewManager.CheckIsTopView(this.viewCom)) return; GuideController.TryGuide(_ui.m_btnBuyTen.target, ConstGuideId.LUCKY_BOX, 3, "点击摘取十次"); GuideController.TryGuide(_ui.m_btnBack, ConstGuideId.FREEDOM_DRESS, 1, "获得一套完整的服装啦,马上去试穿一下"); } } }