using UI.FieldGuide; using FairyGUI; using UnityEngine; using System.Collections.Generic; using System; namespace GFGGame { public class TravelShowView : BaseWindow { private UI_TravelShowUI _ui; private TravelGuideCfg _cfg; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); _ui = UI_TravelShowUI.Create(); this.viewCom = _ui.target; isfullScreen = true; isReturnView = true; _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_btnReward.target.onClick.Add(OnBtnRewardClick); _ui.m_list.itemRenderer = RenderListItem; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("tjbg"); } protected override void OnShown() { base.OnShown(); _cfg = this.viewData as TravelGuideCfg; UpdateView(); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRewardState); } protected override void OnHide() { base.OnHide(); if (_ui.m_list.numItems > 0) _ui.m_list.ScrollToView(0); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRewardState); } private void OnClickBtnBack() { ViewManager.GoBackFrom(typeof(TravelShowView).FullName); } private void UpdateView() { _ui.m_list.numItems = _cfg.locationsArr.Length; UpdateRewardState(); } private void UpdateRewardState() { // int state = TravelDataManager.Instance.ListTravelAreaRewardState[_index]; _ui.m_btnReward.m_c1.selectedIndex = TravelDataManager.Instance.GetGuideRewardStateByAreaId(_cfg.id) == ConstBonusStatus.GOT ? 0 : 1; RedDotController.Instance.SetComRedDot(_ui.m_btnReward.target, RedDotDataManager.Instance.GetTravelGuideAreaRed(_cfg.id)); } private void RenderListItem(int index, GObject obj) { TravelLoactionCfg locationCfg = TravelLoactionCfgArray.Instance.GetCfgBylocation(_cfg.locationsArr[index]); UI_ListTravelLocationItem item = UI_ListTravelLocationItem.Proxy(obj); item.m_txtName.text = locationCfg.name; item.m_comLocation.m_loaLocation.url = ResPathUtil.GetTravelBgPath(locationCfg.res); int count = TravelDataManager.Instance.GetTravelCountByLocationId(locationCfg.id); item.m_txtCount.text = string.Format("已到达:{0}次", count); item.m_c1.selectedIndex = count > 0 ? 1 : 0; UI_ListTravelLocationItem.ProxyEnd(); } private void OnBtnRewardClick() { int state = TravelDataManager.Instance.GetGuideRewardStateByAreaId(_cfg.id); if (state == ConstBonusStatus.CAN_NOT_GET) { List rewards = ItemUtil.CreateItemDataList(_cfg.rewardsArr); ViewManager.Show(new object[] { rewards, "到达奖励", "到达该区域所有地点时可领取" }); } else if (state == ConstBonusStatus.CAN_GET) { TravelSProxy.ReqGetTravelGuideReward(_cfg.id).Coroutine(); } } } }