| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 | using UnityEngine;using FairyGUI;using System;using System.Collections.Generic;using UI.ActivityAfternoonTea;using UI.Task;using Assets.Game.HotUpdate.Data;using ET;namespace GFGGame{    public class ActivityVisitNpcView : BaseWindow    {        private UI_ActivityVisitNPCUI _ui;        private int npcId;        private int activityId;        private bool redDot = false;        private bool canGetReward;        private string _currentWords;        private bool isNextChat = false;        private int indexChat;        private GTextField _wordTextField;        TypingFadeEffectPro _typingEffect;        public override void Dispose()        {            if (_ui != null)            {                _ui.Dispose();                _ui = null;            }            _wordTextField = null;            _typingEffect = null;            base.Dispose();        }        protected override void Init()        {            base.Init();        }        protected override void OnInit()        {            base.OnInit();            packageName = UI_ActivityVisitNPCUI.PACKAGE_NAME;            _ui = UI_ActivityVisitNPCUI.Create();            viewCom = _ui.target;            isfullScreen = true;            isReturnView = true;            _ui.m_taskList.itemRenderer = RenderTaskList;            _ui.m_btnBack.onClick.Add(OnClickBtnBack);            _ui.m_nextChatBtn.onClick.Add(OnClickNextChat);            _ui.m_taskIcon.target.onClick.Add(OnClickRewardTIps);        }        protected override void AddEventListener()        {        }        protected override void RemoveEventListener()        {            EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTasksChange);        }        protected override void OnShown()        {            base.OnShown();            npcId = (int)this.viewData;            if (ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.NewYearVisit) == 0)            {                _ui.target.touchable = false;                Timers.inst.Add(0.5f, 1, UpdateActivity);            }            if (!TaskDataManager.Instance.TaskInfosDic.TryGetValue(ActivityVisitCfgArray.Instance.dataArray[npcId].taskIdArr[0], out TaskInfo item))            {                TaskSProxy.GetTaskInfos();                if (!isShowing)                {                    return;                }                if (ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.NewYearVisit) != 0)                {                    Timers.inst.Add(2.0f, 1, UpdateView);                }            }            else            {                UpdateView();            }        }        protected override void OnHide()        {            EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTasksChange);            Timers.inst.Remove(UpdateView);            base.OnHide();        }        private void UpdateActivity(object param = null)        {            PromptController.Instance.ShowFloatTextPrompt("拜访活动已结束");            Timers.inst.Remove(UpdateActivity);            GameController.GoBackToMainView();            return;        }        private void UpdateView(object param = null)        {            var taskCfgs = TaskDataManager.Instance.GetTaskCfgs(ActivityVisitCfgArray.Instance.dataArray[npcId].taskIdArr);            _ui.m_taskList.data = taskCfgs;            _ui.m_npcIcon.url = ResPathUtil.GetNpcPicSPath(ActivityVisitCfgArray.Instance.dataArray[npcId].picRes);            _ui.m_loaBg.url = ResPathUtil.GetSceneBgPath(ActivityVisitCfgArray.Instance.dataArray[npcId].bgRes);            _ui.m_taskList.numItems = ActivityVisitCfgArray.Instance.dataArray[npcId].taskIdArr.Length;            redDot = true;            for (int i = 0; i < taskCfgs.Count; i++)            {                var taskCfg = taskCfgs[i];                if (TaskDataManager.Instance.GetTaskStateById(taskCfg.id) == 0)                {                    redDot = false;                }            }            GetRewardState();            EventAgent.AddEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTasksChange);            _ui.m_DialogText.m_txtName.text = ActivityVisitCfgArray.Instance.dataArray[npcId].name;            _ui.m_DialogText.m_txtContent.text = "";            _wordTextField = null;            isNextChat = false;            indexChat = 0;            _ui.m_DialogText.m_In.Play(()=> { SetTypeWriting(); });                    }        private void OnClickBtnBack()        {            ViewManager.GoBackFrom(typeof(ActivityVisitNpcView).FullName);        }        private async void OnClickRewardTIps()        {            if (ActivityTeaDataManager.Instance.NpcInfoList[npcId].RewrdStatus == 1)            {                bool result = await ActivityTeaSProxy.ReqGetNPCVisitReward(activityId, npcId + 1);                if (!result) return;                bool res = await ActivityTeaSProxy.ReqGetNPCVisitInfo(activityId);                if (!res) return;                RedDotController.Instance.SetComRedDot(_ui.m_taskIcon.target, false);            }            else            {                ViewManager.Show<ReWardTipsView>(npcId);            }        }        private void GetRewardState()        {            foreach (NpcVisitProto t in ActivityTeaDataManager.Instance.NpcInfoList)            {                if (t.NpcId == npcId + 1)                {                    activityId = t.ActivityId;                    switch (t.RewrdStatus)                    {                        case 0:                            canGetReward = false;                            _ui.m_gotReward.visible = false;                            RedDotController.Instance.SetComRedDot(_ui.m_taskIcon.target, false);                            break;                        case 1:                            canGetReward = true;                            _ui.m_gotReward.visible = false;                            RedDotController.Instance.SetComRedDot(_ui.m_taskIcon.target, ActivityTeaDataManager.Instance.NpcInfoList[npcId].RewrdStatus == 1);                            break;                        case 2:                            canGetReward = false;                            _ui.m_gotReward.visible = true;                            RedDotController.Instance.SetComRedDot(_ui.m_taskIcon.target, false);                            break;                        default:                            break;                    }                }            }        }        private void RenderTaskList(int index, GObject obj)        {            UI_ActivityVIsitRewardItemUI item = UI_ActivityVIsitRewardItemUI.Proxy(obj);            var tasks = (List<TaskCfg>)obj.parent.data;            var taskCfg = tasks[index];            item.m_c1.selectedIndex = TaskDataManager.Instance.GetTaskStateById(taskCfg.id);            RedDotController.Instance.SetComRedDot(item.m_GetRewardBt.target, TaskDataManager.Instance.GetTaskStateById(taskCfg.id) == 1?true:false);            if (taskCfg.jumpId == "" && TaskDataManager.Instance.GetTaskStateById(taskCfg.id) == 0)            {                item.m_c2.selectedIndex = taskCfg.jumpId == "" ? 1 : 0;            }            else            {                item.m_c2.selectedIndex = 0;            }            item.m_txtDesc.text = TaskDataManager.Instance.GetTaskDesc(taskCfg.id);            item.m_txtCount.text =                $"{TaskDataManager.Instance.GetTaskProgressById(taskCfg.id)}/{taskCfg.GetTargetCount()}";            if (item.m_GetRewardBt.target.data == null)            {                item.m_GetRewardBt.target.onClick.Add(OnBtnGetClick);            }            item.m_GetRewardBt.target.data = taskCfg.id;            if (item.m_ComeBt.target.data == null)            {                item.m_ComeBt.target.onClick.Add(OnBtnGoClick);            }            item.m_ComeBt.target.data = taskCfg;            if (item.m_listTaskReward.data == null)            {                item.m_listTaskReward.itemRenderer = ListTaskRewardItemRender;            }            item.m_listTaskReward.data = TaskDataManager.Instance.GetReward(taskCfg);            item.m_listTaskReward.numItems = TaskDataManager.Instance.GetReward(taskCfg).Length;            UI_ActivityVIsitRewardItemUI.ProxyEnd();        }        private async void OnBtnGetClick(EventContext context)        {            if (!(context.sender is GObject btnGet)) return;            int id = (int)btnGet.data;            var result = await TaskSProxy.GetTaskBonus(id);            if (!result) return;            bool res = await ActivityTeaSProxy.ReqGetNPCVisitInfo(activityId);            if (!res) return;            RedDotController.Instance.SetComRedDot(_ui.m_taskIcon.target, ActivityTeaDataManager.Instance.NpcInfoList[npcId].RewrdStatus == 1);            _ui.m_taskList.numItems = ActivityVisitCfgArray.Instance.dataArray[npcId].taskIdArr.Length;        }        private void OnBtnGoClick(EventContext context)        {            if (!(context.sender is GObject btnGo)) return;            var taskCfg = (TaskCfg)btnGo.data;            if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(taskCfg.jumpId)) return;            var param = new object[taskCfg.jumpParamArr.Length];            for (var i = 0; i < taskCfg.jumpParamArr.Length; i++)            {                param[i] = taskCfg.jumpParamArr[i];            }            ViewManager.JumpToView(taskCfg.jumpId, param);        }        private void ListTaskRewardItemRender(int index, GObject obj)        {            var rewards = (int[][])obj.parent.data;            UI_RewardItemUI item = UI_RewardItemUI.Proxy(obj);            ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(rewards[index][0]);            item.m_rewardIcon.url = ResPathUtil.GetIconPath(itemCfg);            item.m_rewardNum.text = rewards[index][1].ToString();            if (item.target.data == null)            {                item.target.onClick.Add(OnClickVisitRewardItem);            }            item.target.data = itemCfg.id;            UI_RewardItemUI.ProxyEnd();        }        private void OnClickVisitRewardItem(EventContext context)        {            if (!(context.sender is GObject btnVisit)) return;            int itemID = (int)btnVisit.data;            GoodsItemTipsController.ShowItemTips(itemID);        }        private void OnTasksChange(EventContext context)        {            _ui.m_taskList.numItems = ActivityVisitCfgArray.Instance.dataArray[npcId].taskIdArr.Length;        }        private void SetTypeWriting()        {            int ind = Math.Min(indexChat, ActivityVisitCfgArray.Instance.dataArray[npcId].taskIdArr.Length - 1);            _currentWords = ActivityVisitCfgArray.Instance.dataArray[npcId].chatArr[ind];            _wordTextField = _ui.m_DialogText.m_txtContent;            _typingEffect = new TypingFadeEffectPro(_wordTextField);            _typingEffect.typeFinishedAction = ShowCurrentWords;            _wordTextField.text = _currentWords;            _typingEffect.SetSpeed(1.0f);            _typingEffect.Start();        }        private void ShowCurrentWords()        {            StopTyping();            _typingEffect?.Cancel();            _wordTextField.text = _currentWords;            isNextChat = true;            indexChat++;        }        private void StopTyping()        {            _typingEffect.Cancel();        }        private void OnClickNextChat()        {            if(isNextChat)            {                isNextChat = false;                if(indexChat == ActivityVisitCfgArray.Instance.dataArray[npcId].chatArr.Length)                {                    indexChat = 0;                }                SetTypeWriting();            }            else            {                ShowCurrentWords();                isNextChat = true;            }                    }    }}
 |