| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | using System;using Core.Language;using Excel2Json;using Fort23.Core;using Fort23.UTool;using Mono.Utility;using UnityEngine;using UnityEngine.UI;namespace Fort23.Mono{    public class DialogBox    {        /// <summary>        /// 对话内容.        /// </summary>        public Text Content;        public Text Text_Dialogue01;        public Text Text_Dialogue02;        public Text Text_Dialogue03;        public Text Text_Dialogue04;        //  public BoxCollider boxCol;        public Transform MessageBG;        public Transform di;        public MyImage NpcIcon;        public MyImage HeroIcon;        private BetterList<string> dialogTextList;        private int curIdx;        public Action onAction;        public UISpiritLoader UISpiritLoader;        public Text NpcNameText;        public void Init()        {            GuidePanel guidePanel = UIManager.Instance.GetComponent<GuidePanel>();            // guidePanel.DialogBoxState.gameObject.SetActive(true);            NpcIcon = guidePanel.Image_Npc;            HeroIcon = guidePanel.HeroIcon;            MessageBG = guidePanel.MessageBG;            UISpiritLoader = NpcIcon.transform.parent.GetComponent<UISpiritLoader>();            NpcNameText = guidePanel.Text_NpcName;            Text_Dialogue01 = guidePanel.Text_Dialogue01;            Text_Dialogue02 = guidePanel.Text_Dialogue02;            Text_Dialogue03 = guidePanel.Text_Dialogue03;            Text_Dialogue04 = guidePanel.Text_Dialogue04;        }        public void Open(BetterList<string> list, Action action)        {            GuidePanel guidePanel = UIManager.Instance.GetComponent<GuidePanel>();            guidePanel.DialogBoxState.gameObject.SetActive(true);            if (list == null || list.size <= 0)            {                Close();                return;            }            if (action == null) Debug.Log("action == null");            onAction = action;            curIdx = 0;            dialogTextList = list;            OnClickScreen();        }        // private AssetHandle assetHandle;        /// <summary>        ///         /// </summary>        /// <param name="playerGuideConfig"></param>        /// <param name="id">1:默认 2:剧情1 3:boss</param>        public async CTask SetDiTex(PlayerGuideConfig playerGuideConfig, int id)        {            EventNPC heroModelConfig = ConfigComponent.Instance.Get<EventNPC>(id);            NpcIcon.gameObject.SetActive(false);            CTask cTask = CTask.Create();            NpcIcon.onSpriteAlter = () =>            {                NpcIcon.SetNativeSize();                NpcIcon.gameObject.SetActive(true);                cTask.SetResult();            };            NpcIcon.icon_name = heroModelConfig.icon;            NpcNameText.text = LanguageManager.Instance.Text(heroModelConfig.name);            // HeroIcon.icon_name = heroModelConfig.HeroUIIconName;            if (playerGuideConfig.reversalBox == 1)            {                NpcIcon.transform.rotation = Quaternion.Euler(0, 180, 0);            }            else            {                NpcIcon.transform.rotation = Quaternion.Euler(0, 0, 0);            }            // NpcNameText.text = LanguageManager.Instance.Text(heroModelConfig.HeroNameID);            NpcIcon.enabled = true;            await cTask;        }        public void OnClickScreen()        {            // for (int i = 0; i < 100; i++)            // {            //                // }            if (dialogTextList == null)            {                return;            }            if (dialogTextList.size > curIdx)            {                Content.text = dialogTextList[curIdx++];                LayoutRebuilder.ForceRebuildLayoutImmediate(Content.transform.parent.GetComponent<RectTransform>());                //最后一条                if (dialogTextList.size == curIdx)                {                    if (PlayerGuideManager.Instance.guideConfig.forceText == 0)                    {                        // PlayerGuideManager.Instance.SetFingerVisiable(true);                        PlayerGuideManager.Instance.CanDoNextCTask = CTask.Create();                        onAction?.Invoke();                        onAction = null;                        PlayerGuideManager.Instance.CanDoNextCTask.SetResult();                    }                }            }            else            {                PlayerGuideManager.Instance.CanDoNextCTask = CTask.Create();                onAction?.Invoke();                onAction = null;                PlayerGuideManager.Instance.CanDoNextCTask.SetResult();            }        }        public void Close()        {            PlayerGuideManager.Instance.CanDoNextCTask = CTask.Create();            onAction?.Invoke();            onAction = null;            PlayerGuideManager.Instance.CanDoNextCTask.SetResult();        }        public void ChangeState(int guideConfigSpeakerStyle)        {            switch (guideConfigSpeakerStyle)            {                case 1:                    Content = Text_Dialogue01;                    break;                case 2:                    Content = Text_Dialogue02;                    break;                case 3:                    Content = Text_Dialogue03;                    break;                case 4:                    Content = Text_Dialogue04;                    break;            }        }    }}
 |