//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, November 02, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class BossIntroduceBehaviour : MonoBehaviour { [SerializeField] protected FindPreciousType m_FindPreciousType = FindPreciousType.WorldBoss; [SerializeField] Transform m_ContainerReward; [SerializeField] Transform m_ContainerBossInfo; [SerializeField] Button m_ViewBossInfo; [SerializeField] Button m_ViewReward; [SerializeField] Text m_BossName; [SerializeField] Text m_BossLevel; [SerializeField] RawImage m_BossPortrait; [SerializeField] BossAbilityBehaviour m_BossAbility; [SerializeField] RewardPreviewGroup m_UndoubtedlyRewardGroup; [SerializeField] RewardPreviewGroup m_UnusualRewardGroup; ViewType m_ViewType = ViewType.Reward; float confirmDelay = 0.3f; float confirmTimer = 0f; int tempBossId = 0; protected int bossId = 0; public void Display(int _bossId, bool _immediately) { if (_immediately) { tempBossId = bossId = _bossId; Draw(); } else { tempBossId = _bossId; confirmTimer = 0f; } } public void Dispose() { UI3DModelExhibition.Instance.StopShowNPC(); } private void LateUpdate() { if (tempBossId != bossId) { confirmTimer += Time.deltaTime; if (confirmTimer > confirmDelay) { bossId = tempBossId; Draw(); } } } private void Draw() { switch (m_ViewType) { case ViewType.BossInfo: DrawBossInfo(); break; case ViewType.Reward: DrawReward(); break; } } private void DrawBossInfo() { m_ViewType = ViewType.BossInfo; m_ContainerReward.gameObject.SetActive(false); m_ContainerBossInfo.gameObject.SetActive(true); var config = Config.Instance.Get(bossId); m_BossName.text = config.charName; m_BossLevel.text = Language.Get("Z1024", config.NPCLV); UI3DModelExhibition.Instance.BeginShowNPC(bossId, Vector3.zero, m_BossPortrait); m_BossAbility.Display(bossId); } protected virtual void DrawReward() { UI3DModelExhibition.Instance.StopShowNPC(); m_ViewType = ViewType.Reward; m_ContainerReward.gameObject.SetActive(true); m_ContainerBossInfo.gameObject.SetActive(false); int[] undoubtedlyRewards = null; int[] unusualRewards = null; switch (m_FindPreciousType) { case FindPreciousType.WorldBoss: undoubtedlyRewards = Config.Instance.Get(bossId).RareItemID; break; case FindPreciousType.BossHome: undoubtedlyRewards = Config.Instance.Get(bossId).RareItemID; break; case FindPreciousType.ElderGodArea: undoubtedlyRewards = Config.Instance.Get(bossId).RareItemID; break; case FindPreciousType.PersonalBoss: var personalBossConfig = Config.Instance.Get(bossId); undoubtedlyRewards = personalBossConfig.MustItemID; unusualRewards = personalBossConfig.RareItemID; break; case FindPreciousType.DemonJar: var demonJarConfig = Config.Instance.Get(bossId); undoubtedlyRewards = demonJarConfig.MustItemID; unusualRewards = demonJarConfig.RareItemID; break; } if (m_UndoubtedlyRewardGroup != null) { if (undoubtedlyRewards != null && undoubtedlyRewards.Length > 0) { m_UndoubtedlyRewardGroup.gameObject.SetActive(true); m_UndoubtedlyRewardGroup.Display(undoubtedlyRewards); } else { m_UndoubtedlyRewardGroup.gameObject.SetActive(false); } } if (m_UnusualRewardGroup != null) { if (unusualRewards != null && unusualRewards.Length > 0) { m_UnusualRewardGroup.gameObject.SetActive(true); m_UnusualRewardGroup.Display(unusualRewards); } else { m_UnusualRewardGroup.gameObject.SetActive(false); } } } private void Awake() { m_ViewBossInfo.AddListener(DrawBossInfo); m_ViewReward.AddListener(DrawReward); } public enum ViewType { BossInfo, Reward, } } }