using UnityEngine; using FairyGUI; using UI.OpenServerActivity; using UI.CommonGame; using System.Collections.Generic; namespace GFGGame { public class OpenServerStoryView : BaseWindow { private UI_OpenServerStoryUI _ui; private Dictionary> _storyLevelCfgs = new Dictionary>(); private int _activityId; private int _activityType; private ActivityOpenCfg _activityCfg; private ValueBarController _valueBarController; public override void Dispose() { if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void Init() { base.Init(); } protected override void OnInit() { base.OnInit(); packageName = UI_OpenServerStoryUI.PACKAGE_NAME; _ui = UI_OpenServerStoryUI.Create(); viewCom = _ui.target; isfullScreen = true; isReturnView = true; _valueBarController = new ValueBarController(_ui.m_valueBar); _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_list.itemRenderer = RenderListItem; } protected override void AddEventListener() { base.AddEventListener(); } protected override void OnShown() { base.OnShown(); _valueBarController.OnShown(); _valueBarController.UpdateList(new List() { ConstItemID.GET_TICKETS }); _activityType = (int)this.viewData; StudioDataManager.Instance.VIEW_NAME = typeof(OpenServerStoryView).FullName; StudioDataManager.Instance.PROPERTY_SELECT_INDEX = _activityType; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("sdcy_jq_bg"); _activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(_activityType); _activityCfg = ActivityOpenCfgArray.Instance.GetCfg(_activityId); _storyLevelCfgs.Clear(); _ui.m_list.numItems = _activityCfg.params4Arr.Length; } protected override void OnHide() { base.OnHide(); _valueBarController.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); } private void OnClickBtnBack() { ViewManager.GoBackFrom(typeof(OpenServerStoryView).FullName); } private void RenderListItem(int index, GObject obj) { int posRedX = -130; int posRedY = 30; bool redVisible = false; UI_StoryItem item = UI_StoryItem.Proxy(obj); ActivityStoryCfg activityStoryCfg = ActivityStoryCfgArray.Instance.GetCfg(_activityCfg.params4Arr[index]); var storyLevelCfg = StoryLevelCfgArray.Instance.GetCfgsBytypeAndsubTypeAndchapterId(activityStoryCfg.type, activityStoryCfg.subType, _activityCfg.params4Arr[index]); _storyLevelCfgs.Add(index, storyLevelCfg); item.m_posType.selectedIndex = index % 2; item.m_txtTitle.text = activityStoryCfg.name; item.m_txtNumber.text = "0" + (index + 1); item.m_rewardItem.m_txtCount.text = storyLevelCfg[0].bonusOnceArr[0][1].ToString(); ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(storyLevelCfg[0].bonusOnceArr[0][0]); item.m_rewardItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg); if (item.m_rewardItem.target.data == null) item.m_rewardItem.target.onClick.Add(OnClickIcon); item.m_rewardItem.target.data = itemCfg.id; if (index > 0 && (!InstanceZonesDataManager.CheckLevelPass(_storyLevelCfgs[index - 1][0].id) || !ItemDataManager.ItemCollect.ContainsKey(activityStoryCfg.needItemsArr[0][0]) || ItemDataManager.ItemCollect[activityStoryCfg.needItemsArr[0][0]] < activityStoryCfg.needItemsArr[0][1])) { item.m_storyImageType.selectedIndex = 0; } else { item.m_storyImageType.selectedIndex = index + 1; } if (item.m_posType.selectedIndex == 1) { posRedX = -52; posRedY = 30; } if ((index == 0 && !InstanceZonesDataManager.CheckLevelPass(_storyLevelCfgs[index][0].id)) || (index > 0 && InstanceZonesDataManager.CheckLevelPass(_storyLevelCfgs[index - 1][0].id) && !InstanceZonesDataManager.CheckLevelPass(_storyLevelCfgs[index][0].id) && ItemDataManager.ItemCollect.ContainsKey(activityStoryCfg.needItemsArr[0][0]) && ItemDataManager.ItemCollect[activityStoryCfg.needItemsArr[0][0]] >= activityStoryCfg.needItemsArr[0][1])) { redVisible = true; } RedDotController.Instance.SetComRedDot(item.target, redVisible, "", posRedX, posRedY); if (activityStoryCfg.needItemsArr.Length > 0) { item.m_txtNotOpenTitle.text = string.Format("收集{0}/{1}个", ItemDataManager.ItemCollect[activityStoryCfg.needItemsArr[0][0]], activityStoryCfg.needItemsArr[0][1]); ItemCfg itemNeedCfg = ItemCfgArray.Instance.GetCfg(activityStoryCfg.needItemsArr[0][0]); item.m_loaNeedIcon.url = ResPathUtil.GetIconPath(itemNeedCfg); } if (item.m_loaItemBg.data == null) item.m_loaItemBg.onClick.Add(OnClickBtnPlay); item.m_loaItemBg.data = index; UI_StoryItem.ProxyEnd(); } private void OnClickIcon(EventContext context) { GObject obj = context.sender as GObject; int itemId = (int)obj.data; GoodsItemTipsController.ShowItemTips(itemId); } private void OnClickBtnPlay(EventContext context) { GObject obj = context.sender as GObject; int index = (int)obj.data; ActivityStoryCfg activityStoryCfg = ActivityStoryCfgArray.Instance.GetCfg(_activityCfg.params4Arr[index]); StoryLevelCfg storyLevelCfg = _storyLevelCfgs[index][0]; if (index > 0 && !InstanceZonesDataManager.CheckLevelPass(_storyLevelCfgs[index - 1][0].id)) { PromptController.Instance.ShowFloatTextPrompt("需通关前置关卡"); return; } if(index > 0 && ItemDataManager.ItemCollect[activityStoryCfg.needItemsArr[0][0]] < activityStoryCfg.needItemsArr[0][1]) { PromptController.Instance.ShowFloatTextPrompt("需收集物达到开启需求"); return; } MainStoryDataManager.currentLevelCfgId = storyLevelCfg.id; InstanceZonesController.ShowLevelView(storyLevelCfg.id, StudioDataManager.Instance.OnFinishStudioStoryLevel); } } }