| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 | using FairyGUI;using UI.Main;using System.Collections;using UI.CommonGame;using System;using System.Collections.Generic;namespace GFGGame{    public class StoryFightQuicklyView : BaseWindow    {        private UI_StoryFightQuicklyUI _ui;        private int _fightID;        private int _levelID;        private int _type;        private int _storyType;        private int _fightType;        private int _needItemId;        private int _needItemCount;        private int _fightCount = 0;//当前掉落数量        private List<ItemData> _bonusList;        private int _index;        private int _expAdd;        private int _power;        private int _fightTimes;        private const int _timeCount = 10;        public override void Dispose()        {            if (_ui != null)            {                _ui.Dispose();                _ui = null;            }            base.Dispose();        }        protected override void OnInit()        {            base.OnInit();            _ui = UI_StoryFightQuicklyUI.Create();            this.viewCom = _ui.target;            this.viewCom.Center();            this.modal = true;            _ui.m_btnExit.onClick.Add(Hide);            _ui.m_btnFightTimes.onClick.Add(StartFight);        }        protected override void AddEventListener()        {            base.AddEventListener();            EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes);            // EventAgent.AddEventListener(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, StartShowBonus);        }        protected override void OnShown()        {            base.OnShown();            _fightType = (int)(viewData as object[])[0];            _needItemId = (int)(viewData as object[])[1];            _needItemCount = (int)(viewData as object[])[2];            _levelID = InstanceZonesDataManager.currentLevelCfgId;            InstanceZonesDataManager.isQuicklyFighting = true;            StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID);            StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);            _type = levelCfg.type;            _storyType = levelCfg.subType;            _expAdd = fightCfg.exp;            _power = levelCfg.power;            string title = levelCfg.name;            switch (levelCfg.type)            {                case ConstInstanceZonesType.Story:                    title = MainStoryDataManager.CurrentChapterOrder + "-" + InstanceZonesDataManager.currentLevelOrder + " " + levelCfg.name;                    break;            }            _ui.m_txtName.text = title;            _ui.m_c1.selectedIndex = _needItemId <= 0 || _needItemCount <= 0 || ItemDataManager.GetItemNum(_needItemId) >= _needItemCount ? 0 : 1;            updateNeedItem();            StartFight();        }        protected override void OnHide()        {            base.OnHide();            // Timers.inst.Remove(ShowBonusItem);            ViewManager.GoBackFrom(typeof(StoryFightQuicklyView).Name);            InstanceZonesDataManager.isQuicklyFighting = false;        }        protected override void RemoveEventListener()        {            base.RemoveEventListener();            EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes);            // EventAgent.RemoveEventListener(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, StartShowBonus);        }        private void StartFight()        {            InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out _fightTimes, out string title);            if (_fightTimes == 0)            {                StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID);                if (levelCfg.type == ConstInstanceZonesType.Story)                {                    ItemUtil.AddPower("体力不足", StartFight);                }                else if (levelCfg.type == ConstInstanceZonesType.Studio)                {                    StudioData studioData = StudioDataManager.Instance.GetStudioDataById(levelCfg.chapterId);                    if (studioData.TotalPlayTimes - studioData.PlayTimes == 0)                    {                        PromptController.Instance.ShowFloatTextPrompt("挑战次数不足");                        ViewManager.Show<StudioBuyNumView>(levelCfg.chapterId);                    }                    else                    {                        ItemUtil.AddPower("体力不足", StartFight);                    }                }                return;            }            this.clickBlankToClose = false;            // _ui.m_t0.Play(() =>            // {            _fightTimes = _fightType == 1 ? 1 : _fightTimes;            _ui.m_btnExit.visible = false;            _ui.m_btnFightTimes.visible = false;            _ui.m_txtPowerDesc.visible = false;            _ui.m_list.RemoveChildren();            InstanceZonesDataManager.isQuicklyFighting = true;            // InstanceZonesSProxy.FinishStoryFightQuickly(_levelID, _fightType == 1 ? 1 : times).Coroutine();            _index = 0;            ReqFightQuickly(null);            this.clickBlankToClose = true;            // });        }        private async void ReqFightQuickly(object param)        {            bool isFinish = _needItemId > 0 && _needItemCount > 0 && ItemDataManager.GetItemNum(_needItemId) >= _needItemCount;            if (_index >= _fightTimes || isFinish)            {                if (isFinish)                {                    PromptController.Instance.ShowFloatTextPrompt("材料已足够");                }                ShowEnding();            }            else            {                List<ItemData> result = await InstanceZonesSProxy.FinishStoryFightQuickly(_levelID, 1);                ET.Log.Debug("result:" + result.Count);                if (result != null)                {                    _bonusList = result;                    ShowBonusItem();                    _index++;                    Timers.inst.Add(0.3f, 1, ReqFightQuickly);                }            }        }        private void ShowBonusItem()        {            UI_StoryFightQuicklyBonusListItem listItem = UI_StoryFightQuicklyBonusListItem.Proxy();            _ui.m_list.AddChild(listItem.target);            listItem.m_list.itemRenderer = ListItemRender;            listItem.m_txtTimes.SetVar("n", "" + NumberUtil.GetChiniseNumberText(_index + 1)).FlushVars();            listItem.m_txtExp.SetVar("n", "" + _expAdd).FlushVars();            listItem.m_list.numItems = _bonusList.Count;            listItem.m_list.ResizeToFit();            listItem.target.height = listItem.m_list.y + listItem.m_list.height;            UI_StoryFightQuicklyBonusListItem.ProxyEnd();            _ui.m_list.ScrollToView(_index, true);        }        private void ShowEnding()        {            UI_StoryFightQuicklyComplete completeItem = UI_StoryFightQuicklyComplete.Proxy();            _ui.m_list.AddChild(completeItem.target);            UI_StoryFightQuicklyComplete.ProxyEnd();            InstanceZonesDataManager.isQuicklyFighting = false;            _ui.m_btnExit.visible = true;            _ui.m_list.ScrollToView(_index, true);            UpdateBtnFightTimes();            updateNeedItem();            _index = 0;        }        private void ListItemRender(int index, GObject item)        {            ItemData itemData = _bonusList[index] as ItemData;            if (item.data == null)            {                item.data = new ItemView(item as GComponent);            }            (item.data as ItemView).SetData(itemData);            (item.data as ItemView).ShowHasCount = false;        }        private void UpdateBtnFightTimes()        {            if (_ui.m_btnExit.visible)            {                StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID);                InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out _fightTimes, out string title);                _ui.m_btnFightTimes.title = _fightType == 1 ? "挑战一次" : title;                _ui.m_btnFightTimes.visible = _fightTimes > 0;                _ui.m_txtPowerDesc.visible = _ui.m_btnFightTimes.visible;                if (_ui.m_txtPowerDesc.visible)                {                    int power = _fightTimes * levelCfg.power;                    _ui.m_txtPowerDesc.SetVar("v1", "" + power).FlushVars();                }                _fightTimes = _fightType == 1 ? 1 : _fightTimes;            }        }        private void updateNeedItem()        {            bool isFinish = _needItemId > 0 && _needItemCount > 0 && ItemDataManager.GetItemNum(_needItemId) >= _needItemCount;            if (isFinish)            {                _needItemCount = 0;            }            if (_ui.m_c1.selectedIndex == 0) return;            _ui.m_txtItemName.text = string.Format("目标道具:{0}", ItemCfgArray.Instance.GetCfg(_needItemId).name);            int hasCount = ItemDataManager.GetItemNum(_needItemId);            _ui.m_txtItemNeedNum.text = (_needItemCount - hasCount) <= 0 ? "材料已足够" : string.Format("还需:{0}个", Math.Max(0, _needItemCount - hasCount));        }    }}
 |