//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, November 15, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class BossShowWin : Window { [SerializeField] UIEffect bossNameEffect; [SerializeField] Button skipBtn; [SerializeField] HeadUpName m_HeadUpHero; [SerializeField] HeadUpName[] m_HeadUpNpcs; public static int bossShowId = 0; #region Built-in protected override void BindController() { } protected override void AddListeners() { skipBtn.onClick.AddListener(OnSkipBtn); } private void OnSkipBtn() { BossShowModel.Instance.StopBossShow(); } protected override void OnPreOpen() { BossShowModel.Instance.OnBossNameEvent += OnBossNameEvent; skipBtn.SetActive(BossShowModel.Instance.satisfyStep); var config = ActorShowConfig.Get(bossShowId); m_HeadUpHero.target = null; m_HeadUpHero.SetActive(BossShowModel.Instance.showHero != null); if (BossShowModel.Instance.showHero != null) { DisplayHeadUpName(); } for (int i = 0; i < m_HeadUpNpcs.Length; i++) { if (i < BossShowModel.Instance.showNpcs.Count) { m_HeadUpNpcs[i].SetActive(true); DisplayHeadUpNpcName(m_HeadUpNpcs[i], BossShowModel.Instance.showNpcs[i]); } else { m_HeadUpNpcs[i].target = null; m_HeadUpNpcs[i].SetActive(false); } } } private void OnBossNameEvent() { ActorShowConfig actorShowModel = null; if (ActorShowConfig.GetActorShowModel(PlayerDatas.Instance.baseData.MapID, BossShowModel.Instance.NpcID, out actorShowModel)) { bossNameEffect.effect = actorShowModel.uieffect; bossNameEffect.keep = true; bossNameEffect.Play(); bossNameEffect.SetLayer(LayerUtility.UILayer); return; } } protected override void OnAfterOpen() { m_HeadUpHero.SyncPosition(true); for (int i = 0; i < m_HeadUpNpcs.Length; i++) { m_HeadUpNpcs[i].SyncPosition(true); } } protected override void OnPreClose() { BossShowModel.Instance.OnBossNameEvent -= OnBossNameEvent; bossNameEffect.StopImediatly(); } protected override void OnAfterClose() { } #endregion void DisplayHeadUpName() { m_HeadUpHero.pattern = HeadUpName.Pattern.Hero; m_HeadUpHero.camera = BossShowModel.Instance.showCamera; var hero = BossShowModel.Instance.showHero; if (hero != null) { var MP_Name = hero.m_Model.transform.GetChildTransformDeeply("A_Name"); if (!MP_Name) { MP_Name = hero.m_Model.transform; } m_HeadUpHero.target = MP_Name; } m_HeadUpHero.offset = new Vector3(0, 0, 0); var realmLevel = PlayerDatas.Instance.baseData.realmLevel; var name = UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName); var familyName = UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.FamilyName); m_HeadUpHero.SetPlayerInfo(new HeadUpName.PlayerInfo() { realm = realmLevel, name = name, alliance = familyName, }); m_HeadUpHero.SyncPosition(true); } void DisplayHeadUpNpcName(HeadUpName headUpName, ShowActor npc) { headUpName.pattern = HeadUpName.Pattern.Monster; headUpName.camera = BossShowModel.Instance.showCamera; if (npc != null) { var MP_Name = npc.m_Model.transform.GetChildTransformDeeply("A_Name"); if (!MP_Name) { MP_Name = npc.m_Model.transform; } headUpName.target = MP_Name; } headUpName.offset = new Vector3(0, 0, 0); var npcConfig = NPCConfig.Get(npc.npcId); headUpName.SetMonsterInfo(npcConfig.NPCID, npcConfig.NPCLV); headUpName.SyncPosition(true); } } }